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

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

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

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

Q&A

解決済

1回答

1551閲覧

VBAによるInstallShield Wizardの操作

ko-ji-

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

0グッド

0クリップ

投稿2021/05/19 09:03

【PC環境】
Windows 10
Excel2016 32bit(office365)

【問題の内容】
ダウンロードしてきた実行ファイルを開きInstallShield Wizard内の
インストールボタンや次へボタンをクリックしたい

【実現したいこと】
クリック以外の対応でもインストールが完了させたい

【エラーメッセージ】
VBAの処理としてはクリックしたことになるのでエラーメッセージは無し

【試したこと】
SendMessageにてクリック(ウィンドウやボタンのハンドル取得は確認)
ボタンをアクティブにしてクリック⇒反応なし
ボタンをアクティブにして左クリックを押す・待機・離す⇒反応なし
(Windows Serverでは動作)

ウィンドウをアクティブにしてCreateObject("WScript.Shell")の
SendKeysで{ENTER}を送り付ける⇒反応なし

ウィンドウをアクティブにして通常のSendKeysで{ENTER}を送り付ける⇒反応なし

ウィンドウをアクティブ最前面に移動しSetCursorPosにてマウスカーソルを移動。
mouse_eventで左クリックを押す・待機・離す⇒反応なし

【コード抜粋】
APIの宣言省略
'hWnd1はウィンドウハンドル・hButton1はボタンハンドル
SetForegroundWindow hWnd1
Application.Wait [Now()] + 1000 / 86400000: DoEvents
Call SendMessage(hButton1, &H6, 1, 0&) 'ボタンをアクティブにする
Call SendMessage(hButton1, &HF5, 0, 0&) 'ボタンをクリックする

Call wshShell.SendKeys("{ENTER}", True)

SendKeys "{ENTER}", True

'x1・y1はマウスカーソルの位置
SetCursorPos x1, y1
Application.Wait [Now()] + 1000 / 86400000: DoEvents
mouse_event &H2 'マウスを左クリック(押す)
Application.Wait [Now()] + 500 / 86400000: DoEvents
mouse_event &H4 'マウスを左クリック(離す)

【疑惑に思っていること】
InstallShield Wizardがウィルス対策(?)等の目的で
自動操作による入力を受付しない様にしているとしたら
VBAによる操作でインストール作業を自動化すること自体が不可能なのではないか?

宜しくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

InstallShieldで作ったインストーラであれば、サイレントインストールに対応しています。
(あまり古いインストーラだとダメですが)
VBAでRPAまがいのことをしなくても、標準で用意された方法を使用する方向を検討しましょう。

基本的な機能で作成されたインストーラーであれば、オプション一発でサイレントインストールできる可能性があります。

参考:
https://tec-world.networld.co.jp/faq/show/1745

そうでなくても、一度インストーラを実行してユーザー操作を記録すれば、その記録をもとにサイレントインストールが可能です。

参考:
https://software.fujitsu.com/jp/manual/manualfiles/M050009/B1WN6261/01Z200/instad/inst0080.htm
富士通の製品の話ですが、どのインストーラも手順は一緒なので参考資料の通りに実行すれば良いでしょう。

投稿2021/05/23 08:40

hope_mucci

総合スコア4447

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

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

ko-ji-

2021/05/24 06:29 編集

回答ありがとうございます。 サイレントインストールはインストーラーにその設定がされていないと出来ないものと思い込んでいたので調べてみたいと思います。
ko-ji-

2021/06/01 02:55

結果報告が遅くなってしまい申し訳ありません。 コマンドプロンプトで /s 等のオプションをつけ動作確認をしてみましたが 「書庫が開けません」となりインストールが実行されないため インストーラーを作成している会社に確認をしたところ 対応していないと回答をいただきました。 協力会社なので対応できないか等、今後打ち合わせをしてみます。 ありがとうございました。
hope_mucci

2021/06/01 06:36

蛇足ですが、私もコメントのケースと同じように、サイレントインストールしたいのでインストーラを作成しなおしてほしいという依頼を納入元から受けて対処したことがあります(自社開発分以外にも他者開発のソースを持ち込まれたのでそれ相応の手間賃をいただきました) 瑕疵対応ではないのでタダにはならないでしょう。インストーラの作成方法によりそのまんま以降できないケースもあるので現実的な金額で発注してあげてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問