終了

PNGで書き出しを行うファイルの名称をCSVで指定する方法を教えてください

New Here ,
Mar 20, 2024 Mar 20, 2024

リンクをクリップボードにコピー

コピー完了

組版したデータをPNG形式で書き出しを行った後、現在EXCELのマクロを利用してファイル名の変更をしています

indesignからPNG形式で書き出し時にファイル名を指定することはできないでしょうか

TH2024_0-1710980250342.png

TH2024_1-1710980810035.png

よろしくお願いいたします

 

 

 

キーワード
読み込みと書き出し

表示

398

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines

correct answers 1 件の正解

Community Expert , Mar 25, 2024 Mar 25, 2024

実際に動かすためには、参照設定をするか、列挙を値に書き換える必要があります。

「参照設定」はご存じないですか。古い記事ですがこちらに手順が書いてあります。(参照設定の手順だけ見てください! 余計な操作も書いてありますので注意)

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
...

投票

翻訳

翻訳
Community Expert ,
Mar 20, 2024 Mar 20, 2024

リンクをクリップボードにコピー

コピー完了

知っている範囲では、標準機能(メニュー項目、パネル項目)には思い当たりません。

スクリプトで実現するしかないかなと思います。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
Mar 22, 2024 Mar 22, 2024

リンクをクリップボードにコピー

コピー完了

ご返信ありがとうございます

 

スクリプトを検討してみたいと思います

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Mar 21, 2024 Mar 21, 2024

リンクをクリップボードにコピー

コピー完了

PDFを書き出すのと同様に、PNG書き出し時にファイル名を指定することはできますが、そういうことではないのですよね? できるかできないかで言えば、EXCELからコピペすればできるとは思います。どのような方法でPNG画像に書き出しているのでしょうか。

 

PNG画像を書き出した後、EXCELのマクロでファイル名を変更しているというのは、実際にファイル名を変更するのですか? 例えばAAA.pngというファイルがあったとして、マクロを利用するとBBB.pngにファイル名を変えられるマクロ(VBA)を使っていらっしゃるイメージでいいでしょうか。それであれば、書き出すPNG画像を任意の法則性をもつ名前にしておいて、VBAにファイル名を変更する処理を組み込めれば解決できそうです。

また、Bridgeを使えば、正規表現を使ったファイル名のリネームも可能です。

 

具体的にどのような状態からどのような結果を求められているか図りかねるのですが、それによってスクリプトで対応すべきか、操作を工夫してなんとかするか、結論も変わると思います。

想像ですが、結論としてはこのようなイメージですか?

  1. InDesignからPNG画像を機械的に処理する(どの画像をどのファイル名にすべきかが機械的に一意に定まる)
  2. InDesignからPNG画像を書き出すタイミングでユーザーが判断して特定のファイル名にしたい

 

1であれば、条件次第でスクリプトによる処理が可能でしょう。

2も条件次第ではありますが、PNG書き出しダイアログでユーザーがEXCELからコピペするのとあまり手間は変わらないかもしれません。

いずれにせよ、もっと具体的な条件や手順などを教えていただけると、もう少し踏み込んだアドバイスができるかもしれません。


Uske_S

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
Mar 22, 2024 Mar 22, 2024

リンクをクリップボードにコピー

コピー完了

ご返信ありがとうございます

 

PNGの書き出し方としては、データ結合後に”ファイル→書き出し”を行っております

ファイル名の変更に関しては、ご認識の通りEXCELのマクロでAAA.PNGというファイルをBBB.PNGに変更しております

 

具体的には、データ結合後PNG書き出し時にEXCEL B列の値のファイル名.PNGを出力することを想定しております

なので、イメージとしては「1.InDesignからPNG画像を機械的に処理する」になると思います

TH2024_0-1711099033098.png

上記処理で書き出したPNGのファイル名が、最初からEXCELのB列の値で出力できるように考えています

書き出した時点のイメージ                        現状  

TH2024_7-1711100667647.png

 

InDesignにVBAを組み込んで機械的に処理させた方がいいでしょうか

ご教授よろしくお願いいたします

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Mar 22, 2024 Mar 22, 2024

リンクをクリップボードにコピー

コピー完了

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でデータ結合もできます。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
Mar 25, 2024 Mar 25, 2024

リンクをクリップボードにコピー

コピー完了

ご返信ありがとうございます

 

教えていただいたVBAを実行しているのですが、

.PNGExportRange = idPNGExportRangeEnum.idExportRange

 でエラー(実行時エラー'424')が発生して処理が進みません

 

PNG出力に関して宣言されているので、InDesignをVBA実行前に起動・事前にindd読み込みを試しましたが同じエラーが表示されます

VBA実行時にInDesignが起動されても、同じエラーが表示されます(その際は、inddは読み込まれていません)

何か操作を間違えているのでしょうか

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Mar 25, 2024 Mar 25, 2024

リンクをクリップボードにコピー

コピー完了

実際に動かすためには、参照設定をするか、列挙を値に書き換える必要があります。

「参照設定」はご存じないですか。古い記事ですがこちらに手順が書いてあります。(参照設定の手順だけ見てください! 余計な操作も書いてありますので注意)

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

同じエラーは出ないはずです。環境によって別のエラーが出るかもしれませんが、それについてはサンプル提示の範囲を超えているので、別途ご相談です(チャリン)

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
Mar 26, 2024 Mar 26, 2024

リンクをクリップボードにコピー

コピー完了

最新

コードのご提示、動作確認ありがとうございます

 

実施したいことができました

ありがとうございました

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines