2016-10-26 12 views
0

Excelファイル(クリーンアップ機能)でVBAを実行したいのですが、特定のユーザーのみがこの機能を利用できるようにします。すべてのExcelではVBAを実行しますが、プロジェクトでは実行しません。

例として、ユーザーに.batファイルを送信して、保存してこれをダブルクリックするように指示することです。

  1. それは、VBAマクロを開くでしょう
  2. すべてのユーザーが有効を選択した場合、ネットワークの場所に
  3. マクロのチェックを収納することでしょうマクロを実行するファイルを開くの間で「ファイル」を選択するようユーザーに求められますマクロExcelファイルを実行してから実行します

しかし、どうやってこれを行うのですか?私はいくつかの調査をして、VBSファイルを作成する必要があることを読んだ。

誰かが私に正しい道を教えてくれますか?コードを格納するVBSを呼び出すために.batchを書くべきですか?

ありがとうございます!

+0

VBScriptを使用することもできますし、VBAとして書き込んで、書き込んだマクロを含む.xlsmファイルを送信することもできます。 – YowE3K

答えて

0

私はこの種のことを行う非常に簡単なモジュールを書いています - 主に.basファイルとしてのモジュールのエクスポート/インポート。

あなたが参照(私は5.3である - 私は別のバージョンがあるかどうかわからない)「Microsoft Visual Basicのアプリケーション拡張性」有効にする必要がありますが、あなたはそれが

Public Sub CopyModule(Workbook1 As Workbook, ModuleName As String, Workbook2 As Workbook) 
''copies a named module between two workbooks VBA projects 
''also acts as a backup as it saves a copy of the module as at today's date 

'set name of exported module file 
wbname = Workbook1.name & "." & ModuleName & "." & Format(Now, "YYYYMMDD") 
Dim filename As String: filename = "H:\ASC\Reporting Files\CMT\" & wbname & ".bas" 

'define module to be copied from book 1 based on input arguments 
Dim CopyModule As VBComponent 
Set CopyModule = Workbook1.VBProject.VBComponents(ModuleName) 

'export module 
CopyModule.Export (filename) 

'import module into book 2 
Workbook2.VBProject.VBComponents.Import (filename) 

End Sub 
を働く必要があることをやった後、

ここでのアイデアは、すでに開いていた2枚のブックの間でモジュールをコピーし、同時にモジュールをバックアップすることでした。しかし、エクスポート/インポート行を別々のルーチンとして扱い、異なる時間に実行することができます。お役に立てれば!

+0

私はこの回答を削除し、それを元に戻しました - これはあなたが探しているすべての種類の解決策であるかどうかについては決まっていません - 私に知らせずに私は再削除します – danl

関連する問題