Clever-Excel-Forum

Normale Version: VBA-Code öffnen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebes Forum !

Kann mir bitte vielleicht jemand helfen.
Ich muss im VBA bei ca. 150 Dateien eine Änderung vornehmen und nach dem Öffnen jeder Datei den VBA-Code eingeben, da die Änderung im VBA-Projekt sonst nicht möglich ist.
Dass dies eine sehr langwierige Sache ist, könnt Ihr Euch sicher vorstellen.
Gibt es eine Möglichkeit per VBA den Code einzugeben ?
Ich habe schon verschiedene angebotene Codes versucht, aber alle ohne Erfolg.
Danke im Voraus für Eure geschätzte Hilfe.

Liebe Grüße aus Innsbruck
Helmut
Hallo,

Ungetestet würede ich folgende Prozeduren vorschlagen:
1. Alle 150 Dateien in einen Ordner kopieren
2. Mit cmd> dir {entsprechende Schalter} > c:\temp\datei-liste.txt
3. In ein neues worksheet importieren, so dass pro Zeile ein Dateiname steht
4. Den einzufügenden vba-code als modul separat abspeichern
5. Mit dem Makro-Rekorder den Code für Einfugen eines vba-Moduls generieren
6. Ein Makro schreiben, dass alle dateien nacheinander öffnet, den vba-code einfügt und dann als xlsm abspeichert

Dies im Detail umzusetzen, ist noch einige Arbeit. Ein feedback, ob dieses Konzept umsetzbar ist, wäre nett.

Mfg
Hallo Fennek !

Danke für Deine Antwort.
Meines Wissens lässt sich das VBA-Passwort nicht mit dem Makro-Recorder behandeln, das hatte ich schon gesucht.

Liebe Grüße
Helmut
Hallo,
Habe ich da etwas mis-interprtiert? "Den vba-code eingeben", war damit nicht ein vba-code, sodern das password zum öffnen der Datei gemeint?
Wenn das so wäre, ist die Lösung recht einfach:
In vba kann mit OpenWorkbook auch das password übergeben werden.

Mfg
Hallo Fennek,


ich kann kein Passwort mit OpenWorkbook übergeben, wenn der VBA-Code gesperrt ist. Hier geht es wohl um das Passwort, das den Code gegen unbefugtes Ändern schützt. Wenn ich der Ersteller der Datei wäre, dann hätte ich eine Version gespeichert, bei der der Code nicht geschützt ist, damit ich Änderungen vornehmen kann. Ansonsten hilft nur, den Code für jede Datei einzeln einzugeben.


Wenn der Code nicht bekannt ist, dann ist das hier sowieso das falsche Forum!!!!!
Hallo!
Mal kurz einmischend:
Die VBA-Projekte sind mit Passwort geschützt?
Dann kannst Du das wohl vergessen.
Selbst ohne Passwort müsstest Du zumindest "Zugriff auf das VBA-Projekt vertrauen" aktivieren, was natürlich nicht per Makro geht, sonst könnte jeder Hacker bequem Schadcode einbauen.

Für die Zukunft empfehle ich, Code, der evtl. Änderungen unterliegt, per AddIn als Verweis einzubinden.
Dann braucht man (auch im laufenden Betrieb!) lediglich das AddIn anzupassen.

Gruß Ralf
Hallo liebe Helfer !

Es tut mir leid, dass ich mich nicht klar ausgedrückt habe. Natürlich habe ich das VBA-Passwort gemeint.
Es gab für frühere Excel-Versionen eine Lösung mit "SendKeys", aber diese funktionieren nicht mehr.

Lieber Ralph !

Zitat:Für die Zukunft empfehle ich, Code, der evtl. Änderungen unterliegt, per AddIn als Verweis einzubinden.
Dann braucht man (auch im laufenden Betrieb!) lediglich das AddIn anzupassen.

Da ich von AddIns leider keine Ahnung habe, kannst Du mir bitte Details nennen?

Vielen Dank.
Liebe Grüße
Helmut
Hallo Heli,

Zu passwörtern kann ich nichts betragen, aber in Fällen ohne password funktioniert sendkeys immer noch, ausprobiert in xl2016.
Damit können ganze Modele (.bas) geladen werden.

Mfg
Hallöchen,

mal ein anderer Ansatz. Ich versuche oft, VBA-Projekt und Daten von einander zu trennen. Im günstigsten Fall bearbeite ich über 12.000 Dateien mit einer Projektdatei - das allerdings im Netzwerk.
Das lohnt sich auch schon bei weniger als 10 oder 20 Dateien. Da gibt es auch wieder verschiedene Varianten, mal kommen die Datendateien ganz ohne VBA aus, mal ist im Workbook_Open das Öffnen der Projektdatei drin ... Wenn ich dann Code ändern muss, brauch ich nur die Projektdatei auszutauschen oder zu verteilen.

Dabei ist es (nicht ganz) unerheblich, ob man die Projektdatei als AddIn speichert oder als xlsm/xlsb. Man kann beides einfach ausführen und loslegen. Bei xlsm/xlsb muss man lediglich die Datei, wenn gewünscht, ausblenden. Beim AddIn ist das gleich so. Gibt natürlich noch den einen oder anderen Unterschied.

Mit dem Einbinden von AddIns stehe ich etwas auf Kriegsfuß. Datei bei Bedarf oder Nichtbedarf auf und zu ist mir lieber als der andere Kladderedatsch Smile aber das ist Ansichtssache.
Hallo!
Stimmt ja, hier wollte ich noch eine Anleitung einstellen.

Mal die Vorgehensweise:

Erstelle eine neue Datei, sie enthält nur ein Modul mit folgendem Code:
Sub AusAddIn()
MsgBox "Diese Meldung stammt aus dem Add-In!"
End Sub

Benenne das VBAProject im VBA-Editor um, ich habe es prjTest genannt. Es darf nicht bei VBAProject bleiben, sonst kommt es beim Setzen des Verweises zu einem Problem.

Speichere die Datei (bei mir ist es TestAddIn.xlam) in einem Ordner auf dem nur Du bzw. der Admin Schreibrechte besitzen. In meinem folgenden Beispiel sind beide Dateien in einem "normalen" Zip-Container.

Erstelle die Arbeitsdatei Verweis auf Add-in.xlsm mit einem Command-Button, dem folgender Code hinterlegt ist:
Private Sub CommandButton1_Click()
Application.Run "AusAddIn"
End Sub

Im VBA-Editor:
- Extras, Verweise
- Durchsuchen, Dateityp Excel Files, Verzeichnis und AddIn suchen, Öffnen

Speichere die Arbeitsdatei.

Ab sofort ist das Makro aus dem Addin in der Arbeitsdatei verfügbar aber nicht dort gespeichert!

Heißt: derjenige mit Schreibrechten kann das AddIn jederzeit ändern.
Wenn der Anwender seine Arbeitsdatei erneut öffnet, stehen automatisch die geänderten Makros zur Verfügung.

Gruß Ralf