Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1004 / 13644 ツリー ←次へ | 前へ→

【76913】PDFのプロパティの取得の仕方 K 15/4/11(土) 0:57 質問[未読]
【76914】Re:PDFのプロパティの取得の仕方 マナ 15/4/11(土) 16:12 発言[未読]
【76915】Re:PDFのプロパティの取得の仕方 マナ 15/4/11(土) 20:39 発言[未読]
【76922】Re:PDFのプロパティの取得の仕方 K 15/4/13(月) 20:16 お礼[未読]
【76923】Re:PDFのプロパティの取得の仕方 マナ 15/4/13(月) 20:27 発言[未読]
【76929】Re:PDFのプロパティの取得の仕方 K 15/4/13(月) 22:03 お礼[未読]

【76913】PDFのプロパティの取得の仕方
質問  K  - 15/4/11(土) 0:57 -

引用なし
パスワード
   すみません、行き詰まったのでお願いします。

やりたいことは、ExcelにPDFファイル名の一覧が数百行ありまして、
それぞれのPDFに入力されているプロパティの
タイトル(Title)を取得したいのです。

環境はWindows7、Excel2010、Acrobat XIで、Readerではなく
製品版のAcrobatがインストールされています。

いろいろなサイトでそれっぽいコードがあるのですが、
どれもエラーで動かず、一応自分でエラーが出ないところまではいきました。
しかし肝心のタイトルが取得できません。

解決方法をご存知の方がいれば教えてください。

Sub test()
  Dim ret As Boolean
  Dim filePath As String

  filePath = "C:\Users\hage\Desktop\test.pdf"

  Dim acroApp As Object
  Dim pdDoc As Object
  Dim avDoc As Object

  Set acroApp = CreateObject("AcroExch.APP")
  Set pdDoc = CreateObject("AcroExch.PDDoc")
  Set avDoc = CreateObject("AcroExch.AVDoc")

  ret = avDoc.Open(filePath, "")

  Dim strTitle As String
  strTitle = pdDoc.GetInfo("Title")

  MsgBox (strTitle)

  ret = avDoc.Close(False)
  acroApp.Exit

  Set avDoc = Nothing
  Set pdDoc = Nothing
  Set acroApp = Nothing

End Sub

作業場が会社でデータを持ってこれないので打ち直しました。
細かい入力ミスは無視してください。

上はテストでMsgBoxにしていますが、最終的には一覧から
ファイル一覧を取得して、隣のセルにタイトルを入力していく感じです。

【76914】Re:PDFのプロパティの取得の仕方
発言  マナ  - 15/4/11(土) 16:12 -

引用なし
パスワード
   参考サイト
ht tp://pdf-file.nnn2.com/

★の部分を修正してみました

Sub test2()
  Dim ret As Boolean
  Dim filePath As String

  filePath = "C:\Users\hage\Desktop\test.pdf"

  Dim acroApp As Object
  Dim pdDoc As Object
'  Dim avDoc As Object  '★

  Set acroApp = CreateObject("AcroExch.APP")
  Set pdDoc = CreateObject("AcroExch.PDDoc")
'  Set avDoc = CreateObject("AcroExch.AVDoc")  '★

  ret = pdDoc.Open(filePath)  '★

  Dim strTitle As String
  strTitle = pdDoc.GetInfo("Title")

  MsgBox (strTitle)

  pdDoc.Close  '★
  acroApp.Exit

'  Set avDoc = Nothing  '★
  Set pdDoc = Nothing
  Set acroApp = Nothing

End Sub

【76915】Re:PDFのプロパティの取得の仕方
発言  マナ  - 15/4/11(土) 20:39 -

引用なし
パスワード
   もっと削除してもよかった?

Sub test3()
  Dim filePath As String

  filePath = "C:\Users\hage\Desktop\test.pdf"

  Dim pdDoc As Object
  
  Set pdDoc = CreateObject("AcroExch.PDDoc")

  pdDoc.Open (filePath)

  Dim strTitle As String
  strTitle = pdDoc.GetInfo("Title")

  MsgBox (strTitle)

  pdDoc.Close

  Set pdDoc = Nothing

End Sub


逆に、元のコード(test)を最小限の修正ですませる場合は、
下記1行を

strTitle = pdDoc.GetInfo("Title")

strTitle = avDoc.getpdDoc().GetInfo("Title")

【76922】Re:PDFのプロパティの取得の仕方
お礼  K  - 15/4/13(月) 20:16 -

引用なし
パスワード
   週末、会社と同じ環境を作ろうとするだけで終わってしまい、
返信が遅くなってしまってゴメンなさい。

ちょーっ! ありがとんございます。
今日会社で試したらそのままでイケました。

で、もう一つご存知であれば教えて欲しいのですが、
参照URLのサイトを見ると「ローカルのハードディスク上に存在しないと
プロパティは取得出来ません」と書かれているのですが、
Excel VBAは外部サイトのステイタスコードを取得できるし、
スクレイピングもできます。

その要領で外部サイトにあるPDFのプロパティは取得できないのでしょうか。
上記サイトの「出来ません」は仕様的にできないのか、
やれば出来るけどやってみたことがなくて出来ないのかがわかりません。

ちないに今日チロっとやってみたのですが、やはり出来ませんでした。

Adobeのリファレンスも覗いたのですが、
英語なのでそこまで細かい部分はわかりませんでした。
申し訳ありません、ご存知であればで構いません。

【76923】Re:PDFのプロパティの取得の仕方
発言  マナ  - 15/4/13(月) 20:27 -

引用なし
パスワード
   ▼K さん:

私にはわかりません。
先に紹介したサイトには、こうかいてあります(笑)

目的が解決出来ない時は、キッパリとあきらめてAdobe社の日本語「Acrobat アドビフォーラム」で相談します。 ココ ↓
ht tp://forums.adobe.com/community/international_forums/japanese/acrobat

【76929】Re:PDFのプロパティの取得の仕方
お礼  K  - 15/4/13(月) 22:03 -

引用なし
パスワード
   ちょー!ありがとんございます。
聞いてみます。

1004 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free