2008-08-27 4 views
3

Ich habe ein Excel-basiertes Datenbank-Reporting-Tool geschrieben. Momentan 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. Solange der Benutzer die Datei nicht unter einem anderen Dateinamen gespeichert hat, werden alle gemeldeten Daten gelöscht.Was ist der beste Weg, um eine Excel-Anwendung zu packen und zu verteilen

Wenn ich ähnliche Tools in Word erstellt habe, kann ich den gesamten Code in eine Vorlagedatei (.dot) einfügen und von dort aus aufrufen. Wenn ich die Vorlagendatei in den Office-Startordner lege, 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 über das Anwendungsfenster aufzurufen.

Antwort

2

Sie können die Datei personal.xls des Benutzers ändern, die im Excel-Startverzeichnis gespeichert ist (variiert zwischen den Office-Versionen). Wenn Sie viele Benutzer haben, kann das fummelig sein.

Eine alternative Möglichkeit, Ihr Problem zu beheben, besteht darin, das Makro in einer Vorlagedatei (.xlt) zu speichern. Wenn die Benutzer sie öffnen, können sie sie nicht mehr über die ursprüngliche Datei speichern, sondern müssen einen neuen Dateinamen angeben, unter dem sie gespeichert werden soll. Der Nachteil dieser Methode ist, dass Sie mit jeder gespeicherten Datei 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, kann es zu Problemen kommen.

+0

Ich stimme der .xlt Vorlage zu. –

10

Verschieben Sie einfach Ihren Code in ein Excel Addin (XLA) - dies wird beim Start geladen (vorausgesetzt, es ist in der% AppData% \ Microsoft \ Excel \ XLSTART Ordner), aber wenn es ein Add-In, keine Arbeitsmappe, dann nur Ihre Makros und definierte Startfunktionen werden geladen.

Wenn die Funktionen von einer Tabelle selbst abhängen, möchten Sie möglicherweise eine Kombination aus Vorlagen und Addins verwenden.

Ich bin Teil einer Anwendung wie folgt zu verteilen, haben wir addins für Word, Excel und Powerpoint (XLA, PPA, DOT) und Office auch 2007 'Band' -Versionen (DOTM, XLAM und PPAM)

Der Add-In-Startup-Code erstellt Symbolleistenschaltflächen, wenn sie nicht gefunden werden, dh in jeder Arbeitsmappe/jedem Dokument/etc können sie einfach die Symbolleistenschaltfläche drücken, um unseren Code auszuführen (wir haben zwei Aktionsschaltflächen und eine Schaltfläche, die einen Einstellungsdialog anzeigt)

Vorlagen sind nicht wirklich der Weg, um für VBA-Code zu gehen, Addins sind definitiv der Weg zu gehen ...

So zu l OAD die Symbolleiste beim Start verwenden wir so etwas wie .. (zu überprüfen, ob Symbolleiste obwohl vorhanden - Code wird für jedes Arbeitsblatt ausführen, die geöffnet wird, sondern Symbolleiste sind persistent für die Benutzersitzung)

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

Hoffnung, dass hilft :)

1

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

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

0

Haben Sie in ClickOnce die Excel-Datei bereitgestellt?

+0

Bitte können Sie mir mehr über ClickOnce erzählen. – JonnyGold

+0

Starten Sie hier: http://msdn.microsoft.com/en-us/library/bb821233.aspx –

0

Wie wäre es mit einem Excel-Netzwerkordner mit schreibgeschützten Berechtigungen zu speichern?Die Authentifizierung kann mit der integrierten Windows-Authentifizierung durchgeführt werden, und Sie müssen das Verbindungskennwort nicht in der Datenbank in der VBA speichern. Dann müssen Sie nur einmal einen Link zu diesem Ort an Ihre Benutzer verteilen. Wenn Sie ein Update durchführen, ändern Sie nur Daten in diesem Ordner ohne Benutzerbenachrichtigung.

Verwandte Themen