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

このQ&Aのポイント
  • Powerpointをコンテキストメニューに「読み取り専用」を追加するために以下のVBscriptを起動すると前面表示されません。
  • 起動コマンドは「wscript.exe」と「OpenPptAsReadOnly.vbs」を使用します。
  • 解決策としては、VBscriptの起動前に「objPPTApp.Visible = True」を追加することで前面表示が可能です。
回答を見る
  • ベストアンサー

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

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

  • ベストアンサー
回答No.1

こんにちは。 Set objWshShell = WScript.CreateObject("WScript.Shell") を使って、 objWshShell.AppActivate "Microsoft PowerPoint", True で、いかがでしょうか。

wcup2002
質問者

お礼

できました。ありがとうございました。 下のコードでも前面表示できるようです。 こちらなら他のアプリケーションでもいけるかもしれません。 Set objWSH = CreateObject("WScript.Shell") objWSH.AppActivate objPPTApp.Caption

関連するQ&A

  • VBSでADO接続に失敗した場合にフリーズする

    VBSでADO接続に失敗した場合にフリーズするのですが、何とか ならないでしょうか。 以下、わたしのコード(戻り値を返(WSCript.Quit Err.Number)したいので、On Error Resume Nextは外せません。) Option Explicit On Error Resume Next Dim objADO Set objADO = CreateObject("ADODB.Connection") objADO.Open "Driver={SQL Server};server=" & WScript.Arguments(0) & _ "; database=" & WScript.Arguments(1) & _ ";uid=" & WScript.Arguments(2) & _ ";pwd=" & WScript.Arguments(3) & ";" objADO.Execute(WScript.Arguments(4)) objADO.Close Set objADO = Nothing WSCript.Quit Err.Number

  • 【VBScript】ファイルのPathを表示させる

    初歩ですが、VBScriptの処理で質問させてください。 以下の処理を実現したいと思っています。 ・WScript.Arguments.vbsにファイルをドラッグした際に、 ファイルのPathを表示する ・2つ以上のファイルがドラックされた場合は、 アラームを上げて処理を中断する [WScript.Arguments.vbs] Dim Inti Dim oParam(1) for Inti=0 to 1 Set oParam(Inti) = WScript.Arguments MsgBox oParam(Inti) next このコードですが、他に何を追加すればよろしいでしょうか。 恐れ入りますが、回答いただければ幸いです。

  • Lhaz.exeが起動しない

    圧縮したいアイテムがスクリプトと同じ場所にある場合はLhaz.exeは動作しますが、それ以外の場所からでは動作しません。スクリプトはVBSで以下のとおりです。どなたかご教示お願いいたします。 Dim APPL1 APPL1 = "D:\Program Files\Lhaz\Lhaz.exe" Dim objWS Set objWS = WScript.CreateObject("WScript.Shell") Dim Fpath Dim objPM : Set objPM = WScript.Arguments If objPM.count = 0 Then objWS.Popup "ドラック&ドロップのみに対応!" : Wscript.Quit Fpath = objPM.Item(0) Set objPM = Nothing objWS.Run """" & APPL1 & """ /c " & Fpath, 1, True objWS.Popup "終了しました!" Set objWS = Nothing

  • VBSでWordの文字色変え

    VBSなのですが Wordファイルをドラッグしたら <と>で囲まれた文字の色を変更して保存する というものを考えております が <============= 部分でコンパイルエラー(ステーメントがありません) が発生します 初心者でさっぱりわからないのですが どなたかお助けを! よろしくお願いいたします 以下ソース Dim objWord Dim f Dim m If WScript.Arguments.Count<1 Then m="Hello!" MsgBox m WScript.Quit End If Set objWord=CreateObject("Word.Application") objWord.Visible=True For Each f In WScript.Arguments objWord.Documents.Open f objWord.Selection.Find.ClearFormatting objWord.Selection.Find.Replacement.ClearFormatting objWord.Selection.Find.Replacement.Font.Color = wdColorRed With objWord.Selection.Find .Text = "\<[!\>]@\>" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With objWord.Selection.Find.Execute Replace:=wdReplaceAll '<======================= objWord.ActiveDocument.SaveAs f&".doc" objWord.ActiveDocument.Close Next objWord.Quit WScript.Quit

  • FIREFOXでWebページを表示できるVBS

    VBS超初心者です。 10年くらい前に作られたVBSを修正したいのですが、さっぱりわからないため助けてください。 勤務先で、社内イントラのデータベースを参照するときに使っているVBSです。 【いまの挙動】 VBSを起動すると文書番号の入力画面が表示→入力してEnter→IEで該当ページ(http:★★★/文書番号)が表示されます。 【やりたいこと】 FIREFOXで表示したい。(先日のIE脆弱性の騒ぎの影響で、上から指示があり。。) 今は以下のようなソースで使ってます。 ---------------------- Sid = InputBox("ID を入力。") Sid = Trim(Sid) If Sid = "" Then WScript.Quit If Len(Sid) <>14 Then WScript.echo "ID が不正。" WScript.Quit End If Set objie = WScript.CreateObject("internetexplorer.Application") objie.navigate2 "http://★★★/" & Sid objie.Visible = True WScript.Quit ---------------------- 「internetexplorer.Application」ではダメなことはわかるのですが それ以上は私の知識ではお手上げでした。。 どなたか詳しいかた、アドバイスお願いします。

  • vbsでexcelのクリアとフォームの表示をしたい

    お世話になっております。 vbsの以下の記述でexcelを開いています。 開くところまでは行くのですが、その後のsheet1のデータのクリアとUserForm1の表示がどうしてもできません。 申し訳ありませんが、どなたかおわかりの方、教えていただけないでしょうか。 宜しくお願いいたします。 Dim oApp Dim objWshShell Dim scriptPath 'Excelオブジェト作成 Set oApp = CreateObject("Excel.Application") 'WScript.Shellオブジェクト作成 Set objWshShell = CreateObject("WScript.Shell") oApp.Visible = True '不可視にする oApp.UserControl = True 'Excelファイルを開く scriptPath = WScript.ScriptFullName scriptPath = left(scriptPath,len(scriptPath)-len(WScript.ScriptName)) oApp.Workbooks.Open scriptPath & "共同資料.xlsm"

  • VBScriptで、既に開いているIEを画面の最前面に表示させる

    VBScriptで、既に開いているIEを画面の最前面に表示させる OS:WindowsXP SP3 ブラウザ:InternetExplorer6 期待している機能としましては、IEが開いていない場合は新規にIEを立ち上げ、既に開いている場合は、それを画面の最前面に表示させる(最小化されている場合はそれを解除する)といった感じです。 教えて頂きたいのは、IEを画面の最前面に表示させる方法(最小化の場合はそれを解除)です。 現状のソースを記載します。おかしな点がありましたらご指摘よろしくお願い致します。 Dim objShell Dim objWindow Dim objIE Dim ieFlag ieFlag = False '開いているウィンドウからIEを検索 Set objShell = CreateObject("Shell.Application") For Each objWindow In objShell.Windows If TypeName(objWindow.Document) = "HTMLDocument" Then ieFlag = True Set objIE = objWindow Exit For End If Next 'IEが開いていたらそれを画面の最前面に、そうでないなら新規で開く If ieFlag = True Then 'IEを画面の最前面に又は、最小化解除 Else '新規にIEを開く Set WshShell=Wscript.CreateObject("Wscript.Shell") WshShell.Run("http://www.google.co.jp/") WScript.Sleep(4000) End If

  • vbsよりIEをアクティブに開きたい

    お世話になります。 Windows7Pro サーバー上にあるhtmlファイルをvbsより開いてます。 また、5秒で閉じるようにしてます。 現状、vbsを実行するとhtmlファイルが開くことは開くの ですが、他ウィンドウの後ろになってしまいます。 どこをどうすれば開いたhtmlファイル(IE)を最前面で起動 することができますでしょうか。 【vbsの内容】 Option Explicit On Error Resume Next Dim strUrl ' 表示するページ Dim objIE ' IE オブジェクト strUrl = "サーバー上にあるhtmlファイルのパス" Set objIE = WScript.CreateObject("InternetExplorer.Application") objIE.ToolBar = False If Err.Number = 0 Then objIE.Navigate strUrl objIE.Visible = True objIE.Width = 800 objIE.Height = 400 objIE.Top = 0 objIE.Left = 480 WScript.Sleep 5 * 1000 objIE.Quit Else WScript.Echo "エラー:" & Err.Description End If 【htmlの内容】 <html> <head> <title>テスト</title> </head> <BODY> <IMG src="画像のパス"> <font size="7">TEST</font> </div> </body> </html> ご教示の程、宜しくお願い致します。

  • VBS★Excel★スクリプト★引数の取得

    VBSは初心者というか、やったことがありません。ど素人になります。 説明がとてもぎこちないのもその辺からだと思いますが、宜しくお願いします。 VBのシステムからVBSファイル <内容> Dim wbname Dim mypara Dim file_path Dim oApp file_path = "C:\share\Excel\1234.xls" Set oApp = CreateObject("Excel.Application") oApp.Visible = True On Error Resume Next oApp.UserControl = True oApp.Workbooks.Open "C:\share\Excel\1234.xls" Set oApp = Nothing WScript.Quit を指定して起動すると(1)Excelで作成したシステムが稼動するように作りたいのですが、(1)を起動する環境設定があり、C:\Documents and Settings\MBS\デスクトップ\1111.vbs #CODE #CODEが引数になります。 その#CODEをVBSで取得したいのですが、単体で1111.vbsを動かすとExcelファイルは動きます。 元のシステムではexeファイルしかみないようなのですが、例えば電卓とかメモ帳とかは動きます。vbsファイルだけは動きません。どのようにすれば動くかアドバイスをお願いします。 宜しくお願いします。

  • VBSバックアップ

    バックアップスクリプト(VBS)について教えて下さい。 単純にディレクトリをバックアップするスクリプトは、出来たのですが これに付加機能を与えたいです。 ◆世代管理をしたい。 ◆iniファイルから、バックアップ元と先、管理する世代等の情報を読み込みたい。 <bkup.vbs> Option Explicit Const ForReading = 1 '読み込み Const ForWriting = 2 '書きこみ(上書きモード) Const ForAppending = 8 '書きこみ(追記モード) Dim objFileSys Dim objShell Dim strCopyFrom Dim strCopyTo Dim strToDir Dim strNewDate WScript.echo "バックアップを開始します" Set objFileSys = CreateObject("Scripting.FileSystemObject") Set objShell = CreateObject("WScript.Shell") strNewDate = Year(Now) & _ Right(("0" & CStr(Month(Now)+0)),2) & _ Right(("0" & CStr(Day(Now)+0)),2) strCopyFrom = "C:\vbs" strToDir = "C:\backup" strCopyTo = objFileSys.BuildPath(strToDir,strNewDate) If objFileSys.FolderExists(strCopyTo) = True then WScript.echo "指定のパスには既にディレクトリが存在する為、" & _"バックアップ処理を中断します。" WScript.Quit Else objFileSys.CopyFolder strCopyFrom,strCopyTo WScript.echo "バックアップ処理は正常に完了しました。" End If Set objFileSys = Nothing Set objShell = Nothing 宜しくお願い致します。