リンクをクリップボードにコピー
コピー完了
組版したデータをPNG形式で書き出しを行った後、現在EXCELのマクロを利用してファイル名の変更をしています
indesignからPNG形式で書き出し時にファイル名を指定することはできないでしょうか
よろしくお願いいたします
実際に動かすためには、参照設定をするか、列挙を値に書き換える必要があります。
「参照設定」はご存じないですか。古い記事ですがこちらに手順が書いてあります。(参照設定の手順だけ見てください! 余計な操作も書いてありますので注意)
http://indesign.cs5.xyz/vb/making.html
参照設定がわからなければ、次のコードを実行してみてください。これは私のところで動くのを確認しました。
Sub InDesignでページごとにPNG書き出し()
Set ws = ThisWorkbook.ActiveSheet
Set app = CreateObject("InDesign.Application.2024")
With app.PNGExportPreferences
.PNGExportRange = 1785742674
.ExportingSpread = False
.PngSuffix = ""
.PNGQuality = 1701727608
.E
...
リンクをクリップボードにコピー
コピー完了
知っている範囲では、標準機能(メニュー項目、パネル項目)には思い当たりません。
スクリプトで実現するしかないかなと思います。
リンクをクリップボードにコピー
コピー完了
ご返信ありがとうございます
スクリプトを検討してみたいと思います
リンクをクリップボードにコピー
コピー完了
PDFを書き出すのと同様に、PNG書き出し時にファイル名を指定することはできますが、そういうことではないのですよね? できるかできないかで言えば、EXCELからコピペすればできるとは思います。どのような方法でPNG画像に書き出しているのでしょうか。
PNG画像を書き出した後、EXCELのマクロでファイル名を変更しているというのは、実際にファイル名を変更するのですか? 例えばAAA.pngというファイルがあったとして、マクロを利用するとBBB.pngにファイル名を変えられるマクロ(VBA)を使っていらっしゃるイメージでいいでしょうか。それであれば、書き出すPNG画像を任意の法則性をもつ名前にしておいて、VBAにファイル名を変更する処理を組み込めれば解決できそうです。
また、Bridgeを使えば、正規表現を使ったファイル名のリネームも可能です。
具体的にどのような状態からどのような結果を求められているか図りかねるのですが、それによってスクリプトで対応すべきか、操作を工夫してなんとかするか、結論も変わると思います。
想像ですが、結論としてはこのようなイメージですか?
1であれば、条件次第でスクリプトによる処理が可能でしょう。
2も条件次第ではありますが、PNG書き出しダイアログでユーザーがEXCELからコピペするのとあまり手間は変わらないかもしれません。
いずれにせよ、もっと具体的な条件や手順などを教えていただけると、もう少し踏み込んだアドバイスができるかもしれません。
リンクをクリップボードにコピー
コピー完了
ご返信ありがとうございます
PNGの書き出し方としては、データ結合後に”ファイル→書き出し”を行っております
ファイル名の変更に関しては、ご認識の通りEXCELのマクロでAAA.PNGというファイルをBBB.PNGに変更しております
具体的には、データ結合後PNG書き出し時にEXCEL B列の値のファイル名.PNGを出力することを想定しております
なので、イメージとしては「1.InDesignからPNG画像を機械的に処理する」になると思います
上記処理で書き出したPNGのファイル名が、最初からEXCELのB列の値で出力できるように考えています
書き出した時点のイメージ 現状
InDesignにVBAを組み込んで機械的に処理させた方がいいでしょうか
ご教授よろしくお願いいたします
リンクをクリップボードにコピー
コピー完了
Excelのマクロ(VBA)でやるならこんな感じですね。動かしてないけど 。VBAを書き慣れているのであればさほど難しくはないです。
Sub InDesignでページごとにPNG書き出し()
Set ws = ThisWorkbook.ActiveSheet
Set app = CreateObject("InDesign.Application.2024")
With app.PNGExportPreferences
.PNGExportRange = idPNGExportRangeEnum.idExportRange
.ExportingSpread = False
.PngSuffix = ""
.PNGQuality = idPNGQualityEnum.idMaximum
.ExportResolution = 300
.PNGColorSpace = idPNGColorSpaceEnum.idRGB
.TransparentBackground = False
.AntiAlias = True
.UseDocumentBleeds = False
.SimulateOverprint = False
.ExportingHiddenSpread = False
End With
Set doc = app.ActiveDocument
i = 3 'Excelのセルの行
j = 1 'InDesignドキュメントのページ
Do While ws.Cells(i, 2).Value <> ""
app.PNGExportPreferences.PageString = CStr(j)
doc.Export idExportFormat.idPNGFormat, ws.Cells(i, 2).Text & ".png"
i = i + 1
j = j + 1
Loop
End Sub
データ結合の元データがExcelで扱えるなら、Excel VBAでデータ結合もできます。
リンクをクリップボードにコピー
コピー完了
ご返信ありがとうございます
教えていただいたVBAを実行しているのですが、
.PNGExportRange = idPNGExportRangeEnum.idExportRange
でエラー(実行時エラー'424')が発生して処理が進みません
PNG出力に関して宣言されているので、InDesignをVBA実行前に起動・事前にindd読み込みを試しましたが同じエラーが表示されます
VBA実行時にInDesignが起動されても、同じエラーが表示されます(その際は、inddは読み込まれていません)
何か操作を間違えているのでしょうか
リンクをクリップボードにコピー
コピー完了
実際に動かすためには、参照設定をするか、列挙を値に書き換える必要があります。
「参照設定」はご存じないですか。古い記事ですがこちらに手順が書いてあります。(参照設定の手順だけ見てください! 余計な操作も書いてありますので注意)
http://indesign.cs5.xyz/vb/making.html
参照設定がわからなければ、次のコードを実行してみてください。これは私のところで動くのを確認しました。
Sub InDesignでページごとにPNG書き出し()
Set ws = ThisWorkbook.ActiveSheet
Set app = CreateObject("InDesign.Application.2024")
With app.PNGExportPreferences
.PNGExportRange = 1785742674
.ExportingSpread = False
.PngSuffix = ""
.PNGQuality = 1701727608
.ExportResolution = 300
.PNGColorSpace = 1666336578
.TransparentBackground = False
.AntiAlias = True
.UseDocumentBleeds = False
.SimulateOverprint = False
.ExportingHiddenSpread = False
End With
If app.documents.Count < 1 Then
MsgBox "ドキュメントが開かれていません"
Exit Sub
End If
Set doc = app.ActiveDocument
i = 3 'Excelのセルの行
j = 1 'InDesignドキュメントのページ
Do While ws.Cells(i, 2).Value <> ""
app.PNGExportPreferences.PageString = CStr(j)
doc.Export 1699761735, ThisWorkbook.Path & "\" & ws.Cells(i, 2).Text & ".png"
i = i + 1
j = j + 1
Loop
End Sub
同じエラーは出ないはずです。環境によって別のエラーが出るかもしれませんが、それについてはサンプル提示の範囲を超えているので、別途ご相談です(チャリン)
リンクをクリップボードにコピー
コピー完了
コードのご提示、動作確認ありがとうございます
実施したいことができました
ありがとうございました