skillup

技術ブログ

プログラミング全般

ExcelVBAでの他のアプリの起動

投稿日:

2日続けてExcelVBA。

やはり細かく分けてすぐにプロシージャごとにテストできるのはものすごく大きなメリットですね。本日は別のアプリ起動と操作に関して。

自分がやったことはWordとメモを起動してファイルパスを渡し、印刷設定をして、一括印刷、ということなんですが、別アプリだけに起動や操作が大変。

とりあえずの起動

メモ帳

下記コマンドで実行します。

ステータスにあたるものは起動したときの表示(最大化や最小化など)方式などの違いによるものです。詳しくはリンクを。

shell関数に関して

Word

操作

Wordはそのままコマンドがあったりするのですが(おそらくは同じMicrosoftなので共通の処理ができることを前提としているのでしょう。)、メモ帳に関しては完全に別のソフトになりますので、直接メソッドなどで命令をすることができません。

今回行いたかったのは印刷の細かい設定なので、直接制御するためには印刷設定のプロパティをいじらないといけません(両面印刷などの)。ただWindowsの印刷設定の細かい情報は見つけられなかったので今回私がとった方法はキー操作自体をExcelVBAにさせるということですね。※SendKeysという命令です。

SendKeysステートメント その1

SendKeysステートメント その2

要するにTABキーを2回おして、そのあとスペースを押すとか、そういう処理をExcelにさせるようにしました。

この方法は結構不安定で、以下のような欠点があります。

  1. ある動作が終わり切らないうちに次の動作が起こってしまうと、次の動作は当然受け付けられない。(SendKeysはコマンドの実行であって処理が終わったかは分からないからです。)
  2. イレギュラーなイベント(印刷中に紙がなくなって別のポップアップが上がってしまい、アクティブになる)

上記のような欠点がありますが、1に関してはもう実際に動かして重そうな処理は下記コマンドで待つようにしました。

アプリケーションを起動し動作させる 《Shell・SendKeys・Wait》

2に関してはこういったイベントを検知できるのか、いなかの調査をいまだしています。

何とか正常処理をされたという記録がとれればいいのですが、それができない場合、マクロ自体を強制終了させるしかなさそうですね・・・

-プログラミング全般

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

調査スキルについて

本日は実務でとても大切な不具合の発見方法について 通常のプログラマとして仕事をしておりますと、通常の実装よりは不具合時の調査のほうが難しいことが多々あります。 もちろんものによるんですが、経験のある人 …

no image

オブジェクト指向 クラスの設計と業務ロジックの整理

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にクラスの作り方について。 Contents1 クラス設計と業務ロジック1.1 要点1.2 感想 クラス設計と業務ロジック …

no image

OSコマンドインジェクション

Contents1 OSコマンドインジェクションとは?2 被害3 対策4 参考リンク OSコマンドインジェクションとは? OSに対する命令文を不正に紛れ込ませて攻撃させる手法。 被害 サーバー内のファ …

no image

小〜中規模程度のWEBアプリ作成で気をつけるべきこと

初見の処理系(ライブラリ操作)などは休日などで最小パターンを確認しておくこと。実務で何時間も悩むと非常にストレスがたまる テーブル設計命。あとで終えるようにトレースができるような値を入れておくこと。 …

no image

プログラミングを習得するときに必要な2つの大事なこと

元々私は塾で仕事をしていましたが、いろいろ紆余曲折ありましていまではWEBエンジニアとして仕事をしております。 エンジニアとしてのキャリアは3年ぐらいなので正直あまりないのですが、開発者と平行してプロ …