Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

VBA workbooks.open w select case

warcep2 24 Lis 2017 09:56 381 7
  • #1 24 Lis 2017 09:56
    warcep2
    Poziom 3  

    zrobiłem select case. (kilka case).
    W każdym case mam workbooks.open (ścieżka pliku) i czasami jest tak, że pliku w danej ścieżce nie ma i wtedy wyskakuje błąd. Jak to ominąć?. tzn żeby ominął dany case i szedł do następnego.

    edit: próbowałem przez goto ale dalej wyskakuje błąd. error resume next też nie działa.

    edit2: Gdy dam on error goto errhandler to wyłącza mi select case


    Code:


    dim arkusze as workbook
    Case 15:


    Set arkusze = Workbooks.Open("C:\Users\" & Environ("UserName") & "\Desktop\OR\wk" & " " & IsoWeekNumber(Date) & "\fixed" & "\Fixed wk" & IsoWeekNumber(Date) & " " & "Q")
    If arkusze = "" Then GoTo arab
    ...
    arab:

    0 7
  • #2 24 Lis 2017 10:55
    JRV
    Specjalista - VBA, Excel

    'Case' zalezy od parametra 'Select Case' i nie idzie do następnego Case.
    Mozesz lub 'On Error...' lub 'If Dir(sciezka pliku)...'
    np. tak

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #3 24 Lis 2017 11:03
    warcep2
    Poziom 3  

    chyba coś robie źle bo nie działa. błąd wyskakuje przy case 3. - że nie wyszukuje pliku w danym miejscu(i chce aby program przeszedł do case 4 ale tego nie robi. jak dam on error goto err: to wciąż wyskakuje mi błąd
    ...
    for i=2 to5

    select case i

    case 2
    on error goto err
    Set arkusze = Workbooks.Open("C:\Users\" & Environ("UserName") & "\Desktop\OR\wk" & " " & IsoWeekNumber(Date) & "\Produced" & "\Produced wk" & " " & IsoWeekNumber(Date) & "_ LINE" & "L")
    ...

    case 3
    on error goto err
    Set arkusze = Workbooks.Open("C:\Users\" & Environ("UserName") & "\Desktop\OR\wk" & " " & IsoWeekNumber(Date) & "\Produced" & "\Produced wk" & " " & IsoWeekNumber(Date) & "_ LINE" & "L")
    ....
    case 4
    on error goto err
    Set arkusze = Workbooks.Open("C:\Users\" & Environ("UserName") & "\Desktop\OR\wk" & " " & IsoWeekNumber(Date) & "\Produced" & "\Produced wk" & " " & IsoWeekNumber(Date) & "_ LINE" & "L")
    ...
    case 5
    on error goto err
    Set arkusze = Workbooks.Open("C:\Users\" & Environ("UserName") & "\Desktop\OR\wk" & " " & IsoWeekNumber(Date) & "\Produced" & "\Produced wk" & " " & IsoWeekNumber(Date) & "_ LINE" & "L")
    ...
    end select

    err:
    next i
    ...

    end sub

    0
  • #4 24 Lis 2017 11:09
    JRV
    Specjalista - VBA, Excel

    Jaky sens 'Case' jezeli 'For' ?

    Dodano po 2 [minuty]:

    ponadto wszystkie sciezki jednakowe

    0
  • #5 24 Lis 2017 12:20
    warcep2
    Poziom 3  

    ścieżki jednakowe z powodu ctrl +v ale ogolnie w pliku są różne.

    jaki sens?, plik jest dosyć rozbudowany i jeśli i =3 to po select case robi nam x a jeśli i=4 to robi nam y

    0
  • #6 24 Lis 2017 12:39
    JRV
    Specjalista - VBA, Excel

    warcep2 napisał:
    on error goto errhandler to wyłącza mi select case

    w oparcie na fragment makra trudno cos doradzić

    0
  • #7 24 Lis 2017 13:24
    warcep2
    Poziom 3  

    Daje kod w plik word.

    Zaznaczyłem na zielono gdzie jest problem. Jeśli nie ma pliku (case 15) to chciałbym aby aby przeszedł do case 16 i kolejne kroki robił dla niego

    0
  • Pomocny post
    #8 24 Lis 2017 21:05
    JRV
    Specjalista - VBA, Excel

    OK, tylko wieczorzem, jest nie dla 10 minut, teraz mam prace.

    Dodano po 3 [godziny] 48 [minuty]:

    1. jak uz jest:
    Set arkusze = Workbooks.Open("C:\Users\" .... wtedy wystarczy
    arkusze.Close False bez tego 'zamknijdanyarkusz', skoro otwierasz pliki po koleji

    2. elementy petli For i.... Select Case ..... różnią się tylko litera(A B C G H... R)
    Wtedy dwie sciezki ....( & "A"; & "_ LINE" & "A") realizowac w petli
    For i = 65 to 82
    If i = 68 then i = 71
    Set arkusze = Workbooks.Open("....... & Chr(i)
    Range("A:T").CurrentRegion.Copy
    itd.
    ...
    Next

    bez Select....

    Dodano po 19 [minuty]:

    ??
    Cells(ilerowdevia, 11).Value "B" i podobnie - to mielo byc komentarz? z apostrofem?

    Dodano po 1 [godziny] 33 [minuty]:

    Cells(ilerowover, 2 * i - 2).Select - jak zmienia sie w rzeczywistosci i? od 2 do 17 ??

    Dodano po 1 [godziny] 19 [minuty]:

    Myslim ze te 800+ liniji kodu od For i=2 to 17 mozna zastapic:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0