Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 68547 Skopiuj do schowka pętla na 3 hasła
Autor Wiadomość
zbysiomysio 
Exceloholic


Posty: 141
Wysłany: 19-07-2020, 20:46   pętla na 3 hasła

Witam
Mam taką część makra jak poniżej. Problem w tym, że hasło może brzmieć "1", "2" lub "3". Jak zapisać makro, aby po kolei makro sprawdziło te hasła?
Kod:
For Each b In Workbooks
If Dir(ThisWorkbook.Path & "\Stary.xlsx") = "" Then MsgBox "Brak w folderze pliku o nazwie Stary.": Exit Sub
    If b.Name = "Stary.xlsx" Then otwarty = True: Exit For
Next
If Not otwarty Then Workbooks.Open ThisWorkbook.Path & "\Stary.xlsx", Password:="1"
ID posta: 389882 Skopiuj do schowka
 
 
ąćęłńóś
Excel Expert


Pomógł: 307 razy
Posty: 1519
Wysłany: 20-07-2020, 08:40   

?
: (

... takie coś ... ?

Kod:
Option Explicit

Sub abc()
   
    Const stary = "Stary"
    Const rozsz = ".xlsx"
   
    Dim i As Integer
    Dim dostep As String
    Dim otwarty As Boolean
    Dim haslo
    Dim b As Workbook
   
    haslo = Array("1", "2", "3")
    dostep = "C:\Temp\" 'ThisWorkbook.Path & "\"
   
    'jakieś coś tam
   
    For Each b In Application.Workbooks
        If b.Name = stary & rozsz Then otwarty = True: Exit For
    Next
   
    If otwarty Then
        MsgBox "Plik jest już otwarty"
        Exit Sub
    Else
        MsgBox "Brak otwartego pliku o nazwie:" & vbNewLine & "'" & stary & rozsz & "'"
       
        If Dir(dostep & stary & rozsz, vbNormal) = "" Then
            MsgBox "Nie ma go nawet w katalogu:" & vbNewLine & "'" & dostep & "'"
            Exit Sub
        Else
            On Error Resume Next
               
                For i = LBound(haslo) To UBound(haslo)
                    Workbooks.Open Filename:=dostep & stary & rozsz, Password:=haslo(i)
                   
                    If Err.Number <> 0 Then
                        Err.Clear
                    Else
                        otwarty = True
                        Exit For
                    End If
                Next
               
            On Error GoTo 0
           
            If otwarty Then
                MsgBox "Plik otwarto z hasłem:" & vbNewLine & "'" & haslo(i) & "'"
            Else
                MsgBox "Całkowita klapa do piwnicy"
                Exit Sub
            End If
        End If
    End If
   
    'jakieś coś tam
   
End Sub
ID posta: 389894 Skopiuj do schowka
 
 
Artik 



Wersja: Win Office 365
Pomógł: 3063 razy
Posty: 10134
Wysłany: 20-07-2020, 08:50   

Nieco inaczej, choć efekt końcowy powinien być podobny. :-)

Kod:
Sub AAA()
    Dim varrPass    As Variant
    Dim wkb         As Workbook
    Dim i           As Long
    Dim strWkbName  As String

    varrPass = Array("Pass1", "password2", "Password 3")
    strWkbName = "Stary.xlsx"

    On Error Resume Next
    Set wkb = Workbooks(strWkbName)

    If wkb Is Nothing Then

        If Len(Dir(ThisWorkbook.Path & "\" & strWkbName)) = 0 Then
            MsgBox "Brak w folderze pliku o nazwie " & strWkbName & ".", vbExclamation
            Exit Sub
        End If


        For i = 0 To UBound(varrPass)
          Set wkb = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & strWkbName, _
                                 Password:=varrPass(i))
         
          If Not wkb Is Nothing Then
            Exit For
          End If
        Next i
    End If
    On Error GoTo 0
   
   
    If wkb Is Nothing Then
      MsgBox "Nie można otworzyć pliku " & strWkbName & ".", vbCritical, "Brak odpowiedniego hasła!"
    Else
      MsgBox wkb.Name & " jest otwarty.", vbInformation
    End If
End Sub
Artik
_________________
Persistence is a virtue in the world of programming.
ID posta: 389895 Skopiuj do schowka
 
 
zbysiomysio 
Exceloholic


Posty: 141
Wysłany: 20-07-2020, 12:07   

Ogromne dzięki chłopaki. W makrze podanym przez @ąćęłńóś coś mi nie działa. Chyba warunek jest źle wstawiony, ale ja nie potrafiłem tego poprawić. Zamiast otwierać plik "Stary" pojawia mi się Msgbox, że nie ma pliku. Makro podane przez @Artik śmiga. Mam jeszcze tylko jedno pytanie. Chodzi o to, że makro śmiga bez zarzutu jeżeli plik "Stary" to xls. Problem w tym, że ten plik otrzymuję jako zlsx. Jeżeli poprawiam w makrze na xlsx to excel i tak prosi mnie o podanie hasła. Prawdopodobnie problemem jest to, że ja używam starej wersji excela (2003), a więc ten plik jest konwertowany. Czy jest jakiś sposób, aby temu zaradzić. W innym poście pisałem o tym czy jest możliwość zamiany xls na xlsx, ale odpisano mi, że bez otwierania to nie jest możliwe. A jeżeli trzeba je otworzyć to trzeba i tak wpisać hasło. Czy więc można to jakoś obejść?
ID posta: 389909 Skopiuj do schowka
 
 
Artik 



Wersja: Win Office 365
Pomógł: 3063 razy
Posty: 10134
Wysłany: 20-07-2020, 13:35   

zbysiomysio napisał/a:
Problem w tym, że ten plik otrzymuję jako zlsx.
:?: :shock:
Chyba miało być "xlsx".

zbysiomysio napisał/a:
Prawdopodobnie problemem jest to, że ja używam starej wersji excela (2003), a więc ten plik jest konwertowany.
Problem w tym, że kontaktu z wersją 2003 nie mam od ok. 10 lat. Nie do końca też świecę, w którym momencie pojawia się monit o hasło. Czyżby w momencie wykonywania się linii
Kod:
Set wkb = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & strWkbName, _
                                 Password:=varrPass(i))
:?:
Jeśli tak, to wygląda na to, że po wydaniu polecenia otwarcia skoroszytu, podane w kodzie hasło jest ignorowane, a do akcji wkracza konwerter, który monituje o podanie hasła.
Nie pomogę z wcześniej podanej przyczyny. Mam też obawy, czy jest to kodem możliwe do zrobienia.
Jedyne co, to poprosić "źródło" o dostarczanie pliku w formacie xls.

Artik
_________________
Persistence is a virtue in the world of programming.
ID posta: 389911 Skopiuj do schowka
 
 
Artik 



Wersja: Win Office 365
Pomógł: 3063 razy
Posty: 10134
Wysłany: 20-07-2020, 16:34   

Ponieważ następny problem nie dotyczył tematu tego wątku, został wydzielony do nowego.

Artik
_________________
Persistence is a virtue in the world of programming.
ID posta: 389938 Skopiuj do schowka
 
 
ąćęłńóś
Excel Expert


Pomógł: 307 razy
Posty: 1519
Wysłany: 20-07-2020, 22:31   

zbysiomysio napisał/a:
coś mi nie działa. Chyba warunek jest źle wstawiony, ale ja nie potrafiłem tego poprawić. Zamiast otwierać plik "Stary" pojawia mi się Msgbox, że nie ma pliku.

A co ... własną ścieżkę dostępu, to taki problem wstawić ... ?
ID posta: 389961 Skopiuj do schowka
 
 
zbysiomysio 
Exceloholic


Posty: 141
Wysłany: 21-07-2020, 07:09   

Ok. Sorry. Tyle to akurat potrafię. Nie zwróciłem na to uwagi. Dzięki jeszcze raz za pomoc

edycja Zbiniek:
Nie cytuj całej wypowiedzi znajdującej się bezpośrednio powyżej – w takim przypadku wiadomo, że się do niej odnosisz. Cytowanie stosuj tylko wtedy, gdy nawiązujesz do wypowiedzi o kilka postów wcześniej lub gdy komentujesz tylko jakiś fragment ostatniej wypowiedzi. W obu przypadkach zacytuj tylko fragment, do którego się odnosisz.
ID posta: 389973 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe