- ベストアンサー
エクセル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
- みんなの回答 (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 のバージョン の明記を強くお勧めします。
その他の回答 (3)
- denbee
- ベストアンサー率28% (192/671)
こちらの方法は如何ですか? http://www.moug.net/tech/exvba/0100034.html WSHを使う方法です。
お礼
もう少しこちらの方も勉強してみます。 どうもありがとうございました。
- pringlez
- ベストアンサー率36% (598/1630)
ネットワーク経由ということですか。 そんなこと書かなきゃ誰にもわかりませんよ。 まずはネットワーク経由であることが問題かもしれませんね。そこが原因かどうか切り分けましょう。 そのファイルをローカルに持ってきて "C:\AAA\sample.PDF"にしたらどうなりますか。 それはできますか? その時点でダメですか?
お礼
どうもありがとうございました。 お恥ずかしながらパス名が間違っていたようです。間の¥を入れ忘れていた所があったようです。 ネットワーク経由でも立ち上がりました。 次にやりたい事が出来ましたので、また別の質問を新たに立てさせて下さい。
補足
回答をいただいていたのに返事が遅くなり、申し訳ありませんでした。ローカルに持ってきたら、ちゃんと開きました! また次の疑問が出てきたので、改めて別の質問を上げさせていただきますね。
- pringlez
- ベストアンサー率36% (598/1630)
これはなんですか? "\\C:\AAA\sample.PDF" なぜCの前に\\がついているのですか? "C:\AAA\sample.PDF"にしたらどうなりますか。
お礼
どうもありがとうございました。
補足
すみません。 会社のサーバ名が出ていたので、適当に変えてしまいました。 本当は¥¥サーバ名¥部署名¥グループ名¥ファイル名.pdfです。
お礼
丁寧な解説どうもありがとうございました。 結果お恥ずかしながら、パス名が間違っていたようでした。 次はその開いたPDFをコピペしてエクセルに貼り付けることをしたいので、また別の質問を立てさせていただきますね。