155 Aufrufe
Gefragt in Tabellenkalkulation von

Hallo Supportnet-Team,

ich probiere seit gestern mehrere schreibgeschützte zu öffnen und sie zu verändern.

Der Schritt sollte in etwa so sein:

Passwortgeschützte Datei öffnen - Blattschutz entfernen - zwei Spalten ausblenden - Fensterfixierung aufheben - Im Tabellenblatt Zelle A10 auswählen - Blattschutz wieder reinsetzen und schließen mit speichern.

Mit dem Code habe ich mich versucht, wobei das keine Schleife ist. Der zukünftige Code sollte alle gefüllten Zeilen durchgehen. Routinen sind für mich sowieso unmöglich.

Code passwortgeschütztes Öffnen:

Sub Dateienoeffnen()

Application.ScreenUpdating = False

Workbooks.Open Filename:=Workbooks("PW").Sheets("PW").Range("L2").Value & "\" & Workbooks("PW").Sheets("PW").Range("K2").Value, Password:=Workbooks("PW").Sheets("PW").Range("X2").Value, WriteResPassword:=Workbooks("PW").Sheets("PW").Range("X2").Value

Hier kommt der erste Fehler, auch ohne Schleife:

Ich bekomme es nicht hin, dass das Passwort aus der vorherigen Datei genommen wird...

Code Blattschutz entfernen:

Workbooks(Workbooks("PW").Sheets("PW").Range("L2").Value & "\" & Workbooks("PW").Sheets("PW").Range("X2").Value).Sheets("Data").Protect Workbooks("PW").Sheets("PW").Range("X2").Value

Dann weiter mit dem, was aufgrund des o.g. Fehlers nicht mehr ging:

With Workbooks(Workbooks("PW").Sheets("PW").Range("L2").Value & "\" & Workbooks("PW").Sheets("PW").Range("X2").Value).Sheets("Data")

.Columns("Z:AA").EntireColumn.Hidden

.ActiveWindow.FreezePanes = False

.Range("A10").Select

.Sheets("Blatt 1").Protect Workbooks("PW").Sheets("PW").Range("X2").Value 

Workbooks(Workbooks("PW").Sheets("PW").Range("L2").Value & "\" & Workbooks("PW").Sheets("PW").Range("X2").Value).Close SaveChanges:=True

End Sub

Wenn das durch ist = die nächste Zeile.

Kann jemand hier helfen?

Ich bin absoluter Anfänger, weshalb die Codes sicherlich alles andere als gut sind :)

Einen schönen Abend und Danke

Sven

2 Antworten

0 Punkte
Beantwortet von flupo Profi (17.8k Punkte)

Du solltest versuchen, am Anfang nicht alles in eine Zeile zu packen. Dann wird der Code lesbarer.

Beispiel Öffnen der Datei:

Der Befehl dazu lautet Workbooks.Open,

Er hat in deinem Fall  zwei Argumente: Filename und Password.

Verteile das Ganze auf vier Zeilen:

Pfad = Workbooks("PW").Sheets("PW").Range("L2").Value
Dateiname = Workbooks("PW").Sheets("PW").Range("K2").Value
PW = Workbooks("PW").Sheets("PW").Range("X2").Value
Workbooks.Open Filename:=Pfad & "\" & Dateiname, Password:=PW

Das hat neben etwas mehr Übersicht auch noch einen weiteren Vorteil: Es lässt sich wunderbar debuggen.
Und so funktioniert das: Aktiviere im VBA Editor die Symbolleiste "Debuggen" falls sie nicht sichtbar ist.

Rechts neben der Hand ist das Symbol für die Ausführung im Einzelschritt-Modus. Jeder Klick führt eine Befehlszeile des Makros aus. Das Tolle daran ist, dass man in diesem Modus die aktuellen Inhalte der Variablen sehen kann wenn man mit dem Mauszeiger über den Namen ist.

So kannst du sofort sehen, ob z.B. der Pfad, der Dateiname oder das Passwort korrekt aus der Datei ausgelesen wird.

Das hat mir schon bei vielen Basteleien sehr geholfen.

Wenn der Code zum Ziel führt, kann man ihn auch später noch in weniger Zeilen zusammenfassen.

Gruß Flupo

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Sven,

am besten erklärst du mal wie deine Datei, aus der du die Daten liest, aufgebaut ist.

Flupo hat ja schon geschrieben:

Pfad in Spalte L

Dateiname in Saplte K

Passwort in Spalte X (für Datei- und Blattschutz??)

Stimmt das so?

Du schreibst:

Ich bekomme es nicht hin, dass das Passwort aus der vorherigen Datei genommen wird...

Wie soll ich das verstehen?

Gruß

M.O.

...