Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Microsoft 365)
VBからPDFプロパティ変更時の改行含むテキストのダブルコーテーションについて
投稿日時: 23/06/15 12:04:24
投稿者: QooApp

いつもお世話になっております。
すみません、過去に同様の質問をしたような気がしないでもないのですが、文献が見つけられないので再度質問します。
 
参照設定から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で自動的に入力させる場合にこのようなダブルコーテーションの挙動を回避することは不可能という認識でよろしかったでしょうか。

回答
投稿日時: 23/06/15 14:35:37
投稿者: simple

> 投稿日時: 21/10/13 10:53:35投稿者: QooApp
>
> Simple様 ありがとうございます。
>
> そうですね、やはり厳しいような感じです。
> リンク先ページの下部コメは見落としてました。
>
> 既存の生産方法を自動化できないか、という問題解決目的だったので
> 規定ルールにどうしても縛られる内容となります。
>
> 手動で文字を削除するしか現状無さそうだなという判断で同意します。
> お忙しいところご協力ありがとうございました。
 
リンク先とは、http://pdf-file.nnn2.com/?p=102 のことでした。
 
どうしてもということなら、メーカーに確認するべきです。
こんなとこ(失礼!)で聞いても、責任ある回答など望むべくもありません。

投稿日時: 23/06/15 15:41:11
投稿者: QooApp

simple様
すみません、当時の案件わざわざ発見してくれてありがとうございます。
そうです、当時の案件とは異なりますが、プロパティ編集の案件で当時と同じ問題にぶつかってました。
お手数をおかけしまして大変申し訳ございません。
 
ありがとうございます。