質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Q&A

解決済

2回答

16423閲覧

EXCELでリボンのボタンを押す処理を、VBSファイルに実装したいです

maresuke

総合スコア16

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

0グッド

0クリップ

投稿2016/10/03 09:41

編集2016/10/03 10:36

お世話になります。

独力での解決が困難な問題に直面したため、皆様のお力をお借りしたく、質問させていただきます。

あるxlamファイルを開くと、EXCELのウインドウが開き、アドインによってツールバーが追加されます。

ツールバーを開き、一番左のボタンをクリックすると、マクロが実行されます。

内部のマクロのコードをのぞいてみたところ、ボタンをクリックしたときには以下のコードが実行されることがわかりました。

vba

1CommandBars(ツールバー名).Controls(1).OnAction = "macroname" 2

このxlamファイルを使う作業を自動化したいと思いましたが、ある理由があり、このxlamファイルのマクロを改変することができません。

そこでxlamファイルのマクロを書き換えなくても自動化できるように、以下のようなvbsファイルを作成しました。

vbs

1'ExcelAppの開始 2Dim excelApp :Set excelApp = CreateObject("Excel.Application") 3excelApp.Visible=True 4 5'アドインファイルを開く 6excelApp.Workbooks.Open "xlamファイルの場所" 7 8'読み込むテキストファイルを開く 9 excelApp.Workbooks.Open "読み込むテキストファイルの場所" 10 11'マクロ起動 12 excelApp.Run "macroname" 13 14'テキストファイルに保存 15 excelApp.ActiveWorkbook.SaveAs "書き込むテキストファイルの場所" 16 17'ExcelApp終了 18excelApp Quit 19 20

このvbsファイルはxlamファイルを開くことも、テキストファイルを読み書きすることも正常に機能しますが、唯一マクロを実行する部分だけが動作しません。

そこで、上記の「マクロ起動」の部分を、マクロを起動させるのではなく、CommandBars(ツールバー名).Controls(1).OnActionに等しい処理を行うように書き換えたいと思います。

すなわち、ExcelAppで「ツールバーの一番左のボタンをクリックする」という処理を実装したいのです。

vbsを使って、EXCELに対してツールバーのボタンを押したと指示を出す方法を教えてください。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

力技ですが、SendKeys (キーストロークの送信)を使うというのはどうでしょうか。

投稿2016/10/03 12:34

Qoo

総合スコア1249

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maresuke

2016/10/05 11:23

ありがとうございます。 Sendkeysを使用したコードを作成することで、無事に操作できました。 マクロの処理終了の確認などで不安が残りますが、とりあえずこれで行こうと思います。
guest

0

ちょっと調べてみた限りでは、「リボンの中からタブを特定して、その中のコマンドを実行する」という処理をコード化するのはかなり手がかかりそうです。
⇒リボンの中から特定のTabを取得する

上記サイトではリボンの中から特定のタブを取得し、そのタブを選択するところまでできているようです。
ここからさらにそのリボンに含まれるコマンドを取得し、任意のコマンドを実行する必要があります。

そこまでするよりは、Qooさん提示のSendKeysを使う方法のほうが簡単に実現できそうです。
しかしSendKeysは疑似的にキーボードを操作を行っているようなものですので、Qooさんも仰られている通り力技ですね。
⇒参考サイト

一段階前の問題に戻ってしまうかもしれませんが、

唯一マクロを実行する部分だけが動作しません。

この部分を解決するという方法はないのでしょうか?

無理にリボンを操作するより現実的な気がするのですが・・

投稿2016/10/04 04:20

jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maresuke

2016/10/05 11:26

ありがとうございます。 私もマクロ名を直接動作させたほうがいいと思うのですが、どうやってもうまくいきませんでした。 なので今回の質問に至った次第です。
jawa

2016/10/06 00:29

>私もマクロ名を直接動作させたほうがいいと思うのですが、どうやってもうまくいきませんでした。 こちらでも以下のようなVBSを作成してみましたが、問題なくマクロ起動できました。 (試しにxlam,xlsともにソースを保護して実行したりもしてみましたが、それも問題なしでした。) ``` Dim ExcelApp Dim ExcelBookXLAM Dim ExcelBook Dim FilePathXLAM Dim FilePath FilePathXLAM= "C:\Users\TestUser\AppData\Roaming\Microsoft\AddIns\Test.xlam" FilePath = "C:\Work\Test.xls" Set ExcelApp = CreateObject("Excel.Application") Set ExcelBookXLAM = ExcelApp.Workbooks.Open(FilePathXLAM) Set ExcelBook = ExcelApp.Workbooks.Open(FilePath) ExcelApp.Visible = True ExcelApp.Run "Test.xlam!ShowMsgBox" ExcelBook.Close True ExcelBookXLAM.Close True ExcelApp.quit Set ExcelApp = Nothing Set ExcelBook = Nothing Set ExcelBookXLAM = Nothing ``` どんなエラーで処理できないのかが気になるところですが、本質問の内容からは少しずれてしまいますね。 そちらを追及するのであれば、別スレッドで練りましょう。 とりあえず解決できたようでなによりです(^-^)b
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問