Hallo,
beim Testlauf des gleichen VBA-Codes mit einer Datenquelle aus einem LAN-Netzlaufwerk traten keine Fehler auf.
Die Datenquelle konnte fehlerfrei geöffnet werden. Auch wenn die betreffende Excel-Datei zuvor nicht explizit geöffnet wurde.
Man kann auch eine Arbeitsmappe unsichtbar öffnen und bei Bedarf wieder schließen:
''' <summary>
''' Bei Bedarf wird eine Arbeitsmappe unsichtbar geöffnet
''' </summary>
''' <parameters name="sFilename">Voller Pfad zur zu öffnenden Arbeitsmappe</parameters>
''' <parameters name="exitCode">vbTrue = Workbook ist geöffnet; vbFalse = Beim Öffnen ist ein Fehler aufgetreten;vbUseDefault=Arbeitsmappe ist bereits geöffnet gewesen</parameters>
Sub WorkbookOpenHidden(sFilename As String, Optional ByRef exitCode As VbTriState)
On Error GoTo Err_Handler
Dim wbk As Workbook
For Each wbk In Application.Workbooks
If wbk.FullName = sFilename Then
exitCode = VbTriState.vbUseDefault
Exit Sub
End If
Next
Set wbk = Application.Workbooks.Open(sFilename)
wbk.Windows.Item(1).Visible = False
exitCode = VbTriState.vbTrue
Err_Exit:
Exit Sub
Err_Handler:
exitCode = VbTriState.vbFalse
Err.Clear
Resume Err_Exit
End Sub
''' <summary>
''' Schließt eine Arbeitsmappe
''' </summary>
''' <parameters name="sFilename">Voller Pfad zur Arbeitsmappe</parameters>
''' <parameters name="bSaveChanges">Bei Bedarf werden Änderungen gespeichert (True) oder verworfen (False)</parameters>
Sub WorkbookClose(sFilename As String, Optional bSaveChanges As Boolean = True)
Dim wbk As Workbook
For Each wbk In Application.Workbooks
If wbk.FullName = sFilename Then
wbk.Close bSaveChanges
End If
Next
End Sub
Wenn der Befehl WorkbookOpenHidden vor dem Open-Adodb-Befehl ausgeführt wird, sollte immer sicher gestellt sein, dass die Arbeitsmappe geöffnet ist.
Mit dem Parameter exitCode des Befehls WorkbookOPenHidden kann ermittelt werden, ob der Befehl erfolgreich ausgeführt wurde (vbTrue oder vbUseDefault).
Falls vbFalse zurückgeliefert wurde, trat beim Öffnen ein Fehler auf.
LG, BigBen
|