Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di Fra
    Registrato dal
    Oct 1999
    Messaggi
    221

    [VB] Excel ... rimane in memoria !!!

    In un programma utilizzo Excel per creare un documento in cui inserisco tabelle e grafici.

    Però ho un problema : quando chiudo Excel (AppExcel.Quit ...) il prg della Microzozz rimane in memoria fino a quando non chiudo il mio programma.

    L'istruzione incriminata (infatti se non la utilizzo tutto funziona bene) è :
    AppExcel.Selection.AutoFill Destination:=Range(Colonna_Iniziale & Riga_Iniziale & ":" & Colonna_Finale & Riga_Finale), Type:=xlFillDefault

    dove AppExcel As New Excel.Application

    Mi sapete aiutare ?
    SO : Windows XP - Linux Gentoo
    Java - Visual Basic - C++

  2. #2

    Re: [VB] Excel ... rimane in memoria !!!

    Originariamente inviato da Fra
    In un programma utilizzo Excel per creare un documento in cui inserisco tabelle e grafici.

    Però ho un problema : quando chiudo Excel (AppExcel.Quit ...) il prg della Microzozz rimane in memoria fino a quando non chiudo il mio programma.

    L'istruzione incriminata (infatti se non la utilizzo tutto funziona bene) è :
    AppExcel.Selection.AutoFill Destination:=Range(Colonna_Iniziale & Riga_Iniziale & ":" & Colonna_Finale & Riga_Finale), Type:=xlFillDefault

    dove AppExcel As New Excel.Application

    Mi sapete aiutare ?
    devi fraggare il task aperto se apri il task manager vedrai che il processo resta attivo
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  3. #3
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    fai una ricerca nel forum, ne ho parlato per risolvere il problema sia in VB che in VB.net


  4. #4
    Utente di HTML.it L'avatar di Fra
    Registrato dal
    Oct 1999
    Messaggi
    221
    x xegallo : come si fa a fraggare il task aperto ?

    x darkBlooD : ho visto il tuo precedente post. Ho provato a fare come suggerivi (ovvero utilizzando FoglioExcel.Cells(x,y) ...) ma non funziona lo stesso.
    SO : Windows XP - Linux Gentoo
    Java - Visual Basic - C++

  5. #5
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    non parlavo solo di quel post

    il problema sta nel fatto che devi chiudere correttamente, usando le proprietà adatte, ogni oggetto creato, isa esso Application, Workbook Worksheet o range.


    Posta il codice che usi e gli do un'occhiata

  6. #6
    per chiudere unapplicazione attiva fa così
    codice:
    Const WM_CLOSE = &H10
    
    Declare Function FindWindowA Lib "user32" _
        (ByVal lpClassName As Any, ByVal lpWindowName As Any) As Integer
    Declare Function SendMessageA Lib "user32" _
        (ByVal hWnd As Integer, ByVal wMsg As Integer, _
        ByVal wParam As Integer, lParam As Any) As Long
    Function Kill(hWnd&)
        Dim Res& ' Ask it politely to close
        Res = SendMessageA(hWnd, WM_CLOSE, 0, 0)
        ' Kill it (just in case)
        Res = SendMessageA(hWnd, WM_DESTROY, 0, 0)
    End Function
    per esguire kill
    codice:
    Dim hWnd& '  window handle
        hWnd = FindWindowA(vbNullString, [NomeApp])
        Kill (hWnd)
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  7. #7
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    xegallo, ma che c'entra? Ci sono i metodi per chiudere correttamente l'oggetto, il fatto che gli rimanga in memoria non è dovuto ad un bug o ad un altro problema. Gli rimane il riferimento in memoria perchè non ha usato correttamente gli oggetti, quindi non vedo perchè dovrebbe risolvere un problema convenzionale in modo non convenzionale :quipy:

  8. #8
    Originariamente inviato da darkblOOd
    xegallo, ma che c'entra? Ci sono i metodi per chiudere correttamente l'oggetto, il fatto che gli rimanga in memoria non è dovuto ad un bug o ad un altro problema. Gli rimane il riferimento in memoria perchè non ha usato correttamente gli oggetti, quindi non vedo perchè dovrebbe risolvere un problema convenzionale in modo non convenzionale :quipy:
    mi ha chiesto questo:
    x xegallo : come si fa a fraggare il task aperto ?
    gli ho risposto nel modo + semplice e veloce :quipy:
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  9. #9
    Utente di HTML.it L'avatar di Fra
    Registrato dal
    Oct 1999
    Messaggi
    221
    Originariamente inviato da darkblOOd
    non parlavo solo di quel post

    il problema sta nel fatto che devi chiudere correttamente, usando le proprietà adatte, ogni oggetto creato, isa esso Application, Workbook Worksheet o range.


    Posta il codice che usi e gli do un'occhiata
    Ecco il codice (nel programma utilizzo excel tramite una classe) :
    '-------------------------------------------------

    Const Prima_Riga_Excel = 1
    Const Prima_Colonna_Excel = "A"

    Private AppExcel As New Excel.Application
    Private FileExcel As Excel.Workbook
    Private FoglioExcel As Excel.Worksheet

    Public Property Get Prima_Riga()
    Prima_Riga = Prima_Riga_Excel
    End Property

    Public Property Get Prima_Colonna()
    Prima_Colonna = Prima_Colonna_Excel
    End Property

    Public Sub Apri_Excel()
    AppExcel.Visible = False
    End Sub

    Public Sub Crea_foglio_Excel()
    Set FileExcel = AppExcel.Workbooks.Add
    Set FoglioExcel = FileExcel.Worksheets.Item(1)
    End Sub

    Public Sub Chiudi_file_Excel()
    Set FoglioExcel = Nothing
    FileExcel.Close (False)
    Set FileExcel = Nothing
    End Sub

    Public Sub Chiudi_Excel()
    AppExcel.Quit
    Set AppExcel = Nothing
    End Sub

    Public Sub Inserisci_Funzione(Colonna As String, Riga As Integer, Funzione As String)
    FoglioExcel.Cells(Riga, Colonna).Select
    AppExcel.ActiveCell.FormulaLocal = "=SE(VAL.ERRORE(" & Funzione & ");0;" & Funzione & ")"
    AppExcel.Selection.NumberFormat = "0.00"
    End Sub

    'Dovrebbe essere questo il metodo che da problemi !

    Public Sub Estendi_Funzione(Riga_Iniziale As Integer, Colonna_Iniziale As String, Riga_Finale As Integer, Colonna_Finale As String)
    AppExcel.Selection.AutoFill Destination:=Range(Colonna_Iniziale & Riga_Iniziale & ":" & Colonna_Finale & Riga_Finale), Type:=xlFillDefault
    End Sub

    Public Sub Copia_Colonne(Riga_Iniziale As Integer, Colonna_Iniziale As String, Riga_Finale As Integer, Colonna_Finale As String)
    FoglioExcel.Range(FoglioExcel.Cells(Riga_Iniziale, Colonna_Iniziale), FoglioExcel.Cells(Riga_Finale, Colonna_Finale)).Select
    AppExcel.Selection.Copy
    End Sub

    Public Sub Scrivi_Cella(Riga As Integer, Colonna As String, Dato As String)
    FoglioExcel.Cells(Riga, Colonna).Select
    AppExcel.ActiveCell.FormulaR1C1 = Dato
    End Sub
    '--------------------------------------------------------------
    SO : Windows XP - Linux Gentoo
    Java - Visual Basic - C++

  10. #10
    Utente di HTML.it L'avatar di Fra
    Registrato dal
    Oct 1999
    Messaggi
    221
    :quote:
    SO : Windows XP - Linux Gentoo
    Java - Visual Basic - C++

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.