いつもお世話になっております。
すみません、過去に同様の質問をしたような気がしないでもないのですが、文献が見つけられないので再度質問します。
参照設定からAcrobat n Type Libraryを設定し、下記コード実行をします。
※Acrobatの入っているPCでしか動きません。
Sub フォルダ内PDFのタイトル作成者などを書き換える()
'カレントドライブ・フォルダを変更
ChDrive ActiveWorkbook.Path
ChDir ActiveWorkbook.Path
myPath = ActiveWorkbook.Path & "\"
myFname = Dir(myPath & "*.pdf")
Do While myFname <> ""
Set qq = CreateObject("AcroExch.PDDoc")
b = qq.Open(myPath & myFname)
b = qq.SetInfo("Title", Range("B1"))
b = qq.SetInfo("Author", Range("B2"))
b = qq.SetInfo("Subject", Range("B3"))
b = qq.SetInfo("Keywords", "aa" & vbCrLf & "bb") '←ここの挙動について
b = qq.Save(33, myPath & myFname)
b = qq.Close
myFname = Dir()
Loop
MsgBox "終了しました"
End Sub
変数宣言等推奨されない簡易記述ですみませんが、このマクロの実行結果としてマクロと同じディレクトリにあるPDFを順番にプロパティ情報の書き換えが行われていきます。
書き換え自体は正常に行われますが、keywordsで書き込むテキストに改行コードが含まれる場合、PDFのプロパティ側では入力したテキストの前後にダブルコーテーションが自動付与されてしまいます。
いわゆるcsvファイルなどに書き出す際に文字列の前後にダブルコーテーションが付与されるのと同じような意味だと思います。詳細なメタデータ欄を見ても前後にダブルコーテーションが記述されてました。
ただし、
text = qq.GetInfo("Keywords")
とすることでVBA側からPDFのプロパティのkeywords情報を取得することが可能ですが、改行コードが含まれていてもこちらから取得した文字列には変数自体の中身を調べてもダブルコーテーションが付与されていませんでした。
となると、書き込む際に自動的に付与されており、書き出す際は自動的に無視されているようです。
手動でプロパティに改行を含むテキストを書き込むことは可能であり、ダブルコーテーションは付与されません。
VBAで自動的に入力させる場合にこのようなダブルコーテーションの挙動を回避することは不可能という認識でよろしかったでしょうか。