Questione : L'alimentatore di errori di VBA quando eccellere lo strato non esiste

Il blocco di codice sotto i manuali specifici delle importazioni da 3 lime differenti di Excel in una tabella.  il

For cit ad esempioare dove Year1.xlsx non esce, fuochi del messaggio di errore (`1004 di errore Run-time').  Sto cercando un senso realizzare un alimentatore di errori che funzionerebbe a questo effetto: il

If che uno strato particolare di Excel non esiste (per esempio `Year2.xlsx'), quindi che non esegue il codice sullo strato seguente di Excel elencato nel myPath = nell'allineamento del `…'  il

If che nessun degli strati esistono elencato nel myPath = nell'allineamento del `…', quindi che inforna questo codice: class= " lineNumbers " >
1 del >
MsgBox “" del prettyprint " del class= " di codeSnippet794801 del id= del >
 " libero " di 
class= > " libero " del
> " del codeSnippet " del class= del
class= " lineNumbers " del
class= del
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
class= ImportExcelSheets secondario >Public " notpretty " del id= " codeSnippet794316 " del
           
class= del

Risposta : L'alimentatore di errori di VBA quando eccellere lo strato non esiste

usare questo

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:
ImportExcelSheets secondario pubblico ()
myPath fioco (), J, iCnt come numero intero
myPath = allineamento (“\ \ serverName \ Year1.xlsx„,„ \ \ serverName \ Year2.xlsx ", “\ \ serverName \ Year3.xlsx„)
Per J = LBound (myPath) a UBound (myPath)
    
se dir ("" del mypath (j)<>) allora

Regolare il objXL = CreateObject (“Excel.Application„)
    myPath di objXL.Workbooks.Open (j), allineare
    Con objXL
        Per i = 1 a. Worksheets.Count
            Se InStr (. Manuali (i). Nome, “widget„) allora
            acImport di DoCmd.TransferSpreadsheet, acSpreadsheetTypeExcel12, _
             “tableName„, myPath (j), allineare. Manuali (i). Nome &„! A: M. "
            Concluder se
        Dopo
    Estremità con
    objXL.Quit
    Regolare il objXL = niente

    altrimenti
    iCnt=iCnt + 1
concluder se
Dopo
se icnt=3 allora
I manuali di MsgBox “non esistono. Uscendo sommergibile ora! „, vbInformation, “errore„
uscire il sommergibile
concluder se 

Concludere il sommergibile
 
Fornire HighlightingOpen di un cavicchio in nuovo WindowSelect tutto
Altre soluzioni  
 
programming4us programming4us