WinCC VBS Excel Mappe Passwortgeschützt öffnen beschreiben und wieder schliesen

ebene10

Level-2
Beiträge
20
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
VBS Excel Mappe Passwortgeschützt öffnen beschreiben und wieder schließen

Hallo zusammen,

ich habe folgende Problematik:
Ich öffne mit VBS eine Datei Vorlage.xls, diese Datei speichere ich dann unter anderem Namen ab.
Nach einer Messung öffne ich die Datei wieder und beschreibe eine Zeile z.b A10 - G10.
Danach wird die Datei gespeichert und Excel beendet.
Bis hierhin klappt alles.

Ich muss den Eintrag in der Mappe gegen Manipulation schützen und habe es mit Blattschutz probiert.
Das funktioniert, aber ich kann die die Datei in Excel öffnen und den Blattschutz einfach wieder ausschalten.
Dann habe ich es mit Passwortschutz versucht aber nicht hinbekommen.
Ich hoffe ihr könnt mir helfen.

THX

Runtime Advanced, TIA V15.1, Excel 2016
Hier mein Code:

If SmartTags("DB_Variablen_Archiv_Schreiben") Then

' Variablen-Zuweisungen ...
Verzeichnis = "D:\Share"
Name = SmartTags("Global_Marker_Filename")

' Pointer auf Tabelle laden
Set appExcel = CreateObject ("EXCEL.Application")
Set fs = CreateObject ("Scripting.FileSystemObject")

'Geöffnete Datei ect muss noch abgefangen werden

Set wbExcel = appExcel.Workbooks.Open (Verzeichnis + Name)
Set wsExcel = wbExcel.Worksheets("Tabelle1")

'Excel sichtbar = True/ unsichtbar = False
appExcel.application.visible = False


wsExcel.Unprotect.passwort "1234"
wsExcel.Cells.Locked = False
wsExcel.UnProtect


'In bestimmte Excel Zellen schreiben
wsExcel.Range("A3") = SmartTags("IDB_PartType_Name_TYP_ACT") ' Teilenummer
wsExcel.Range("B3") = SmartTags("Global_Marker_HMI_Seriennummer") ' Seriennummer
wsExcel.Range("C3") = SmartTags("DB_Protocol_Bediener_Actual") ' Prüfer
wsExcel.Range("D3") = Date ' Datum


wsExcel.Protect.passwort "1234"
wsExcel.Cells.Locked = True
wsExcel.Protect


' Tabelle abspeichern
wbExcel.Close True 'false
appExcel.Quit ()

'------------------------------------------------------------------------------
' verwendeten Speicher wieder freigeben
Set wsExcel = Nothing
Set wbExcel = Nothing
Set fs = Nothing
Set appExcel = Nothing
Set Verzeichnis = Nothing
Set Datei = Nothing

SmartTags("DB_Variablen_Archiv_Schreiben") = False

End If
 
Zuletzt bearbeitet:
Mir ist nicht klar geworden, was konkret nicht funktioniert.
Vielleicht hilft Dir folgendes:
In Excel kann man per VBA-Routine mit copy/paste ein komplettes, Passwort-geschützes Blatt in ein neuangelegtes Blatt ungeschützt kopieren, die gewünschten Eintragungen vornehmen und danach den PasswortSchutz aktivieren.
Das ursprüngliche, geschützte Blatt lässt sich trotz PasswortSchutz löschen! Es ist also gar nicht erforderlich, das Blatt zu "entschützen".
Diese Aktion könntest Du in VBA beim Öffnen der Excel-Datei ablaufen lassen. Allerdings: ich weiss nicht, ob/wie man den PasswortSchutz rein per VBA hinbekommt, ohne dass der Bediener das Passwort eintippen muss.

PS:
Doch, sollte problemlos möglich sein: Ausdruck.Protect(Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly)

PPS:
Dein Problem scheint "wsExcel.Cells.Locked = False" zu sein - damit sagst Du, dass alle Zellen des Blattes trotz BlattSchutz nicht geschützt werden sollen!
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin ebene10,

Ich muss den Eintrag in der Mappe gegen Manipulation schützen und habe es mit Blattschutz probiert.
Das funktioniert, aber ich kann die die Datei in Excel öffnen und den Blattschutz einfach wieder ausschalten.
Dann habe ich es mit Passwortschutz versucht aber nicht hinbekommen.
Ich hoffe ihr könnt mir helfen.

Ist eine Exceldatei unbedingt erforderlich (vielleicht für weitere Auswertungen)? Wenn nicht, und es geht nur darum, dass das Dokument manipulationssicher wird, könnte man es als PDF ausdrucken.

VG

MFreiberger
 
Hallo und danke für Deine schnelle Antwort.
Ich möchte das Blatt nach dem Beschreiben wieder schützen und geschützt lassen.
Ablauf:
Datei öffnen Schreibschutz mit Passwort entfernen, Daten in die Zellen scheiben,
danach das Blatt (Mappe) wieder Passwortschützen.
Es muss gewährleistet sein, dass niemend die Datei öffnen kann um beschriebene Zellen zu manipulieren.
Das File ist Qualitätsrelevant!
Ich kann deinen Vorschlag erst heute Nachmittag testen, werde dir dann Rückinfo geben ob es geklappt hat.

Dankeschön :D
Grüße aus Franken
Jochen
 
@ MFreiberger,

das geht leider nicht, da ich 1 -2000 Messungen in das Excel File eintragen muss.
Sprich 1 - 2000 mal das File öffnen Schreibschutz entfernen mit Passwort, beschreiben und wieder Passwortgeschütz schließen.
Dann kann keiner manipulieren, da die Tabelle(Blatt) Passwortgeschützt ist.
Alle Messungen müssen in einem Dokument sein.

Vielen Dank für deine Antwort
Gruß
Jochen
 
das geht leider nicht, da ich 1 -2000 Messungen in das Excel File eintragen muss.
Sprich 1 - 2000 mal das File öffnen Schreibschutz entfernen mit Passwort, beschreiben und wieder Passwortgeschütz schließen.
Was genau funktioniert denn bei Deinem Ansatz nicht?
Du hast geschrieben "Das funktioniert, aber ich kann die die Datei in Excel öffnen und den Blattschutz einfach wieder ausschalten."
Auf welchem Wege kannst Du den BlattSchutz einfach wieder ausschalten?
Vllt wäre es hilfreich, in Deinem Script statt passwort password zu schreiben? Oder ein ausgefeilteres Passwort als "1234" zu verwenden?

Meinen Ansatz mit einer VBA-Routine, die beim Öffnen der ExcelDatei ein geschütztes Blatt in ein ungeschütztes Blatt kopiert (was trotz BlattSchutz funktioniert), dieses neue Blatt bearbeitet und dann den BlattSchutz aktiviert und die ursprüngliche Version des geschützten Blattes löscht (auch das geht trotz BlattSchutz) habe ich getestet und es funktioniert.
Was ich noch nicht eingebaut habe (Edit: d.h. gestern noch nicht eingebaut hatte), ist die Übernahme der neu hinzukommenden Zeilen. Diese könntest Du mit Deinem Script in einem eigens angelegten Blatt hinterlegen. Beim Öffnen der ExcelDatei würden diese Daten dann in das "eigentliche" Blatt eingefügt und das von Deinem Script angelegte Blatt gelöscht werden.
Ein KnackPunkt könnte das häufige (>2000-mal) Anlegen und Löschen von Blättern werden. Vor Jahren hatte ich in einer älteren Excel-Version das Problem, dass Excel solche Aktionen eine ganze Weile klaglos ausgeführt hat, aber irgendwann an irgendwelche (für mich nicht nachvollziehbare) Grenzen gestossen und dann "ausgeflippt" ist.

PS:
Anhang anzeigen Vorlage.xlsm.pdf <===<<< nach dem Herunterladen ' .pdf ' entfernen
BlattNamen und SpaltenÜberschriften dürfen keine Leerzeichen enthalten.
 
Zuletzt bearbeitet:
Hallo Heinileini,

vielen Dank für deine Antwort.
Ich habe das WE noch weiter getestet und habe es ans laufen gebracht.
Das Problem liegt daran, wie ich die Vorlage anlege.
Ich habe immer ein .xls File angelegt, das hatte ich zwischendurch mal probiert mit .xlsm zu arbeiten, hatte nicht funktioniert.
Anscheinen hab ich da was falsch gemacht, denn jetzt hab ich es nochmals mit .xlsm probiert und es lies sich aus der Vorlage.xslm ein neues File (anderer Name) anlegen.
Mit einem .xlsm File sprechen die Befehle aus dem VBS an.
Ich habe die Vorlage mit einem Blattschutz (mit Kennwort) versehen. Dann per VB Skript die Vorlage unter einem anderen Namen als MeinNeuerName.xslm File abgespeichert.
Mit den Befehl wsExcel.unprotect "mein_Passwort" kann ich jetzt den Blattschutz aufheben und nach dem Beschreiben der Zellen wieder wsExcel.protect "mein_Passwort"
einschalten können.
Das funktioniert aber nicht bei einem .xls File!
Danke nochmal an alle die hier mitgedacht und sich mit eingebracht haben. :grin:

Grüße aus Franken ;)
Jochen
 
Würdest Du für andere Suchende bitte auch beschreiben, wie Du es gelöst hast?
:cool:
Ich habe aus der Antwort herausgelesen, dass der DateiTyp xls dem Gelingen im Wege stand. Diesen (alten) Typ kann Excel zwar noch einlesen und schreiben, aber anscheinend werden die in VBS verwendeten Befehle nur in den neueren Ständen (xlsx, xlsm, xlsb) verstanden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Achtung für Leute, die die obige Lösung als "manipulationssicher" verkaufen wollen: die Lösung taugt nur gegen versehentliche Änderungen und für ganz doofe Excel-Benutzer, die nur soviel Ahnung von Computern haben, daß sie geradeso irgendwo draufklicken können wo drauf steht "Klick mich" ;) Mehr "Schutz" bietet der einfache Excel-Blattschutz nicht.

Harald
 
Zurück
Oben