• ベストアンサー

エクセルVBAでPDFやJPGファイルを開閉する

エクセルでPDFやJPGファイルを開くことは下記のコマンドで できたのですが開いたファイルを閉じる方法がわかりません。 開くのはとても簡単でしたが。 CreateObject("Shell.Application").ShellExecute XPATH & JPGNAME

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.4

> JPGのファイルを閉じるのは開くのに使用している > EXEから調べないといけないのですね そうですね。タスクマネージャーで調べられますよ。 該当アプリ右クリックでプロパティです。

DPS-DPS
質問者

お礼

ありがとうございました。

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.3

一行だと(PDFをacrord32.exeで開いている場合) CreateObject("Shell.Application").ShellExecute Environ("COMSPEC"), "/c taskkill /im acrord32.exe" このようなやり方がありますが、セキュリティソフトによっては実行を遮断されます。

DPS-DPS
質問者

お礼

ありがとうございました。

DPS-DPS
質問者

補足

すみません、VBAが少しわかる程度の知識なのでAPIはほとんどわからないので ご指示のとおり入力するだけですがJPGのファイルを閉じるのは開くのに使用している EXEから調べないといけないのですね。

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.2

No1の他には 以下のような方法もあるみたいです。 APIを使わないで実行中のタスク一覧を調べる http://officetanaka.net/excel/vba/tips/tips61.htm

DPS-DPS
質問者

お礼

ありがとうございました。

DPS-DPS
質問者

補足

回答ありがとうございます、EXCELからPDFやJPGが1行で開けたので喜んでいたら なんか閉じるのこんなに難しいのと思ってしまって驚きです。すみません。

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.1

標準モジュールで以下のようにやってみてください。 " - 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

DPS-DPS
質問者

お礼

ありがとうございます。 よくわからないのですが試してみます。

関連するQ&A