ID tematu: 68547
 |
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
|
|
|
 |
|
|
|
ąćęłńóś
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
|
|
|
 |
|
|
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
|
|
|
 |
|
|
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
|
|
|
 |
|
|
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. |
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
|
|
|
 |
|
|
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
|
|
|
 |
|
|
ąćęłńóś
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
|
|
|
 |
|
|
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
|
|
|
 |
|
|
|
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
|
 |
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
|