Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Code mit Makro ändern

Code mit Makro ändern
01.01.2008 14:01:43
Micha

Hallo zusammen und erst mal ein gesundes, neues Jahr...
ich hoffe Ihr könnte mir helfen. Ich habe bei ca. 200 Usern eine Tabelle mit einem Makro "draußen". Nun habe ich festgestellt, das es einen Fehler in einem Makro gibt. Es muss ein Zahlenwert im Makro geändert werden.
Die Position (Ort) der Änderung und Makro ist mir alles bekannt, muss nur wissen wie ich die Zeile im Makro ersetzen kann...
Vielen Dank für Eure Hilfe...
Gruß Micha

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ergänzung
01.01.2008 14:19:13
Micha
Erschwerend kommt für mich noch hinzu, das das gesamte VBA Projekt mit einem Passwort versehen ist. Das muss vorher erst einmal entsperrt werden. Das Passwort habe ich aber selbst vergeben, es ist also bekannt...
Danke Euch.
Gruß Micha

AW: Tabellencode ersetzen
01.01.2008 14:26:36
Hallo,
mal ein Beispiel für ersetzen des Tabellencodes.


Sub Code_ersetzen()
Const WS1 As String = "Tabelle1"
Dim LineNr As Integer
With ThisWorkbook.VBProject.VBComponents(Worksheets(WS1).CodeName).CodeModule
.DeleteLines 4
.InsertLines LineNr + 4, "MsgBox ""Ersatzzeile"""
End With
End Sub


Gruß, Orakel

Anzeige
AW: Tabellencode ersetzen
01.01.2008 15:07:46
Daniel
Hi
und zum Thema "Entsperren" such mal im Forum nach dem Thread "VBA Kennwort" von Lorenz.
da gehts um das Thema.
Gruß, Daniel

AW: Tabellencode ersetzen
01.01.2008 17:55:10
Micha
Hallo Orakel,
vielen Dank erst einmal. Nur bekomme ich beim Ausführen der Befehle immer einen Hinweise, das ein Wechsel in den Haltemodus nicht passieren kann.
Außerdem muss ich in der Makrosicherheit einen Haken setzen, um die Bearbeitung der Module zuzulassen. Es ist sicherlich eine Notlösung, aber vielleicht hast Du ja noch eine Idee, wie ich den Code "hintenrum" bearbeiten kann?
Danke Dir...
Gruß Micha

Anzeige
AW: Tabellencode ersetzen
01.01.2008 19:20:26
Uduuh
Hallo,


Außerdem muss ich in der Makrosicherheit einen Haken setzen, um die Bearbeitung der Module zuzulassen. 


Das kannst du nicht umgehen.
Gruß aus’m Pott
Udo

AW: Tabellencode ersetzen
01.01.2008 19:41:11
fcs
Hallo Micha,
da wir die Prozeduren nicht kennen, die du jetzt verwendest, können wir nur bedingt helfen. (ggf. Passwort im Code durch Dummy-Text ersetzen!!)
Ausführung im Haltemodus nicht möglich bedeutet in Excel-VBA, dass die gewünschte Funktion im VBA-Editor nicht per Einzelschritt-Modus möglich ist bzw. dass in der Prozedur keine Haltepunkte gesetzt werden können. D.h. die gewünschten Prozeduren können nur im "Blindflug" ohne Testmöglichkeit ausgeführt werden.
Hierzu gehören unter anderem Tastaturbefehle, die per VBA-Code an Dialogfenster gesendet werden sollen. Und dies ist bei der Eingabe des VBA-Projektkennworts via VBA-Code der Fall.
Die Einstellung der Makrosicherheits-Stufe kannst du meines Wissens nicht umgehen. Dies erfordert einen Eingriff in die Registry-Datei bzw. sonstige Datei in der die Optionen von Excel gespeichert werden. Dieses Sicherheits-Feature wurde von Microsoft eingeführt, um das zu verhindern was du vorhast, nämlich den externen Zugriff auf VBA-Module.
Gruß
Franz

Anzeige
AW: Tabellencode ersetzen
01.01.2008 20:42:49
Hallo Micha,
wo ein Wille ist, da gibt es sicher Wege. Aber ich denke Du solltest den aufrechten Gang gehen. Du könntest die User bitten, zwecks Update entsprechende Vertrauenswürdigkeit herzustellen und diese im Anschluss bitte wieder zurückzusetzen. Es kann Wunder wirken, wenn AnwenderInnen beim Updaten ihres "Arbeitsgerätes" mit einbezogen werden.
Anbei mal eine Datei, mit der Du ein komlettes "Allgemeines Modul" in einer anderen Datei austauschen könntest.
https://www.herber.de/bbs/user/48748.xls
Gruß, Orakel

Anzeige
AW: Tabellencode ersetzen
02.01.2008 10:50:31
Micha
Vielen Dank Euch allen,
ich komme aber irgendwie nicht weiter. Habe Euch mal ein Beispiel gebaut.
https://www.herber.de/bbs/user/48751.xls
In der Tabelle ist ein Makro im Modul1. Es hat sich ein Fehler eingeschliechen, Ihr seht ihn. Da diese Tabelle nun bei rund 200 Usern unterwegs ist, möchte ich ein Update bauen. Das habe ich in der Vergangenheit schon ein paar Mal gemacht, wenn es um Formatierungsdinge o.ä. ging.
Diesmal muss der VBA Code geändert werden, und ich weis nicht wie... Macht es vielleicht mehr Sinn, das Modul zu bearbeiten und dann einen Export / Import bei den Usern zu machen?
Danke für Eure Hilfe...
Viele Grüße
Micha

Anzeige
AW: Tabellencode ersetzen
02.01.2008 21:29:54
Orakel
Hallo Micha,
a: Lass uns nicht Rätseln, was der Fehler ist.
b: Die Passwortzeichen sind keine Sternchen , sondern Plus-Zeichen.
Wie ein Modul ausgetauscht werden kann, zeigt meine Beispieldatei weiter oben. Wenn Du allerdings das Project-Kennwort vorher per Makro umgehen willst, wirst Du mit halbwegs einfachen Bordmitteln scheitern. Mit dem Befehl SendKeys könntest Du das bewerkstelligen. Aber nur für die Datei, in der das entsprechende Makro bereits steht.
Damit greifst Du jedoch nicht auf eine 2. Datei zu. Hinzu kommt, dass dies auch noch je nach Excel-Version unterschiedlich aussehen würde.
Beispiel:
So entferne ich den Projektschutz einer Datei bei mir:


Sub unlocking()
SendKeys ("%{f11}")
SendKeys ("%xi")
SendKeys ("MeinPasswort")
SendKeys ("{Enter}")
SendKeys ("{Tab 7}")
SendKeys ("{Enter}")
End Sub


Ich denke Dir bleibt nur der Weg, mit den Anwendern Kontakt aufzunehmen und ihnen eine sehr gute Gebrauchsanweisung an die Hand zu geben, damit sie dies selbst erledigen können. Zumindest die entsprechenden Schutzmechanismen zu beseitigen. Den Rest könnte ja eine Datei erledigen.
Gruß, Orakel

Anzeige
anders herum
03.01.2008 22:03:02
Orakel
machs doch anders herum. Schick eine komplett korrigierte Datei hin, am besten in das gleiche Verzeichnis. Hol Dir die Tabellen aus der Userdatei, lösch Deine Dummytabelle, lösch die Userdatei und benenn Deine Datei so wie die ehemalige Userdatei.
Alles da und wie neu. ;-)
Gruß, Orakel

Anzeige
AW: anders herum
04.01.2008 09:54:40
Micha
Hallo, grüße Dich...
wahrscheinlich ist das einfacher. Werde ich wohl mal eben ein kleines Importmakro bauen.
Hab vielen Dank für Deine Mühe....
Gruß Micha

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Code mit Makro ändern: Schritt-für-Schritt-Anleitung


Schritt-für-Schritt-Anleitung

  1. Makro öffnen: Öffne die Excel-Datei, die das zu ändernde Makro enthält.

  2. VBA-Editor aufrufen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Projekt entsperren: Wenn das Projekt mit einem Passwort geschützt ist, musst du es zuerst entsperren. Verwende den Code:

    Sub unlocking()
    SendKeys ("%{f11}")
    SendKeys ("%xi")
    SendKeys ("DeinPasswort")
    SendKeys ("{Enter}")
    SendKeys ("{Tab 7}")
    SendKeys ("{Enter}")
    End Sub
  4. Code finden: Suche den spezifischen Code, den du ändern möchtest (z.B. Zeile 4 im Beispiel).

  5. Code ersetzen: Verwende den folgenden Code, um die Zeile zu ersetzen:

    Sub Code_ersetzen()
    Const WS1 As String = "Tabelle1"
    Dim LineNr As Integer
    With ThisWorkbook.VBProject.VBComponents(Worksheets(WS1).CodeName).CodeModule
    .DeleteLines 4
    .InsertLines LineNr + 4, "MsgBox ""Ersatzzeile"""
    End With
    End Sub
  6. Makrosicherheit anpassen: Stelle sicher, dass die Makrosicherheit in Excel angepasst ist, damit du die Module bearbeiten kannst.


Häufige Fehler und Lösungen

  • Fehler: Ausführung im Haltemodus nicht möglich: Dieser Fehler tritt auf, wenn du versuchst, eine Funktion im VBA-Editor einzeln auszuführen. Stelle sicher, dass du keine Haltepunkte gesetzt hast.
  • Fehler: Passwort nicht erkannt: Überprüfe, ob du das richtige Passwort verwendest. Beachte, dass die Passwortzeichen möglicherweise als Plus-Zeichen angezeigt werden.
  • Makrosicherheit: Du musst die Sicherheitseinstellungen so anpassen, dass die Bearbeitung von Modulen erlaubt ist. Dies kann nicht umgangen werden.

Alternative Methoden

  • Import/Export von Modulen: Wenn du den Code nicht direkt ändern kannst, erwäge, das gesamte Modul zu exportieren, die Änderungen vorzunehmen und es dann wieder zu importieren.
  • Korrigierte Datei senden: Eine andere Möglichkeit besteht darin, den Benutzern eine vollständig korrigierte Datei zu senden. Dies könnte einfacher sein, als den Code bei jedem Nutzer zu ändern.

Praktische Beispiele

  • Beispiel 1: Wenn du eine Zeile in einem Makro ändern musst, kannst du die oben genannten Methoden verwenden, um den spezifischen Code zu aktualisieren und sicherzustellen, dass er bei allen Nutzern funktioniert.
  • Beispiel 2: Nutze das Makro unlocking, um das Passwort für dein VBA-Projekt zu entfernen, bevor du Änderungen vornimmst.

Tipps für Profis

  • Nutze Kommentare: Füge Kommentare zu deinem Code hinzu, damit andere (oder du selbst später) schneller verstehen, was jeder Teil des Codes macht.
  • Regelmäßige Backups: Mache regelmäßig Backups deiner Excel-Dateien, insbesondere bevor du größere Änderungen am VBA-Code vornimmst.
  • Einbeziehung der Nutzer: Bei Updates ist es oft hilfreich, die Nutzer zu informieren und ihnen Anleitungen zu geben, wie sie die Änderungen selbst vornehmen können.

FAQ: Häufige Fragen

1. Wie kann ich das Makro entsperren?
Du kannst das Makro mit dem Befehl SendKeys entsperren, indem du dein Passwort eingibst.

2. Was tun, wenn ich den Code nicht ändern kann?
Versuche, das Modul zu exportieren, die Änderungen vorzunehmen und es dann wieder zu importieren. Alternativ kannst du auch eine vollständig korrigierte Datei an die Nutzer senden.

3. Wie passe ich die Makrosicherheit an?
Gehe zu den Excel-Optionen und passe die Sicherheitseinstellungen an, um die Bearbeitung von VBA-Modulen zuzulassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige