2008-08-27 8 views
3

私はExcelベースのデータベースレポートツールを記述しました。現在、すべてのVBAコードは単一のXLSファイルに関連付けられています。ユーザーは、ツールバーのボタンをクリックしてレポートを生成します。残念ながら、ユーザーが別のファイル名でファイルを保存しない限り、報告されたすべてのデータは消去されます。Excelアプリケーションをパッケージ化して配布する最良の方法は何ですか

Wordで同様のツールを作成したときに、すべてのコードをテンプレート(.dot)ファイルに格納してそこから呼び出すことができます。テンプレートファイルをOfficeのスタートアップフォルダに置くと、Wordを起動するたびに起動します。 Excelでコードをパッケージ化して配布するのと同様の方法はありますか?アドインを使用しようとしましたが、アプリケーションウィンドウからコードを呼び出す方法が見つかりませんでした。

答えて

2

excel起動ディレクトリに格納されているユーザーのpersonal.xlsファイルを変更できます(Officeのバージョンによって異なります)。あなたが多くのユーザーを抱えている場合は、それは間違っている可能性があります。

問題を乗り越える別の方法は、テンプレート(.xlt)ファイルにマクロを保存することです。ユーザーがそれを開くと元のファイルに戻すことはできませんが、新しいファイル名を指定して保存する必要があります。この方法の欠点は、保存されたファイルごとに元のコードを複数コピー取得できることです。元の.xltを変更して、誰かが以前に保存した.xlsファイル内の古いマクロを再実行すると、何かがステップから外れることがあります。

+0

私は、.xltテンプレートに同意します。 –

10

コードをExcel Addin(XLA)に移動するだけで、起動時に読み込まれます(%AppData%\ Microsoft \ Excel \ XLSTARTフォルダ内にあるものとします)。ただし、ブック、ブック、マクロと定義された起動機能がロードされます。

機能がスプレッドシート自体に依存する場合は、テンプレートとアドインの組み合わせを使用できます。

私はこのようなアプリケーションの一部を配布しています、私たちは、Word、ExcelおよびPowerPointのアドイン(XLA、PPA、DOT)ともOffice 2007の 'リボン' のバージョン(DOTM、XLAMとPPAM)

を持っていますアドイン起動コードはツールバーボタンが見つからない場合に作成されます。つまり、ワークブック/ドキュメント/などでツールバーのボタンを押すだけでコードを実行できます(2つのアクションボタンと1つのボタンで設定ダイアログを表示します)

テンプレートは実際にVBAコードに行く方法ではありません.Addinsは確かに行く方法です...

OAD私たちが何かのような...(ツールバーがが存在するかどうかをチェックする - コードが開かれる各ワークシートのために実行されますが、ツールバーは、ユーザーセッションの永続的である)を使用している起動時にツールバー

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

希望をその助けてください:)

1

私は常にアドイン(xla)/テンプレート(xlt)の組み合わせを使用します。アドインはメニュー(または他のUIエントリポイント)を作成し、必要に応じてテンプレートを読み込みます。また、データベースに保存するデータ(Access、SQLServer、テキストファイル、またはxlsファイル)も書き込みます。

最初のルールは、コードをデータと区別することです。その後、バグ修正やその他のコード変更があった場合、新しいアドインを送信することができ、それらのテンプレートとデータベースはすべて影響を受けません。

0

Excelファイルを展開するClickOnceについて調べましたか?

+0

ClickOnceについて詳しく教えてください。 – JonnyGold

+0

ここから開始:http://msdn.microsoft.com/en-us/library/bb821233.aspx –

0

読み取り専用アクセス権を持つネットワークフォルダにExcelを保存するとどうなりますか?認証は統合されたWindows認証で行うことができ、VBAのデータベースに接続パスワードを保存する必要はありません。次に、この場所へのリンクをユーザーに一度だけ配布するだけです。更新を行う場合、そのフォルダ内のデータはユーザーに通知することなく変更するだけです。

関連する問題