Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    173

    VB6 + excel

    Ciao, ho un problema con VB6 ed excel.
    Da programma devo creare un file excel con certi dati, le istruzioni che utilizzo sono:

    Dim exApp As Object
    Dim exWb As Excel.Workbook
    Dim exWs As Excel.Worksheet

    Set exApp = CreateObject("Excel.Application")

    Set exWb = exApp.Workbooks.Open(sPercorso & sFile, False)
    Set exWs = ActiveWorkbook.Worksheets("foglio1")

    ..istruzioni..

    exApp.ActiveWorkbook.SaveAs sPercorsoSave
    If exApp.Workbooks.Count <> 0 Then
    exApp.Workbooks.Close
    End If


    exApp.UserControl = False
    exApp.Quit

    Set exApp = Nothing

    Ma mi rimane appeso excel tra i processi del task manager, si chiude solo se chiudo l'eseguibile di vb.Eppure mi sembra di aver chiuso tutto correttamente...
    Potete aiutarmi per favore????Sto impazzendo.....

    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,459
    E' sempre bene fare una ricerca sul forum prima di postare: abbiamo già trattato più volte questo argomento.

    Ad esempio, prova a leggere questa discussione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    173
    L'ho letto e già provato ma purtroppo niente.....

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    173

    vb6 iterazione con excel e chiusura

    Ho provato a fare così e funziona solo parzialmente però, adesso vi spiego.
    Con questo codice il processo excel non mi rimane appeso:

    Public exApp As Excel.Application
    Public exWb As Excel.Workbook
    Public exWs As Excel.Worksheet


    FileCopy sPercorso & sfile & ".xls", sPercorsoSave

    Set exApp = New Excel.Application
    exApp.Visible = False
    Set exWb = exApp.Application.Workbooks.Open(sPercorsoSave, False)
    DoEvents
    exApp.DisplayAlerts = False

    Set exWs = exWb.Worksheets("foglio1")

    ..istruzioni...

    exApp.ActiveWorkbook.Save
    exApp.ActiveWorkbook.Close
    If exApp.Workbooks.Count <> 0 Then
    exApp.Workbooks.Close
    End If
    exApp.UserControl = False
    exApp.Application.Quit
    Set exWs = Nothing
    Set exWb = Nothing
    Set exApp = Nothing

    se però all'interno delle istruzioni aggiungo

    With exWs.QueryTables.Add(sConnection, Range("A4"))

    .CommandText = sSql
    .FieldNames = False
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = True
    .SaveData = True
    .AdjustColumnWidth = False
    .RefreshPeriod = 0
    .PreserveColumnInfo = True
    .Refresh BackgroundQuery:=False
    End With

    allora mi rimane nuovamente appeso excel nei processi, ma gli oggetti che ho aperto sono gli stessi..tutto a causa dell'istruzione exWs.QueryTables.Add()
    Sapete spiegarmi perchè? C'è un modo particolare per scaricare le QueryTable?

    Grazie per l'aiuto.

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,459

    Moderazione

    Questa domanda andava inserita in fondo alla discussione che hai aperto oggi? In caso affermativo, faccio una "fusione"...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    173
    In effetti si, devo aver fatto qualche casino e alla fine ho scritto un altro messaggio....

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Utilizza sempre il riferimento all'oggetto Application (exApp) che hai istanziato. Il problema nasce solo se utilizzi un oggetto a cui ti riferisci senza utilizzare tale oggetto.

    Questo succede perche' VB, automaticamente ed implicitamente, crea una istanza "nascosta" di Excel se incontra una linea che utilizza oggetti della libreria che non fanno riferimento all'istanza di Excel creata. E' questa istanza "nascosta" che lascia "appeso" Excel.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    173
    Quindi invece di

    With exWs.QueryTables.Add(sConnection, Range("A4"))

    ho scritto

    With exApp.ActiveWorkbook.ActiveSheet.QueryTables.Add(s Connection, Range("A4"))

    così ho utilizzato solo exApp, ma il problema persiste....

    In cosa ho sbagliato?

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Lo stesso vale per Range ...

    Non ha riferimenti ...

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    173
    Alla fine ho scritto

    With exWs.QueryTables.Add(sConnection, exWs.Range("A4"))


    con set exWs = nothing alla fine e sembra funzionare!!!!

    Grazie!!

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.