Aggiornamento dati su Connections



  • Aggiornamento dati su Connections
    di Zsolt (utente non iscritto) data: 17/03/2014 08:49:30

    Salve a tutti,
    vorrei risolvere un problema che da un pò di tempo mi perseguita. ho realizzato un codice vb per un programma di disegno 3D che esegue un paio di cose alla volta in modo da semplificarmi la vita. Una delle cose che deve fare, è collegarsi a un file .xlsx aprirlo aggiornare i dati SQL salvare e chiudere. Il problema è che a volte mi funziona e a volte no mi da l'errore vb. Spero che insieme possiamo risolvere questo mistero :-D


     
      Dim oExcel As Excel.Application
            Set oExcel = New Excel.Application
            Set oWB = oExcel.Workbooks.Open("Z:DISEGNI_INVENTORDescrizioni2.xlsx")
            oExcel.Visible = False
            'Application.Wait (Now + TimeValue("00:00:02"))
            ActiveWorkbook.Connections("serversam SAMPIVOT Valli_Articoli").Refresh
            ActiveWorkbook.Saved = True
            ActiveWorkbook.Save
            oExcel.Quit



  • di Grograman (utente non iscritto) data: 17/03/2014 08:59:32

    La mia è solo un ipotesi, ma per caso non ti funziona quando hai altri file excel aperti?
    "Activeworkbook" non è quasi mai la scelta ottimale come oggetto da utilizzare!
     
     Dim oExcel As Excel.Application
     Dim oWb As Workbook
    Set oExcel = New Excel.Application
    Set oWb = oExcel.Workbooks.Open("Z:DISEGNI_INVENTORDescrizioni2.xlsx")
    oExcel.Visible = False
    'Application.Wait (Now + TimeValue("00:00:02"))
    oWb.Connections("serversam SAMPIVOT Valli_Articoli").Refresh
    oWb.Saved = True
    oWb.Save
    oExcel.Quit
    



  • di Zsolt (utente non iscritto) data: 17/03/2014 09:12:04

    Sembra che adesso funzioni, lo testerò meglio in seguito, comunque un altro dubbio che ho è che lascia sempre aperto il processo EXCEL.EXE dopo che eseguo la macro, non dovrebbe chiuderlo del tutto???



  • di scossa data: 17/03/2014 09:54:46

    cit.: "comunque un altro dubbio che ho è che lascia sempre aperto il processo EXCEL.EXE dopo che eseguo la macro, non dovrebbe chiuderlo del tutto??? "

    Prova a distruggere le istanze create (aggiungi le istruzioni sotto):
     
    set oWb = Nothing 'aggiunta
    oExcel.Quit
    set oExcel = Nothing 'aggiunta
    



  • di Vecchio Frac data: 17/03/2014 14:00:46

    Il titolo della discussione non è appropriato ("A volte funziona a volte no...") perchè non indica chiaramente il problema sottoposto.
    Prego fare più attenzione.





  • di Zsolt (utente non iscritto) data: 18/03/2014 11:10:39

    Il codice adesso funziona, ma come detto in precedenza, ogni volta che lo lancio anche se non c'è da fare nessun aggiornamento, mi si apre un processo EXCEL.EXE*32 sul task manager. Non vorrei che questi dessero dei problemi!?!
     
    ThisApplication.StatusBarText = "Sto aggiornando il file Excel: Descrisioni_vba"
    Dim oExcel As Excel.Application
    Dim oWb As Workbook
    Set oExcel = New Excel.Application
    Set oWb = oExcel.Workbooks.Open("Z:DISEGNI_INVENTORDescrizioni_vba.xlsx")
    oExcel.Visible = False
    oWb.Connections("serversam SAMPIVOT Valli_Articoli").Refresh
    oWb.Saved = True
    oWb.Save
    Set oWb = Nothing 'aggiunta
    oExcel.Quit
    MsgBox "L'aggionamento del file Excel è stato completato!", vbInformation, "Info"



  • di paolomath data: 18/03/2014 12:29:45

    Ciao,

    mi sembra che dopo

    oExcel.Quit

    manchi

    set oExcel = Nothing.

    Poi non so se

    Set oWb = Nothing

    serve a qualcosa...

    Bye bye.