プロが教えるわが家の防犯対策術!

Sub TeraPad_SF()
'Keyboard Shortcut: Ctrl+Shift+Q
Dim RetVal As Integer
Dim sA As String
Dim sP As String
Dim sV As String
Dim sTxt As String

sV = ActiveCell.Value
sTxt = Left(sV, 1) & ".txt"
'開くファイル名
sA = "D:\WebCamRegistor\txtFolder\" & sTxt
'実行するプログラムのパス
sP = "C:\Program Files\TeraPad\TeraPad.exe "
RetVal = Shell(sP & sA, 1)
If RetVal = 0 Then MsgBox "起動に失敗しました"
AppActivate RetVal
SendKeys "%SF" & sV, True

End Sub

'現在セルの値でAdobeReaderでxx.pdfを検索する

Sub AdobeReader_SF()


'Keyboard Shortcut: Ctrl+Shift+Q
Dim RetVal
Dim sA As String
Dim sP As String
Dim sV As String
Dim sTxt As String

sV = ActiveCell.Value
sTxt = Left(sV, 1) & ".pdf"
'開くファイル名
sA = "D:\WebCamRegistor\pdfFolder\" & sTxt
'実行するプログラムのパス
sP = "C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.exe "
RetVal = Shell(sP & sA, 1)
If RetVal = 0 Then MsgBox "起動に失敗しました"
Application.Wait Now + TimeSerial(0, 0, 2)
AppActivate RetVal
SendKeys "^F", True

End Sub
Excel VBA で上は正常に動作しますが、下はAppActivate RetValでエラーとなります。修正の方法をお教えください。

A 回答 (2件)

Reader9.0ではエラー出ないんですが、10.0では確かにエラーになりますね。


#Acrobat Instance Window?

ただ、Shell関数の引数でvbNormalFocusを指定してますから、
そのままでもReader起動後アクティブになりませんか?
つまり
'AppActivate RetVal
この行をコメントアウトして実行してみてください。
ダメなら
AppActivate sTxt & " - Adobe Reader"
..のようにキャプション指定とか。

それでもダメな場合は FindWindow や SetForegroundWindow などのWin32API関数を使う事になるのかな..と。
    • good
    • 0
この回答へのお礼

(1)AppActivate RetValの行をコメントとする
(2)AppActivate sTxt & " - Adobe Reader"とする
の双方で正常に動作しました。

お教え大変にありがとうございました。

お礼日時:2012/08/14 11:55

こちら(Windows7 64bit & Excel2010 & adobeReader10.11)では


TeraPad_SF でもWait処理を入れないと エラー 5 が発生しました。

で、AdobeReader_SF の方なんですが エラー5が発生。
end-u さんのようにアプリケーションタイトルを指定したら
エラーにはなりませんでした。
Appactivate Stxt
なぜ、RetValでエラーになるのか・・・というと
タスクマネージャで見てみると、AcroRd32.exe *32 が二つ鎮座ましましていました。
もう片方のプロセスIDを返してくれたら・・・と思うのですが
この辺はナゾです。
    • good
    • 0
この回答へのお礼

nicotinism 様
 周囲の状況をお教え頂き大変ありがとうございました。
 また広範はご知識をお披露頂きました。
 大変に役に立ちました。
 

お礼日時:2012/08/14 11:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!