いちばん失敗した人決定戦

エクセルのマクロについて教えてください。
マクロでエクセルのセルから、PDFのデータを呼び出したいのですが、どのような設定をすればいいでしょうか?いろいろなサイトでみた設定を試してみているのですが、うまくいきません。ひょっとしたらPDFの名前を入力する部分か、データの置き場所等が違うのかとも思っています。できましたら下記の条件で、PDFの名前やデータの置き場所も入力して、教えていただけるとありがたいです。なお当方はマクロの素人なので、詳しく教えていただけるとありがたいです。

条件 1,エクセルは2010です。
   2,PDF、エクセルシートともにデスクトップ上の1同じフォルダ内にあります。
   3,PDFの名前は1234.pdfです。
   4、フォルダ名は5678です。
   5,エクセルシート名はtatai.xlsです。
   6,ハイパーリンクはデザインの関係で使えません。
   7,できあがったら基本的にUSB等で持ち運びたいです。

*またPDFについてはなんらかの関連付け等が必要なのでしょうか?

A 回答 (3件)

#2の回答者です。



>マクロのsheet1に下記のように書き込み、エクセルのsheet1の:セルに1234.pdf
>と入力しました。

これ自体は、間違いないはずです。ファイル名が何個でも、何千個でも、ワークブックに余計なWebメニューなど出て来ません。私は、同じようなものを作ってみましたから。

#2で書いたコードは、[イベント・ドリブン型マクロ]といいます。
補足に書かれたコードは、その機能を殺してしまいました。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) '←Private Sub ~の行は決まり文句です。ダブルクリックで反応する特別な呪文のようなものです。



End Sub

で、ひとまとまりで、貼り付ける場所は、ワークシートのタブを右クリックすると、コードの表示と出てきますから、それをクリックして、開いた場所に、そのまま貼り付けるわけです。ダブルクリックすると、Target という所に、そのアクティブセルの情報(PDFのファイル名)が入ってくるわけです。

この回答への補足

>で、ひとまとまりで、貼り付ける場所は、ワークシートのタブを右クリックすると、コードの表示と出てきますから、それをクリックして、開いた場所に、そのまま貼り付けるわけです。ダブルクリックすると、Target という所に、そのアクティブセルの情報(PDFのファイル名)が入ってくるわけです


何度も申し訳ありません。上記のようにしたのですが、コンパイルエラー変数が定義されていません。
と出てしまうのですが?

補足日時:2012/11/18 09:45
    • good
    • 0
この回答へのお礼

すいません。リンクできました。私の単純な入力ミスだったようです。
素人の初歩的な質問にも丁寧にお答えいただき、ありがとうございました。

お礼日時:2012/11/18 12:05

こんばんは。



PDF 名の入力は必要ありませんが、
シートのセルにリストが書いてあることが条件です。
要するに、ハイパーリンクと同じようなものですが、ハイパーリンクを使わないだけです。
マウスのダブルクリックで、PDFファイルが開くはずです。

このコードは、シートモジュール(Sheet1, Sheet2など)に登録(貼り付け)しますが、ワークシートにPDFのファイル名が書かれていること。(例:1234.pdf)
PDF閲覧ツールは何でも良いけれども、拡張子から起動できること。
私の記憶では、Windows98では、動かないはずです。XP以上

「デスクトップ上の1同じフォルダ内」-つまり、PDFファイルと、ワークブックが同じフォルダー内なら、以下のPrivate Const の登録は不要です。違う場合は、以下のように、例 "D:\5678\"と入れます。

'Option Explicit
'Private Const pdfPATH As String = "D:\5678\"
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 Cancel = True
 If Not Target.Value Like "*.pdf" Then Exit Sub
 If Dir(pdfPATH & Target.Value) = "" Then MsgBox "File Not Found": Exit Sub
 With CreateObject("Wscript.Shell")
  .Run "" & pdfPATH & Target.Value & "", 3
 End With
End Sub

この回答への補足

 詳しい回答ありがとうございます。
さっそく試してみたのですが、オブジェクトが必要です。と出てうまくいきません。
やったのは、マクロのsheet1に下記のように書き込み、エクセルのsheet1の:セルに1234.pdf
と入力しました。

Sub Macro5()
'
' Macro5 Macro
'Private Sub macro4Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
If Not Target.Value Like "*.pdf" Then Exit Sub
If Dir(pdfPATH & Target.Value) = "" Then MsgBox "File Not Found": Exit Sub
With CreateObject("Wscript.Shell")
.Run "" & pdfPATH & Target.Value & "", 3
End With
 '
 End Sub

コード名の書き方がどこか間違っているのでしょうか、それともシートのセルにリストが書いてあることが条件というのを私が間違ってとらえてしまっているのでしょうか?なおマウスのダブルクリックで、PDFファイルが開かないのですが?

 初歩的な質問で申し訳ありませんが、ご回答お願いいたします。

補足日時:2012/11/17 10:33
    • good
    • 0

> PDFのデータを呼び出したいのですが



「呼び出す」とは?
シートに挿入?外部アプリケーションを開く?


> マクロの素人なので、詳しく

要約すると
> 自分の仕事で使うマクロを組みたいが、勉強する気はない
> 誰か無償で作ってくれ
こういう事ですね。


わざわざマクロを組まなくても、エクスプローラーなどでダブルクリックしたらいいんじゃないですか。



> 6,ハイパーリンクはデザインの関係で使えません。

ハイパーリンクを組んで、表示文字列を短く変更しておけば、
ボタンよりコンパクトにも作れますが、いかがですか。
オートシェイプにハイパーリンクを設定して、立体表示しておけば、
コマンドボタンと同様に見せて使う事も可能ですが、いかがですか。

この回答への補足

>要約すると
自分の仕事で使うマクロを組みたいが、勉強する気はない
誰か無償で作ってくれ
こういう事ですね。

結果的にはそうなっているかもしれませんが、いろいろと試して困り果てたうえでの結果です。しかしとげのある言い方ですね。不愉快です。


>わざわざマクロを組まなくても、エクスプローラーなどでダブルクリックしたらいいんじゃないですか。

質問者には質問者の都合や事情があるとおもいます。質問者のニーズにこたえる気がないのなら、回答しなければいいのではないでしょうか?

まあ最低の回答者ですね。

補足日時:2012/11/18 12:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!