Frage

Ich habe ein Excel-basiertes Datenbank-Berichtstool geschrieben.Derzeit ist der gesamte VBA-Code einer einzigen XLS-Datei zugeordnet.Der Benutzer generiert den Bericht, indem er auf eine Schaltfläche in der Symbolleiste klickt.Leider werden alle gemeldeten Daten gelöscht, es sei denn, der Benutzer hat die Datei unter einem anderen Dateinamen gespeichert.

Wenn ich ähnliche Tools in Word erstellt habe, kann ich den gesamten Code in eine Vorlagendatei (.dot) einfügen und ihn von dort aus aufrufen.Wenn ich die Vorlagendatei im Office-Startordner ablege, wird sie jedes Mal gestartet, wenn ich Word starte.Gibt es eine ähnliche Möglichkeit, meinen Code in Excel zu verpacken und zu verteilen?Ich habe versucht, Add-Ins zu verwenden, aber ich habe keine Möglichkeit gefunden, den Code aus dem Anwendungsfenster aufzurufen.

War es hilfreich?

Lösung

Sie können die Datei personal.xls des Benutzers ändern, die im Excel-Startverzeichnis gespeichert ist (variiert je nach Office-Version).Wenn Sie jedoch viele Benutzer haben, kann das umständlich sein.

Eine alternative Möglichkeit, Ihr Problem zu lösen, besteht darin, das Makro in einer Vorlagendatei (.xlt) zu speichern.Wenn die Benutzer es dann öffnen, können sie es nicht über die ursprüngliche Datei zurückspeichern, sondern müssen einen neuen Dateinamen angeben, unter dem sie gespeichert werden soll.Der Nachteil dieser Methode besteht darin, dass Sie dann mit jeder gespeicherten Datei überall mehrere Kopien Ihres Originalcodes erhalten.Wenn Sie die ursprüngliche XLT-Datei ändern und jemand das alte Makro in einer zuvor gespeicherten XLS-Datei erneut ausführt, können die Dinge aus dem Takt geraten.

Andere Tipps

Verschieben Sie Ihren Code einfach in ein Excel-Add-In (XLA) – dieses wird beim Start geladen (vorausgesetzt, es befindet sich im Ordner %AppData%\Microsoft\Excel\XLSTART). Wenn es sich jedoch um ein Add-In und nicht um eine Arbeitsmappe handelt, dann nur Ihre Makros und den definierten Start Funktionen werden geladen.

Wenn die Funktionen von einer Tabellenkalkulation selbst abhängen, möchten Sie möglicherweise eine Kombination aus Vorlagen und Add-Ins verwenden.

Ich verteile einen Teil einer solchen Anwendung. Wir haben Add-Ins für Word, Excel und Powerpoint (XLA, PPA, DOT) sowie Office 2007-Ribbon-Versionen (DOTM, XLAM und PPAM).

Der Startcode des Add-Ins erstellt Symbolleistenschaltflächen, wenn sie nicht gefunden werden. Dies bedeutet, dass sie in jeder Arbeitsmappe/Dokument/usw. einfach auf die Symbolleistenschaltfläche klicken können, um unseren Code auszuführen (wir haben zwei Aktionsschaltflächen und eine Schaltfläche, die einen Einstellungsdialog anzeigt).

Vorlagen sind nicht wirklich der richtige Weg für VBA-Code, Add-ins sind definitiv der richtige Weg ...

Um die Symbolleisten beim Start zu laden, verwenden wir also etwas wie ...(Überprüfen Sie jedoch, ob eine Symbolleiste vorhanden ist. Der Code wird für jedes geöffnete Arbeitsblatt ausgeführt, die Symbolleisten bleiben jedoch für die Benutzersitzung bestehen.)

Public Sub Workbook_Open()
     ' startup code / add toolbar / load saved settings, etc.
End Sub

Ich hoffe, das hilft :)

Ich verwende immer eine Kombination aus Add-in (xla) und Vorlage (xlt).Ihr Add-In erstellt das Menü (oder andere UI-Einstiegspunkte) und lädt nach Bedarf Vorlagen.Es schreibt auch Daten, die Sie beibehalten möchten, in eine Datenbank (Access, SQLServer, Textdatei oder sogar eine XLS-Datei).

Die erste Regel besteht darin, Ihren Code von Ihren Daten getrennt zu halten.Wenn Sie später Fehlerkorrekturen oder andere Codeänderungen vornehmen, können Sie ein neues Add-In senden, ohne dass alle Vorlagen und Datenbanken davon betroffen sind.

Haben Sie sich mit der Bereitstellung der Excel-Datei durch ClickOnce befasst?

Wie wäre es mit dem Speichern einer Excel-Datei in einem Netzwerkordner mit schreibgeschützten Berechtigungen?Die Authentifizierung kann mit der integrierten Windows-Authentifizierung erfolgen und Sie müssen kein Verbindungskennwort zur Datenbank im VBA speichern.Dann müssen Sie nur einmal einen Link zu diesem Standort an Ihre Benutzer verteilen.Wenn Sie ein Update durchführen, ändern Sie nur die Daten in diesem Ordner, ohne dass der Benutzer dies bemerkt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top