• ベストアンサー

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

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

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.4

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

DPS-DPS
質問者

お礼

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

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答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
  • ベストアンサー率65% (1618/2457)
回答No.2

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

DPS-DPS
質問者

お礼

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

DPS-DPS
質問者

補足

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

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答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

  • エクセルのVBA

    お世話になります。 エクセルのVBAで,PDFを開くよう組んでいます。以下がそのVBAです。 CreateObject("Shell.Application").ShellExecute "C:\Users\コンピュータ名\Desktop\フォルダ名\ファイル名.pdf" このエクセルとPDFを別のパソコンに移すと,リンクが切れてPDFが開かなくなってしまいます。 どのようにすれば,別のパソコンに移してもそのまま開くことができますか。パワポなど,ほかのソフトも同様に,リンクが切れてしまいますので,ご教授願います。

  • VBで「.tif」または「.pdf」形式のファイル印刷

    VBで「.tif」または「.pdf」形式のファイルを一度に複数印刷したいのですが、何かよい方法はないでしょうか。 一応、 fname = "ここにファイルのパスと名前" CreateObject("shell.application").shellexecute fname でファイルを開くようにしたのですが、ここから先が分かりません…。 よろしくお願いします。

  • VBによるExcelファイルの開き方を教えて下さい。

    ※VBプログラムからエクセルを起動し技術資料を作成するものです [1]新規ファイルをオープンした場合は、書き込みは正常に作動します。 [2]既設のファイルは、Shell関数でエクセルファイルをオープンしています。 [3]データ書き込みで、下記のエラーが発生します。 「NullReferenceExceptionはハンドルされませんでした。」 (オブジェクト変数又はWithブロック変数が設定されていません) [4]ファイルのオープンコードは下記のとうりです。 Private Sub newF_Open() Me.Hide() xlApp = CreateObject("Excel.Application") xlBook = xlApp.workbooks.add xlSheet = xlBook.sheets("sheet1") xlBook.application.Visible = True Me.Show() MsgBox("Excelファイルは開きましたか", 0, "確認") End Sub 'rbtNEWボタンでの変更記述 Private Sub oldF_Open() Dim Ret As Object Dim Shell As Object With OpenFileDialog1 .Title = "ファイルの選択" .CheckFileExists = True .RestoreDirectory = True End With Me.Hide() Ret = OpenFileDialog1.ShowDialog() If Ret = Windows.Forms.DialogResult.OK Then End If Shell = CreateObject("Shell.Application") Shell.shellexecute(OpenFileDialog1.FileName, , Application.StartupPath, "open", 1) MsgBox("Excelファイルは開きましたか", 0, "確認") Me.Show() End Sub 'rbtOLDボタンでの変更記述 ※既設ファイルへの認識が、新規オープンファイルと異なる為だと思い ますが、 解決方法を、教えてください。

  • ShellExecute でショートカットを開く

    Visual Basic 6.0 コマンドボタンでリンク先のファイルを開くプログラムを作成しています。 コマンドボタンクリック時に、下記ステートメントを入れているのですが リンク先が、ショートカットの場合エラーして開けません。(見つかりませんのエラー) リンク先全てを開くことは出来ないのでしょうか? すみませんがご教授願います。 CreateObject("Shell.Application").ShellExecute C:\AAA 'AAA = ショートカット名

  • PDFからJPGへ

    雑誌関係をPDFに落としましたが、それをJPGにする方法を教えて下さい。 又、PDFをエクセルに転写する方法も教えてください。 以上

  • エクセル vba DoEventsをぬける方法

    Ghostscriptでエクセルのコマンドラインを使ってPDFのファイルをTIFFのファイルに変換しています。PDFの一部のページが変換できない時、DoEventsでLoopしてしまいます。TIFFファイルはできているのですが Result.Statusが0のママで終了のフラグ 1 がたたないようです。Loopをぬける方法はないものでしょうか。 'PDFをTIFFにする PDFMEIのPDFファイルをHENKANのTIFFファイルにする cmd = XPATH & "gs\gs9.27\bin\gswin32c.exe -dSAFER -dBATCH -dNOPAUSE _ -sDEVICE=tiffgray -r200 -sOutputFile=" & XPATH & HENKAN & " " & XPATH & PDFMEI Set Result = WSH.exec("%ComSpec% /c " & cmd) Do While Result.Status = 0 DoEvents 'ココで止まってしまう Loop

  • EXCElのVBAからPDFを開き印刷する。

    エクセルのフォームからダイヤグロボックスを開いて、pdfファイルを選択し開き印刷したいのですが、いろいろやったのですが、ファイルが開きません。単純にファイル名を指定して開き印刷するのは出来るのですが。ダイヤグロボックスから開きたいのでどなたかご指導いただけませんか? 1.直接アクロバットリーダーからファイルを開き印刷   Private Sub CommandButton2_Click()    PrinterName = Application.ActivePrinter    Filename = "C:\○○\××××.pdf" Set myShell = CreateObject("WScript.Shell") myShell.Run ("AcroRd32.exe /t " & Filename) End Sub 2.ダイヤグロボックスからファイルを開く Private Sub microbe_Click() ChDrive "R" ChDir "R:\○○\××\△△" OpenFileName = Application.GetOpenFilename("PDF Documents,*.pdf")   ??? end sub よろしくお願いします。

  • pdf→jpgにする方法

    送られてきたファイル(ワード、エクセル)をjpg画像化したい。 操作の流れ Word(画像入り文書)→印刷→クロセPDF→ツール→スナップショット→ファイル名指定→クリップボード→? pdf変換ソフト(フリーソフト)→画像JPGにする方法どなたか教えていただきたい。 satukien

  • PDFファイルをjpgへ

    PDFファイルをjpgにする良いフリーソフトがありましたら教えてください! 条件としては ・PDF内にある複数の画像を一枚一枚jpg等に出来ること ・画質が劣化しないこと です。 出来るだけ簡単に出来る方がいいですが、とりあえず上の条件を満たしていてフリーソフトであれば大丈夫です。

  • PDF各ページを各JPGファイルにする方法

    を教えて下さい。御願いします。 例) 一つのPDFファイル内に10ページの画像があったとします。 その各ページ画像ファイルを個々のJPGファイルにする方法を知りたいです。 PDF1ファイル(10ページ) ⇒ 10個のJPGファイル

専門家に質問してみよう