2017-06-16 10 views
-1

trigger.xlsmという同じディレクトリの下にある他のすべてのブックを通過して何らかの形に変換されるマクロを格納するブックがtrigger.xlsmとします。ブックを開くことなくブック内に保存されたVBAマクロを実行するにはどうすればよいですか?

私は間違いなくtrigger.xlsmを開き、マクロを実行できます。しかし、私は最初に開く必要がないように感じるtrigger.xlsmtrigger.xlsmを開かずにマクロを実行できますか?または、trigger.xlsmtrigger.exeファイルに変更して、trigger.exeファイルをクリックするだけでもいいですか?

これを達成するためにPythonなど他のプログラミング言語(私はPythonにもっと慣れています)に解決しなければならない場合は、どのようなサードパーティ製のパッケージをお勧めしますか?

これは自動化の設計に関する質問です。もしあなたが.exeファイルを使用するのではなく、他のアイデアを持っているなら、私に知らせてください!

+1

あなたのpersonal.xlsbにコードを書き込むと、それはあなたのために仕事をしませんか?コードが複数のユーザーによって使用されている場合、それは解決策ではありません – Ibo

+1

あなたの質問とコメントから誰かの回答に、どのような種類のExcelアプリケーションオブジェクトもなくExcelマクロを実行するように思えますか?あれは正しいですか? – YowE3K

+1

あなたはVBSファイルを作成し、Windowsスケジューラにあなた自身のためにそれを実行させることができます – Ibo

答えて

0

exeを作成せずにExcelを実行する方法は、Office.Interopアドインを作成することです。 startupイベントがあり、VBAコードを参照し、Run("nameOfYourMacro")を実行できます。

そして、あなたがPythonの交換here's the same questionを探しているなら。私は特にParfait Gasanaの答えが好きで、おそらくあなたに最も有益でしょう。

+0

私はExcelを起動したくないことに注意してください。マクロを実行するためにExcelを開く必要はありません。 – Nicholas

+0

2番目のオプションは、基本的に 'exe'を実行するのと同じですが、コードを保持することができます。それ以外の場合は、Excelと何も関係がないようにするには、 'exe'を作成するといいでしょう。* * Office.Interop'ライブラリを使って文書を編集する場合は、Excelを開くこともできますライブラリはExcelのインスタンスを作成します。どちらの時点で他のサードパーティのライブラリの方が高速ですが、パフォーマンスが重要な場合はおそらくすべてのコードを変更する必要があります。 – GibralterTop

+0

あなたの記事では、ちょうど '.xlsm'を開きたくないように聞こえました。混乱して申し訳ありません。 – GibralterTop

0

あなたのマクロはWorkbook_Open()というイベントであると仮定します。このコードを使用してブックを開くことができます。

Set objExcel = CreateObject("Excel.Application") 
    objExcel.Visible = true 

'<~assuming the file to be opened is in the same folder 
Set fso = CreateObject("Scripting.FileSystemObject") 
objpath = fso.GetParentFolderName(wscript.ScriptFullName) & "\[NameOfWorkbook].xlsx" 
Set objWorkbook = objExcel.Workbooks.Open(objpath) 

メモ帳でこれを貼り付けて、.vbsファイル拡張子(ワークブックと同じフォルダに)保存します。

関連する問題