• ベストアンサー

エクセルVBAでPDFを開く

以下のような記述でアクロバットリーダーは立ち上がるのですが、 「この文書を開くときにエラーが発生しました。このファイルが見つかりません」 と出てきてしまいます。 どのようにしたら開いてくれるのでしょうか? Sub test3() Dim P As String P = "\\C:\AAA\sample.PDF" Shell "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe" & " " & P, vbNormalFocus End Sub

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

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

共有フォルダ上にあるファイルを 直接ダブルクリックした時には開けるのでしょうね。 考えられるのは、 1・ファイルパスの指定が間違っている。 2・パス中にスペースが含まれている(環境依存)。 3・何らかのセキュリティ設定でブロックされている。 ・・・ かな? Windows7 & Excel2010 では あなたの、Shell ・・・で問題なく開けました。 が、 Readerのバージョンが変わるとコードも変更しなくては いけなくなります。 #2 さんの回答でこの問題が回避できます。 ただ、Wscript.Shell を使う場合は パス中にスペースが含まれてると「見つかりません」に なるので、ダブルクォーテーションで括る必要があります。 p="\\サーバ名\部署名\グループ名\ファイル名.pdf" createobject("wscript.shell").run """" & p & """" (スペースが含まれていなくても括って問題ありません) または、 p="\\サーバ名\部署名\グループ名\ファイル名.pdf" createObject("Shell.Application").Shellexecute p なら括る必要はありません。 ※環境によって解決策が変わってくる場合が多々ありますので 今後の質問の際には OS のバージョン Excel のバージョン の明記を強くお勧めします。

ngttyy
質問者

お礼

丁寧な解説どうもありがとうございました。 結果お恥ずかしながら、パス名が間違っていたようでした。 次はその開いたPDFをコピペしてエクセルに貼り付けることをしたいので、また別の質問を立てさせていただきますね。

その他の回答 (3)

  • denbee
  • ベストアンサー率28% (192/671)
回答No.3

こちらの方法は如何ですか? http://www.moug.net/tech/exvba/0100034.html WSHを使う方法です。

ngttyy
質問者

お礼

もう少しこちらの方も勉強してみます。 どうもありがとうございました。

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.2

ネットワーク経由ということですか。 そんなこと書かなきゃ誰にもわかりませんよ。 まずはネットワーク経由であることが問題かもしれませんね。そこが原因かどうか切り分けましょう。 そのファイルをローカルに持ってきて "C:\AAA\sample.PDF"にしたらどうなりますか。 それはできますか? その時点でダメですか?

ngttyy
質問者

お礼

どうもありがとうございました。 お恥ずかしながらパス名が間違っていたようです。間の¥を入れ忘れていた所があったようです。 ネットワーク経由でも立ち上がりました。 次にやりたい事が出来ましたので、また別の質問を新たに立てさせて下さい。

ngttyy
質問者

補足

回答をいただいていたのに返事が遅くなり、申し訳ありませんでした。ローカルに持ってきたら、ちゃんと開きました! また次の疑問が出てきたので、改めて別の質問を上げさせていただきますね。

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.1

これはなんですか? "\\C:\AAA\sample.PDF" なぜCの前に\\がついているのですか? "C:\AAA\sample.PDF"にしたらどうなりますか。

ngttyy
質問者

お礼

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

ngttyy
質問者

補足

すみません。 会社のサーバ名が出ていたので、適当に変えてしまいました。 本当は¥¥サーバ名¥部署名¥グループ名¥ファイル名.pdfです。

関連するQ&A

  • pdfをvbaで開いて、さらにサイズを指定する

    pdfをvbaで開いて、さらにサイズを指定することは可能ですか? Sub Sample() Dim myFile As String myFile = "C:\\問い合わせ.pdf" Shell """C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe"" " & myFile End Sub これでPDFを開くことは出来るのですが 縦横、高さ、幅を指定したいのですが、可能ですか?

  • vba pdfを手前に開きたい  Shell

    Sub Sample() Dim myFile As String myFile = "C: \test.pdf" Shell """C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe"" " & myFile End Sub vbaからこれでPDFファイルを開くことができるのですが アクセスの後ろで開いてしまいます。 このコードを実行したら、開いたPDFファイルを画面の手前に表示したいので 何を付け足せばいいのでしょうか?

  • vbaでpdfを開く方法

    Sub test() Dim myFile As String myFile = "C:\Users\ダミー.pdf" Shell """C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe""" & myFile End Sub これでいけるかと思ったのですが、AdobeReader自体は起動するのですが、肝心のファイルは開きません。 エラーにもなりません。 Program Files (x86)の中身を確認しても、バージョンは10で正しいようです。 AdobeReaderを起動するだけではなく、ファイルを開く方法を教えてください。

  • PDFファイルを開き、印刷し、閉じるマクロ

    Excel 2003 VBAにて、 PDFファイルを開き、印刷し、閉じるマクロを作りたいと思っています。 Dim AA, AAA AA = "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe C:\Scan\20131101160734050_001.pdf" AAA = Shell(AA, vbNormalFocus) にて、PDFファイルを開くことは出来ました。 このPDFファイルを、「印刷し、閉じる」ためには、 このPDFファイルを指定する必要があると思いますが、 その構文が判りません。 知っている方、教えて下さい。

  • VBAからAcrobat 8.0でPDFファイルを開く

    こんにちは Acrobat 7.0ですとShell起動できるのですが、Acrobat 8.0ですと起動できません。 Shell(pathname[,windowstyle]) pathnameにはプログラム名 + 表示するファイル名を指定しています。 具体的には"C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe C:\Work\PDF1.pdf" です。 8の場合は "C:\Program Files\Adobe\Acrobat 8.0\Reader\AcroRd32.exe C:\Work\PDF1.pdf" としています。 Adobe Readerの枠は表示されエラーメッセージとして2回続けて出ます。 一つ目は"この文書を開くときにエラーが発生しました。ファイルエラーが発生しました。」です。 ふたつ目は「この文書を開くときにエラーが発生しました。このファイルが見つかりません。」です。 これからすると、文書ファイルのフォルダ・ファイル名指定が間違っていると考えられますが、同じ文書指定で7ではOKです。 8の場合指定の仕方が違うのでしょうか? WEBで検索したのですが、同じようにして開いていることが出ていて開けないことが解りません。 アドバイスお願いいたします。

  • VBAでフリーソフトを起動する事は可能でしょうか?

    Sub Sample1() Dim rc As Long rc = Shell("notepad.exe", vbNormalFocus) If rc = 0 Then MsgBox "起動に失敗しました" End Sub でメモ帳は開けるのですが、 QR Code Editorというソフトを入れていて、 それをVBAで開きたいのですがどうすればいいでしょうか? QR Code Editorは、 "C:\Program Files (x86)\Psytec\QR Code Editor\PsQREdit.exe" に入っています。 Sub Sample1() Dim rc As Long rc = Shell("PsQREdit.exe", vbNormalFocus) End Sub にすると、ファイルが見つかりません。 (Error 53)になってしまいます。 ご教授よろしくお願いします。

  • エクセル VBA フォルダを閉じる

    いつもお世話になっております。 下記のプロシージャでフォルダを開いているのですが、このフォルダを閉じる場合はどのように記述すればよろしいのでしょうか? よろしくお願いいたします。 Sub opn_fld() Dim myFol As String, mymsg As Integer Dim IE As Object myFol = "C:\ABC\" Shell "C:\Windows\Explorer.exe " & myFol, vbNormalFocus End Sub

  • 開いたときの位置を指定する事は可能ですか?

    Sub Sample() Dim myFile As String myFile = "C:\Program Files (x86)\" Shell "C:\Windows\Explorer.exe " & myFile, vbNormalFocus End Sub これでフォルダを起動させているのですが 開いたときの位置を指定する事は可能ですか? TOP=0 など、IE操作の様に画面に対する位置を指定したいのですが どうすればいいでしょうか?

  • パソコン上に Acrobat Rdader 関係が 5.0、 6.0 と2つあるんですが ..

    Windows XP を使っています。 パソコンの中を少し掃除していた時に、、 次のように、Acrobat Reader 関係のフォルダが2つあるのに気付きました。 C:\Program Files\Adobe\Acrobat 5.0  ・フォルダサイズ: 16.1 MB  ・中の \Reader フォルダにある exe ファイルは、AcroRd32.exe(Acrobat Reader 5.0) C:\Program Files\Adobe\Acrobat 6.0  ・フォルダサイズ: 50.6 MB  ・中の \Reader フォルダにある exe ファイルは、AcroRd32.exe(Adobe Reader 6.0) ---- おたずねしたい点ですが、 普通、新しいバージョンをインストールした時は、 古い方は上書きされるなりして残らないんじゃないかと思うんですが、 こんな風に2つになっているのは、 何か特別な理由でもあるんでしょうか? (もしかすると、インストールの時に何かその辺のことが表示されたのかも知れませんが、何も覚えてません。) 特に問題なければ、古い方は削除しようかと思っているんですが。 --

  • vbaでPDFファイルが印刷されない

    エクセルのA列に「フォルダ場所+ファイル名.pdf」のリストを作成し、 PDFファイルを開き、印刷し、閉じるマクロを作成しましたが、全く印刷されません。 エラーが出て止まることなく、次々進んでいるのですが、肝心の印刷が実行されていません。 ネット検索で見つけたものをアレンジしたのですが、高度すぎて苦戦しています。 エクセルシートの内容は、 セルA2~には、フォルダ場所+ファイル名.pdf  例)C:\work\test1.pdf C2には印刷実行数(ファイルの数) を置いています。 どなたかご存知の方いらっしゃいましたら、どうか教えてください。 よろしくお願いいたします。 ---------------------------------------------------- Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub PDF() Dim AA, BB, CC, DD Dim AAA, BBB Dim i As Long For i = 1 To Range("C2").Value AA = "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe /t " BB = Range("A" & i + 1).Value CC = Application.ActivePrinter DD = AA & """" & BB & """" & " " & """" & CC & """" Debug.Print DD Set AAA = CreateObject("WScript.Shell") Set BBB = AAA.exec(DD) Sleep 1000 On Error Resume Next BBB.Terminate Set BBB = Nothing Set AAA = Nothing Next i End Sub

専門家に質問してみよう