- ベストアンサー
エクセルVBAでPDFやJPGファイルを開閉する
エクセルでPDFやJPGファイルを開くことは下記のコマンドで できたのですが開いたファイルを閉じる方法がわかりません。 開くのはとても簡単でしたが。 CreateObject("Shell.Application").ShellExecute XPATH & JPGNAME
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> JPGのファイルを閉じるのは開くのに使用している > EXEから調べないといけないのですね そうですね。タスクマネージャーで調べられますよ。 該当アプリ右クリックでプロパティです。
その他の回答 (3)
- kkkkkm
- ベストアンサー率66% (1725/2595)
一行だと(PDFをacrord32.exeで開いている場合) CreateObject("Shell.Application").ShellExecute Environ("COMSPEC"), "/c taskkill /im acrord32.exe" このようなやり方がありますが、セキュリティソフトによっては実行を遮断されます。
お礼
ありがとうございました。
補足
すみません、VBAが少しわかる程度の知識なのでAPIはほとんどわからないので ご指示のとおり入力するだけですがJPGのファイルを閉じるのは開くのに使用している EXEから調べないといけないのですね。
- kkkkkm
- ベストアンサー率66% (1725/2595)
No1の他には 以下のような方法もあるみたいです。 APIを使わないで実行中のタスク一覧を調べる http://officetanaka.net/excel/vba/tips/tips61.htm
お礼
ありがとうございました。
補足
回答ありがとうございます、EXCELからPDFやJPGが1行で開けたので喜んでいたら なんか閉じるのこんなに難しいのと思ってしまって驚きです。すみません。
- kkkkkm
- ベストアンサー率66% (1725/2595)
標準モジュールで以下のようにやってみてください。 " - Adobe Acrobat Reader DC"はPDFを開いたときにタイトルバーに表示されるものを記載してください。ファイルのプロパティでコピーできます。 JPGの場合も開いた時のタイトルバーに表示されたものを記載してください。 Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Public Const WM_SYSCOMMAND = &H112 Public Const SC_CLOSE = &HF060& Sub Test() Dim hwnd As Long Dim FileName As String 'PDFの場合です。 FileName = "abcdefg.pdf" hwnd = FindWindow(vbNullString, FileName & " - Adobe Acrobat Reader DC") If hwnd <> 0 Then Call SendMessage(hwnd, WM_SYSCOMMAND, SC_CLOSE, 0) hwnd = 0 End If End Sub
お礼
ありがとうございます。 よくわからないのですが試してみます。
お礼
ありがとうございました。