Pytanie : VBA Błąd Treser gdy przodować prześcieradło istnieć

The blok kod pod import odmianowy worksheets od 3 różny Przodować kartoteka w jeden stół.  

For przykład dokąd Year1.xlsx wychodzić, błąd wiadomość podpalać (` błąd `1004').  I patrzeć dla sposób błąd treser który działać ten skutek:

If szczegół Przodować Prześcieradło istnieć (e.g. `Year2.xlsx'), then wykonywać the kod na the następny Przodować szkotowy wymieniony w `myPath = Szyk…'  

If istnieć the prześcieradło istnieć wymieniony w `myPath = Szyk…', then podpalać ten kod:
1:
MsgBox "Worksheets istnieć. Wychodzić teraz! ", vbInformation, "Błąd"
(1):
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
Public Okręt podwodny ImportExcelSheets ()
Ciemnawy myPath (), j
myPath = Szyk ("\ \ serverName \ Year1.xlsx"," \ \ serverName \ Year2.xlsx ", "\ \ serverName \ Year3.xlsx")
Dla j = LBound (myPath) UBound (myPath)
    
    
Ustalony objXL = CreateObject ("Excel.Application")
    objXL.Workbooks.Open xlPath, Prawdziwy
    Z objXL
        Dla i = (1). Worksheets.Count
            Jeżeli InStr (. Worksheets (i). Imię, "widget") Wtedy
            DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, _
             "tableName", myPath (j), Prawdziwy. Worksheets (i). Imię &"! A: M "
            Kończyć Jeżeli
        Następnie
    Końcówka Z
    objXL.Quit
    Ustalony objXL = Nic

Następnie

Końcówka Okręt podwodny

Odpowiedź : VBA Błąd Treser gdy przodować prześcieradło istnieć

używać to

(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:
Jawny Okręt podwodny ImportExcelSheets ()
Ciemnawy myPath (), j, iCnt jako integer
myPath = Szyk ("\ \ serverName \ Year1.xlsx"," \ \ serverName \ Year2.xlsx ", "\ \ serverName \ Year3.xlsx")
Dla j = LBound (myPath) UBound (myPath)
    
jeżeli dir (mypath (j))<>"" wtedy

Ustalony objXL = CreateObject ("Excel.Application")
    objXL.Workbooks.Open myPath (j), Prawdziwy
    Z objXL
        Dla i = (1). Worksheets.Count
            Jeżeli InStr (. Worksheets (i). Imię, "widget") Wtedy
            DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, _
             "tableName", myPath (j), Prawdziwy. Worksheets (i). Imię &"! A: M "
            Kończyć Jeżeli
        Następnie
    Końcówka Z
    objXL.Quit
    Ustalony objXL = Nic

    inny
    iCnt=iCnt + (1)
kończyć jeżeli
Następnie
jeżeli icnt=3 wtedy
MsgBox "Worksheets istnieć. Wychodzić teraz! ", vbInformation, "Błąd"
wyjście okręt podwodny
kończyć jeżeli 

Kończyć Okręt podwodny
 
Toggle HighlightingOpen w Nowy WindowSelect Wszystko
Inne rozwiązania  
 
programming4us programming4us