Frage : VBA Störungs-Zufuhr, wenn Blatt übertreffen, existiert nicht

Der Block des Codes unter spezifischen Arbeitsblättern der Importe von 3 verschiedenen Excel-Akten in eine Tabelle.  

For führt, wo Year1.xlsx nicht herausnimmt, Feuer einer Fehlermeldung als Beispiel an (Laufzeitfehler `1004').  Ich suche nach einer Weise, eine Störungszufuhr einzuführen, die zu diesem Effekt funktionieren würde:

If, das ein bestimmtes Excel-Blatt nicht existiert (z.B. `Year2.xlsx'), dann, den Code auf dem folgenden Excel-Blatt durchführt, das verzeichnet wird im `myPath = der Reihe…'  

If, das keine der Blätter aufgeführt im `myPath = der Reihe…' existieren, dann, diesen Code abfeuern:
1:
MsgBox „Arbeitsblätter existieren nicht. Unterseeboot jetzt herausnehmen! “, vbInformation, „Störung“
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
Public VorImportExcelSheets ()
Schwaches myPath (), J
myPath = Reihe („\ \ serverName \ Year1.xlsx“,“ \ \ serverName \ Year2.xlsx ", „\ \ serverName \ Year3.xlsx“)
Für J = LBound (myPath) zu UBound (myPath)
    
    
objXL = CreateObject („Excel.Application“) einstellen
    objXL.Workbooks.Open xlPath, zutreffend
    Mit objXL
        Für i = 1 zu. Worksheets.Count
            Wenn InStr (. Arbeitsblätter (i). Name, „Widget“) dann
            DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, _
             „tableName“, myPath (j), zutreffend. Arbeitsblätter (i). Name u.“! A: M "
            Beenden wenn
        Zunächst
    Ende mit
    objXL.Quit
    objXL einstellen = nichts

Zunächst

Enden-Unterseeboot

Antwort : VBA Störungs-Zufuhr, wenn Blatt übertreffen, existiert nicht

dieses verwenden

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
Allgemeines VorImportExcelSheets ()
Schwaches myPath (), J, iCnt als ganze Zahl
myPath = Reihe („\ \ serverName \ Year1.xlsx“,“ \ \ serverName \ Year2.xlsx ", „\ \ serverName \ Year3.xlsx“)
Für J = LBound (myPath) zu UBound (myPath)
    
wenn dir (mypath (j))<> "" dann

objXL = CreateObject („Excel.Application“) einstellen
    objXL.Workbooks.Open myPath (j), zutreffend
    Mit objXL
        Für i = 1 zu. Worksheets.Count
            Wenn InStr (. Arbeitsblätter (i). Name, „Widget“) dann
            DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, _
             „tableName“, myPath (j), zutreffend. Arbeitsblätter (i). Name u.“! A: M "
            Beenden wenn
        Zunächst
    Ende mit
    objXL.Quit
    objXL einstellen = nichts

    sonst
    iCnt=iCnt + 1
beenden wenn
Zunächst
wenn icnt=3 dann
MsgBox „Arbeitsblätter existieren nicht. Unterseeboot jetzt herausnehmen! “, vbInformation, „Störung“
Unterseeboot herausnehmen
beenden wenn 

Unterseeboot beenden
 
HighlightingOpen in neuem WindowSelect alles umschalten
Weitere Lösungen  
 
programming4us programming4us