jaydotkay
Goto Top

Geschützte Datei ohne Kennwortschutz abspeichern in VBA (Passwort bekannt)

Hallo werte Kollegen,

ich hänge seit längerem an einem Problem, zu dem ich bisher leider keine Lösung gefunden habe. Wahrscheinlich aber gibt es eine einfache Lösung, die ich nicht finde... (arbeite noch nicht so lange mit VBA).

Mein Makro öffnet eine passwortgeschützte Dokumentenvorlage, kopiert Daten hinein und speichert dann dieses neue Dokument unter neuem Namen ab. Mein Problem: Das neue Dokument soll dann nicht passwortgeschützt sein.

Hier die Stelle im Skript mit einem meiner kläglichen Versuchen:

'hier wird die neue Datei abgespeichert:
strNewFileName = strNewFileName & "\" & strInputWorksheetName & "_ausgewertet.xlsx"
ActiveWorkbook.Unprotect strPasswordWorkbook
ActiveWorkbook.SaveAs strNewFileName
ActiveWorkbook.Close
'...

Die Unprotect-Methode hat einfach keine Wirkung. Die gespeicherten Dateien sind weiterhin geschützt, obwohl es in der Hilfe heißt "Unprotect: Removes protection from the workbook."
(SaveAs funktioniert auch ohne Unprotect.)

Die "Makro aufzeichnen"- Funktion ignoriert meine Handlungen, wenn ich es manuell rausnehme das Passwort.


Kann mir jemand weiterhelfen?

Vielen, vielen Dank und Grüße!

Content-Key: 230118

Url: https://administrator.de/contentid/230118

Printed on: April 19, 2024 at 00:04 o'clock

Member: jaydotkay
jaydotkay Feb 17, 2014 at 11:21:43 (UTC)
Goto Top
Habe die Lösung gefunden:

ActiveWorkbook.Unprotect strPasswordWorkbook
ActiveWorkbook.SaveAs strNewFileName, Password:=""
ActiveWorkbook.Close

Es kann manchmal so einfach sein... face-smile

MfG
Member: colinardo
colinardo Feb 17, 2014 updated at 11:32:54 (UTC)
Goto Top
Hallo jaydotkay, Willkommen im Forum!
so wie dein Code aussieht entfernst du nicht das Passwort deiner geöffneten Dokumentvorlage sondern in der, in der sich das Makro befindet (ActiveWorkbook).
Erstelle also am besten eine Variable die die geöffnete Vorlage enthält und führe die Befehle darauf aus.
Beispiel:
set wbVorlage = Workbooks.Open("C:\Testvorlage.xlsx")  
strNewFileName = strNewFileName & "\" & strInputWorksheetName & "_ausgewertet.xlsx"  
wbVorlage.Unprotect strPasswordWorkbook
wbVorlage.SaveAs strNewFileName
wbVorlage.Close
Außerdem solltest du die Protection ja vor dem Einfügen der Daten in das Sheet entfernen.

Oder ist dein Excel-File mit einem "Öffnen" Passwort versehen? Dann wird das anders gemacht, dieses wird mit
ActiveWorkbook.Password = ""
entfernt, oder bei der SaveAs-Methode, ein leeres angegeben.

-edit- hat sich ja erledigt, das zweite war's also face-wink

Grüße Uwe