Anzeige
Archiv - Navigation
1724to1728
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
viele Dateien mit Makros administrieren
19.11.2019 06:14:12
Klaus
Hi Leute,
ich habe die schmerzhafte Erfahrung gemacht, dass "Mehrpersonenfreigabe" einfach nicht funktioniert - die Fehler haben sich gehäuft, die Datei war ständig gesperrt (obwohl Freigegeben?) und Daten sind verloren gegangen.
Ich mache das jetzt anders, jeder meiner 20 User bekommt eine eigene Datei und ich sammele per Makro die Daten aus allen Dateien ein, wenn ich sie brauche. Das bekomme ich auch hin.
Hat jemand einen Tipp für mich, wie man eine vielzahl Dateien mit identischen Makros am einfachsten administriert? Ich möchte nicht jedesmal wenn ich eine Zeile im Makro verbessere alle 20 Dateien anfassen müssen, auch nicht um die Module neu zu importieren / exportieren. Ich meine mal was davon gelesen zu haben, dass man dafür ein Projekt als "Add In" speichern kann - das habe ich aber noch nie gemacht.
Kann mir jemand auf die Sprünge helfen, wie das geht?
LG,
Klaus M.

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: viele Dateien mit Makros administrieren
19.11.2019 10:48:02
Sigi
Hallo Klaus,
meine Erfahrung mit „Arbeitsmappe freigeben“ ist, dass dies mit wenigen Personen (2-4) funktionieren kann, wenn sich alle an die Vorgaben halten. Jeder erfasst Daten in „seinem“ Bereich“ und speichert regelmäßig, damit alle wieder auf den gemeinsamen Stand kommen.
Freigaben für bis zu 20 Personen werden in der Tat selten funktionieren, da immer wieder mal einer irgendwo Änderungen vornimmt. Damit sind Konflikte geradezu zwangsläufig.
Wie administriert man Makros in Betrieb/Unternehmen. Da gibt es nicht die einzige richtige Lösung. Viele Wege führen nach Rom. Es kommt immer auf den Einzelfall an, was wie wo gemacht werden soll. Eine Vielzahl Dateien mit identischen Makros das klingt „suboptimal“. Aber auch da kommt es auf die Aufgabe an.
Was bietet sich an?
Ich würde Makros und Daten entkoppeln! Makros in eigene Dateien bzw. Add-Ins und Daten immer separat. Z. Bsp.:
1a. Ein Add-In bzw. mehrere Add-Ins in einem Verzeichnis im Betriebsnetz. Diese(s) werden/wird unter Datei – Optionen – Add-Ins entweder direkt eingebunden oder als Kopie auf den persönlichen Rechner gezogen.
Falls das/die Add-In(s) per Kopie gezogen wurden, gibt es wieder mehrere Add-In(s). Bei Änderungen im Original müssen die Add-In(s) neu gezogen werden.
1b. Falls das/die Add-In(s) direkt eingebunden wurden, gibt es nur das Original im Betriebsnetz. Für Änderungen müssen aber alle User Excel schließen, damit kein Add-In mehr eingebunden ist. D.h. Änderungen sind nur möglich, wenn alle Excel schließen oder eben nach Arbeitsende.
Alternativ führst du eine „Masterdatei (Add-In)“, die tagsüber geändert werden kann und dann von einem IT-Mitarbeiter am Abend ausgetauscht wird.
Wie machst du das?
Makrodatei als Add-In im Betriebsnetz speichern. Jeder User muss über - Menü – Optionen – Add-Ins – Verwalten Add-Ins – Los oder Durchsuchen – Add-In nochmals durchsuchen – Add-In einbinden.
2. Ein Verzeichnis im Betriebsnetz mit einzelnen Makrodateien. Die Makrodateien gibt es nur einmal. Dazu ein eigenes „Menüband“ mit Symbolen oder Menübefehlen für jeden User. Eine Makrodatei wird lediglich für das Ausführen des Makros geöffnet und anschließend wieder geschlossen. Makrodateien sind lediglich während der Ausführung belegt, ansonsten für Änderungen verfügbar.
3. Persönliche Arbeitsmappen. Im Betrieb ein no go!
Meine Makros im Betrieb beginnen immer mit einer MsgBox. In dieser erkläre ich in kurzen Worten was für das Makro vorausgesetzt wird (Eingaben, Markierungen, etc.) und was das Makro dann macht. Grundsätzlich gibt es immer einen „Abbrechen-„ und „Start-Button“! Meine Makros speichern die Änderungen des Makros nicht. Somit kann der User selbst entscheiden, ob das Ergebnis für ihn passt oder nicht. Falls nicht, kann er die Mappe ohne Speichern schließen und erneut öffnen. Damit hat er wieder den Stand vor dem Makro.
Grüße
Sigi
Anzeige
AW: viele Dateien mit Makros administrieren
19.11.2019 10:57:47
EtoPHG
Hallo Klaus,
Zitat: Kann mir jemand auf die Sprünge helfen, wie das geht? Excel gut?
  • Einfach ein normales XLSM als Add-In speichern.

  • Anschliessen über Optionen - Add-In - Gehe zu - Durchsuchen das Add-In laden

  • Natürlich muss der Code im Add-In so generisch geschrieben sein, dass er sich auf geladene Arbeitsmappen bezieht, aber u.U. nicht für jede geladenet Mappe ausgeführt wird. Also z.B. dass nur Mappen mit bestimmten Namen, oder aus definierten Verzeichnissen, oder mit anderen (inhaltlichen) Merkmalen (Tabellennamen, Datenstrukturen, Dokumenteigenschaften etc.) bearbeitet werden.
    Das Ausführen/Erlauben von Makros des Add-Ins kann z.B. mit dem Erstellen einer eigenen Ribbon-X (Menüleiste) gesteuert werden. Solchen werden im Custom UI Editor in XML erstellt (suche nach Ribbon-X Workshop in der Forumsrecherche!)
    Gruess Hansueli
    Anzeige
    AW: viele Dateien mit Makros administrieren
    19.11.2019 11:10:40
    Armin
    Hallo Klaus,
    hier eine Anleitung zum erstellen/anwenden von ADDINS:
    Öffne ein neues Sheet, dann Deine Sheets mit Makro. Verschiebe die Module, Userform, Klassenmodule in das neue Sheet.
    Vor dem speichern unter Datei-Informationen-Eigenschaften =Titel einen Namen für das ADDIN vergeben zum Bsp. „Klaus_Makros“. Dieser Name erscheint im Register Entwicklertools – Excel Add-Ins als Name! Also günstig evtl. mit Version versehen (Klaus_Makros_19_11).
    Speichere es mit „IrgendeinName.xlam“
    Jetzt kannst Du es in einem Standard Verzeichnis ablegen (C:\Users\info\AppData\Roaming\Microsoft\AddIns)
    Oder In einem Ordner z.Bsp. ADDINS unterhalb Deines Arbeits-Sheets. Allerdings hat letzteres wesentlich längere Ladezeiten für das ADDIN!
    In dem Arbeitssheet unter „DieseArbeitsmappe“
    Private Sub Workbook_Open()
    Dim StrPath As String
    StrPath = ThisWorkbook.Path  ꞌDieser Pfad zeigt bei ADDINS auf den Pfad des selbigen!  _
    Wenn Du auf das aktive Sheet zeigen möchtest verwende ActiveWorkbook.Path.
    So kann man das ADDIN automatisch installieren/aktivieren:
    AddIns.Add FileName:=StrPath & "\ADDINS\ IrgendeinName.xlam", ꞌCopyFile:=True
    So wird das ADDIN-File in das Standard-Verzeichnis von MS kopiert. Bei „False“ bleibt es wo es  _
    ist.
    AddIns("Klaus_Makros_19_11").Installed = True
    Das ADDIN muss falls es mit nur einem Sheet aktiv sein soll, bei verlassen des Sheets  _
    deaktiviert werden.
    
    
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    AddIns("Klaus_Makros_19_11").Installed = False
    End Sub
    

    Hinweis:
    Aufrufe von Makros aus dem „Arbeitssheet“ erfolgen mit:
    Application.Run "Makro1"
    Wenn das ADDIN installiert ist, kann dieses natürlich auch manuell aktiviert werden.
    Literatur zum Thema:
    https://support.office.com/de-de/article/hinzuf%C3%BCgen-oder-entfernen-von-add-ins-in-excel-0af570c4-5cf3-4fa9-9b88-403625a0b460
    Gruß Armin
    Anzeige
    Wie referenziere ich dann?
    19.11.2019 12:18:41
    Klaus
    Hallo Armin,
    danke für die Schritt-für-Schritt Anleitung. Ich bekomme es hin, dass die Datei und das AddIn beide starten und im VBA-Editor die jeweiligen VBA-Projekte anwählbar sind.
    Jetzt brauche ich aber Hilfe beim Referenzieren. Ich habe ein Makro namens "MoveMyButtons". Das habe ich bisher mit "Call MoveMyButtons" aufgerufen - geht nicht mehr. Du schriebst schon, "Application.Run "MoveMyButtons"" - und das funktioniert auch. Aber wie Referenziere ich Tabellenblätter?
    Hier das verkürtzte Makro:
    Sub MoveMyButtons()
    Call MoveButton("CommandButton_Admin", ScanBox.Name, "AN1")
    End Sub
    Sub MoveButton(sButton As String, sWks As String, sCell As String)
    Dim rng As Range
    Set rng = Sheets(sWks).Range(sCell)
    With Sheets(sWks).OLEObjects(sButton)
    .Top = rng.Top
    .Left = rng.Left
    .Width = rng.MergeArea.Width
    .Height = rng.MergeArea.Height
    End With
    End Sub
    

    Im Blatt "ScanBox" habe ich einen Button Namens "CommandButton_Admin". Wie referenziere ich im AddIn das Blatt "ScanBox" korrekt, und wie den Button?
    
    sub IrgendeinMakro()
    With Tabelle1
    end with
    End Sub
    

    Wie Referenziere ich Tabelle1 im AddIn richtig?
    LG,
    Klaus M.
    Anzeige
    AW: Wie referenziere ich dann?
    19.11.2019 12:21:47
    Klaus
    Einen noch:
    Private Sub CommandButton_Admin_Click()
    UF_Password.Show
    End Sub
    
    Die UserForm ist auch im Addin, wie referenziere ich die?
    LG,
    Klaus
    AW: Wie referenziere ich dann?
    19.11.2019 13:22:21
    Armin
    Hallo Klaus,
    zunächst zu Application.Run ohne "" nur das Makro.
    hier MS-> https://docs.microsoft.com/de-de/office/vba/api/excel.application.run
    Man kann auch Parameter übergeben.
    Sub MoveMyButtons(ScName as String)
    Call MoveButton("CommandButton_Admin", ScName, "AN1")
    End Sub
    

    ->
    
    Application.Run "MoveButton",ScanBox.Name
    

    vorausgesetzt ScanBox.name ist NICHT im Addin ansonsten ist das ja nicht nötig.
    Userform müssen über Makro im Addin aufgerufen werden.
    Sub UserForm1_aufrufen()
    Userform1.show
    end Sub
    
    Gruß Armin
    Anzeige
    AW: Wie referenziere ich dann?
    19.11.2019 19:54:59
    Klaus
    Hallo Armin,
    danke für die Anleitung und sorry für die späte Rückmeldung.
    Da hätte ich von Anfang an "sauber" für das Add-In programmieren müssen - jetzt im Nachhinein wäre es viel zu viel zu ändern. Ausserdem bin ich bereits mit der Version "Mehrfachfreigabe" arg auf die Fr*** geflogen, nichts hat geklappt und der ganze Betrieb wurde aufgehalten. Wenn ich jetzt mit AddIns etwas für mich neues probiere und dabei Kinderkrankheiten-Fehler mache, verliere ich hier jede Glaubwürdigkeit ... das traue ich mich leider nicht, dafür ist mir mein Projekt zu wichtig.
    Habe mir jetzt ein kurzes Script geschrieben, dass alle zu ändernden Dateien im Netzwerk löscht (natürlich vorher die relevanten Inhalte einsammelt) und die Muster-Datei inklusive Makros unter ebendiesem Dateinamen speichert ... geht auch. Muss ich halt vor Schichtbeginn oder nach Feierabend laufen lassen.
    Ich habe aber auf jedem Fall etwas von dir gelernt und werde zusehen, dass ich das nächste kleinere Projekt auch mit Add-Ins umsetze. Jetzt weiss ich ja, wie ich dazu referenzieren muss und kann es gleich richtig machen :-)
    Vielen Dank! Natürlich auch an Hansueli.
    LG,
    Klaus M.
    Anzeige

    305 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige