PowerShellでExcel画面を最前面に

このQ&Aのポイント
  • PowerShellを利用してExcelの画面を最前面に表示する方法について教えてください。
  • ExcelをPowerShellから操作する際に、画面が最前面に表示されない問題が発生しています。他のプログラムも同時に実行している場合には特に問題が生じます。この問題を解決する方法を教えてください。
  • VBScriptではCreateobject("WScript.Shell").AppActivate("VBS_01.xlsx")を使用することで、Excelを最前面に表示することができます。しかし、PowerShellでは同様の方法が使えないようです。PowerShellでExcelの画面を最前面に表示する方法をご教示ください。
回答を見る
  • ベストアンサー

PowerShellでExcel画面を最前面に

PowerShellを使いExcel操作の方法を勉強しております。別のソフトからPowerShellのコマンドをps1ファイルにエクスポートしスクリプトを実行することによりExcelを開いたり閉じたり等の簡単な操作までは出来るのですが、Excelがアクティブになっているにもかかわらずスクリプトを実行したプログラムの後ろになったままです。2つだけの場合実行プログラムを最小化するように設定すればどうにかExcelだけがウィンドウに残るのでなんとかなるのですが、他のプログラムも同時に実行している場合後ろになったままです。 VBScriptの場合 Createobject("WScript.Shell").AppActivate("VBS_01.xlsx") で最前面になりますがPowerShellの場合どうすれば出来るのか御教示お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ballville
  • ベストアンサー率47% (233/487)
回答No.3

これでもいけます add-type -assembly microsoft.visualbasic [microsoft.visualbasic.interaction]::AppActivate("ウインドウのタイトル") お好きなほうで

turu575
質問者

お礼

色々ご迷惑をおかけします。出来ました!! # Excelを操作する為の宣言 $excel = New-Object -ComObject Excel.Application # 可視化する $excel.Visible = $true # 既存のExcelファイルを開く $book = $excel.Workbooks.Open("I:\TEST\ABC.xlsx") $book.AppActivate("I:\TEST\ABC.xlsx") #シートの選択 $sheet = $excel.Worksheets.Item(2) #選択したシートをアクティブに $sheet.Activate() #セル番号を指定してテキストを書き込む $sheet.Cells.Item(3,6) = "PowerShellでExcelファイル1939" # Excelを前面に add-type -assembly microsoft.visualbasic [microsoft.visualbasic.interaction]::AppActivate("ABC.xlsx") #変数を開放(消去) Remove-Variable excel [GC]::Collect() PowerShellからVB.NETの機能・・何とか迄は検索で出ていたのですが、当方のプログラムの知識レベル皆無に等しため全く内容が理解できず、直接的表現であちこち探し回り質問に至った次第です。本当に有難うございます。

その他の回答 (2)

  • ballville
  • ベストアンサー率47% (233/487)
回答No.2

>new-object -com ("WScript.Shell").AppActivate("I:\TEST\ABC.xlsx") ↓↓↓↓↓↓↓↓↓↓↓↓↓↓ (new-object -com "WScript.Shell").AppActivate("I:\TEST\ABC.xlsx")

turu575
質問者

補足

度々の回答有難うございます (new-object -com "WScript.Shell").AppActivate("I:\TEST\ABC.xlsx") は最初に追加して出来なかったので、何か間違っていたのか試行した最後のものをそのままコピペしたもので申し訳ありません。

  • ballville
  • ベストアンサー率47% (233/487)
回答No.1

vbsと同じです。 (new-object -com "WScript.Shell").AppActivate("VBS_01.xlsx")

turu575
質問者

補足

早速の回答有難うございました。下記のようにコマンドを書き # Excelを操作する為の宣言 $excel = New-Object -ComObject Excel.Application # 可視化する $excel.Visible = $true # 既存のExcelファイルを開く $book = $excel.Workbooks.Open("I:\TEST\ABC.xlsx") new-object -com ("WScript.Shell").AppActivate("I:\TEST\ABC.xlsx") #追加したコマンド #シートの選択 $sheet = $excel.Worksheets.Item(2) #選択したシートをアクティブに $sheet.Activate() #セル番号を指定してテキストを書き込む $sheet.Cells.Item(3,6) = "PowerShellでExcelファイル1939" #変数を開放(消去) Remove-Variable excel [GC]::Collect() 試してみました。 結果、残念ながら最前面にはなりませんでした。コードの書き方が間違っている気がする $を付けないといけない? # 最前面に表示:する $form.Topmost = $True みたいに VBSの場合には直接、コマンドのエクスポートと同時にVBSファイルを実行が出来ましたが、PowerShellの場合エクスポートと同時にPS1ファイルが起動できないため新たに起動命令を入れる必要がある等条件が違うので何とも言えない環境ですが・・ なお、前の方法でも最小化の前にスクリプト停止時間を加えると最前面ではないが2番目になるのでExcelが前面になる。

関連するQ&A

  • vbsでexcelファイルを印刷したいのですが、印刷部数の設定がどうし

    vbsでexcelファイルを印刷したいのですが、印刷部数の設定がどうしてもわかりません。 他で見つけたスクリプトですが…。 Set obj = CreateObject("Excel.Application") Set WSHShell = CreateObject("Wscript.Shell") Set objWkBk = obj.Workbooks.Open("D:\TEST.xlsx") obj.ActiveWindow.SelectedSheets.PrintOut() obj.quit() Set obj = Nothing ご教授お願いいたします。

  • ExcelVBA内のVBSで別ブックを開いたとき

    ブック1で、誰のPCからでもセキュリティの警告を出さないようにブック2を開くVBSを実行し、ブック1で使用した変数xの値をブック2に渡すということをやりたいのですが、上手くいきません...。 ブック2を開く所まではできたのですが、ブック2のセルに変数xの値を入れようとすると、エラー「インデックスが有効範囲にありません。」が発生し、そもそもブック2をアクティブにできません。 ファイル名・パス等は絶対に間違えていないと思います。 原因とどう修正すれば良いか、教えて頂けないでしょうか。 下記が簡略化したプログラムになります。 Book1のプログラム Sub Book1() Dim x As String x = "aaa" CreateObject ("Shell.Application") CreateObject("Shell.Application").ShellExecute "○○.vbs" Workbooks("Book2.xlsx").Sheets("Sheet1").Range("A1") = x End Sub ---------------------------------------------------------------------------------------------------------- VBSのプログラム Dim strExcFileName Dim objExcApp strExcFileName ="○○¥Book2.xlsx" Set objExcApp = WScript.CreateObject("Excel.Application") objExcApp.Visible = True Call objExcApp.Workbooks.Open(strExcFileName,,True) objExcApp.DisplayAlerts = False WScript.Quit 以上、宜しくお願い致します。

  • WSHスクリプトでブラウザ更新

    教えてください。 WSHスクリプトでブラウザの更新をF5ではなくてControl + Rしたいのです。 Set WshShell = WScript.CreateObject("WScript.Shell") WScript.Sleep 2000 WshShell.AppActivate "テスト" WScript.Sleep 2000 WshShell.SendKeys "^R" WScript.Sleep 2000 WScript.Echo "終了" 最初の一回目の実行時はできるのですが、それ以降更新してくれません。 よろしくお願いいたします。

  • VBSからのサーバサイドのEXEの実行

    こんにちはSHIRAOといいます。 WScript.Shellを使用してサーバにあるEXEファイルを 起動しようと思っているのですがどうもうまくいきません。WScript.Shellを使用する時に何か設定しなければならないことがあるのでしょうか? <script language="vbscript"> Function Window_OnLoad : Set objShell = WScript.CreateObject("WScript.Shell") objShell.Run "C:\WINDOWS\system32\notepad.exe" : End Function </script>

  • VBSで起動したアプリが前面表示しない

    Powerpointをコンテキストメニューに「読み取り専用」を追加するために以下のVBscriptを起動すると前面表示されません。 どうしたら前面表示されますでしょうか? 起動コマンド wscript.exe "C:\Program Files\Microsoft Office\Office14\OpenPptAsReadOnly.vbs" "%1" 以下がVBscript(OpenPptAsReadOnly.vbs)です。 Dim strPPTFileName Dim objPPTApp '引数のチェック If WScript.Arguments.Count <> 1 Then WScript.Quit 'ファイル名取得 strPPTFileName = WScript.Arguments(0) '起動 Set objPPTApp = WScript.CreateObject("Powerpoint.Application") objPPTApp.Visible = True '読み取り専用で開く Call objPPTApp.Presentations.Open(strPPTFileName,True) '終了処理 Set objPPTApp = Nothing WScript.Quit

  • WSH(Excel出力)の同時実行数の制限

    WSHでExcel出力処理を行っているのですが、 同時実行数が30を超えると、Excelが不安定になるようで、  Set objBook = objExcelApp.Workbooks.Open("C:\xxx\zzz.xls", 0, False) の行で、  エラー:WorkbooksクラスのOpenプロパティを取得できません。  コード:800A03EC  ソース: Microsost Office Excel というエラーが発生して異常終了してしまうのです。 同時実行数の上限など、また、それ以外の原因について、 ご存知の方がいらっしゃいましたら、コメント頂ければ幸いです。 ちなみに、同時実行数が30未満の場合は、正常終了するので、 コードの内容には、問題ないと思っております。 Excelのバージョンは、2003で、ファイルの構成は、 wsfファイル(yyy.wsf) vbsファイル(wsh_excel.vbs)の2ファイルを配置し、 以下のような形で、実行しています。 Set WshShell = Server.CreateObject("WScript.Shell") Set objBatch = WshShell.Exec(strCmd)  ※ strCmdには、以下のような値が設定されます。     cmd.exe wscript.exe "C:\xxx\yyy.wsf" ■ yyy.wsfの内容 <?xml version="1.0" encoding="shift_jis" ?> <job id="zzz"> <script language="VBScript" src="wsh_excel.vbs"/> <script language="VBScript">  Call Excel_Main() </script> </job> ■ wsh_excel.vbsの内容(抜粋) Sub Excel_Main()  Set objExcelApp = Wscript.CreateObject("Excel.Application")  Set objBook = objExcelApp.Workbooks.Open("C:\xxx\zzz.xls", 0, False)     :     : End Sub

  • vbscriptでNUMLOCK判定したい

    vbscriptでNUMLOCK判定したい お世話になります。 こちら(http://support.microsoft.com/kb/314879/ja)を参考にNUMLOCKキーを操作することは出来たのですが、現在のNUMLOCKの状態を知るにはどうしたらよいのでしょうか? よろしくお願いいたします。 以下vbs記述内容 set WshShell = CreateObject("WScript.Shell") WshShell.SendKeys "{NUMLOCK}"

  • JP1からvbs(PSExec)が起動できない

    突然失礼します。 以下のサーバーAにあるvbsを、JP1から起動しようとしていますが、うまく起動しないので、もし原因が分かる方がいたら、ご教授願いたいです。 起動しようとしているサーバーAの「test.vbs」は、簡単に言うと、PsExecを利用して、サーバーBの「hoge.bat」を実行する内容です。 ***test.vbs*** Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "PsExec.exe サーバーBIPアドレス -u 実行ユーザ -p 実行ユーザーパスワード cmd" WshShell.AppActivate "cmd " WScript.Sleep 3000 WshShell.SendKeys "cd C:\" WshShell.SendKeys "{enter}" WshShell.SendKeys "hoge.bat" WshShell.SendKeys "{enter}" WScript.Sleep 10000 WshShell.AppActivate "cmd" WshShell.SendKeys "exit" WshShell.SendKeys "{enter}" ************************ 上記バッチを手動で実行するとうまくいくのですが、 JP1で起動しようとすると、うまくいきません。 そもそもPsExecが実行出来ていないかも。。。。 宜しくお願いします。

  • VBScript(WScript)のバッチファイル実行

    お世話になります。 VBScriptで困っています。 ご存知の方、ご教示願えますでしょうか。 Windowsでバッチファイルを実行したときに、DOS画面(コマンドプロンプト)が一瞬パッて表示されるかと思います。 現在開発中のシステムで、プログラムからバッチファイルを自動で実行する処理を入れております。 通常ならばバッチファイルを実行した場合、DOS画面が表示されてしまいますが DOS画面を出さないようにプログラムを組んでいます。 つまり、VBScriptからバッチファイルを実行しております。 以下、VBScriptのソースを記載します。 Set objShell = WScript.CreateObject("WScript.Shell") fcresult = objShell.Run("C:\abc.bat", 0, True) wscript.quit fcresult 上記のVBSを実行すると、必然的に「abc.bat」が実行されます。 しかし、現在僕が使っている環境ですとDOS画面が表示されません(←これがやりたいこと) しかし、お客さんの環境で同じ様にVBSからバッチファイルを実行すると 「C:\WINDOWS\System32\CScript.exe」という名前でDOS画面が起動されてしまいます。 周りの環境でもVBSからバッチをたたくような処理を行ってみましたが、DOS画面が起動されず。。。 正直、再現が難しいため大変困っております。 お客さんの環境では100%再現されます。 全くもって原因がつかめておりません。 Windowsのセキュリティの設定でしょうか!? ご存知の方いらっしゃいましたら、知恵をお貸しください。 よろしくお願いいたします。

  • vbs で jar ファイルを起動させたいのにエラーがでる

    VBS で JAR を起動しようとするとエラーがでてしまって起動できなくて困っています。 ** test.vba ** Dim oShell Set oShell = WScript.CreateObject ("WSCript.shell") oShell.run "PLAY.jar",0 Set oShell = Nothing ************ と記述した test.vba をダブルクリックすると Windows Script Host が 「この操作に対して指定されたファイルには、アプリケーションが関連付けられていません。」 というエラーを出します。 2台のマシンで試してみましたがデスクトップはOKでもノートパソコンではNGでした。 そのマシンは WindowsXP Professional IE 6 ですが、2台ともその部分は同じです。 マイコンピュータからフォルダオプションを見たところ拡張子 VBS は ファイルの種類 VBScript Script File に関連付けられているようです。 コマンドラインから java -jar PLAY.jar と入力して実行すると起動できます。 なにが悪いのかさっぱりわかりません。 よろしくお願いします。

    • ベストアンサー
    • Java