TOP > blog > ChatGPT にて Excel VBAを使ったAdobe InDesignの自動組版
スクリプト
2024/07/14

ChatGPT にて Excel VBAを使ったAdobe InDesignの自動組版

管理者用
blog

はじめに

最近、ChatGPTを使って、エクセルVBAのコーディングをやらせて見た。

エクセルのデータを元にしてAdobe InDesignで自動組版を行う方法は、今までも多く紹介してきた。

エクセルのVBAを使ってInDesignを制御し、データの自動配置やPDFの生成まで一連の流れを ChatGPTで実現できそう。?
この記事では、そのプロセスと実際のVBAスクリプトについて紹介します。

 

使用したツール

  • Microsoft Excel: データの管理およびVBAスクリプトの実行。
  • Adobe InDesign: 高品質なレイアウト作成ツール。
  • ChatGPT 4o

 

手順の概要

   順番に、ステップを踏んで、Aiがコーディングしたものをコピーして、実行で機能していることを確認しながら進めた。

  • Excelデータの準備: エクセルシートに会社名などのデータを準備
  • VBAスクリプトの作成: InDesignを起動、A4のドキュメント、
  •            テキストブロックレイアウト、エクセルデータをテキストブロックに書き込み、
  • InDesignドキュメントの生成: スクリプトを実行して、InDesignで各データをページごとに配置
  • PDFのエクスポートと保存: InDesignドキュメントをPDFとしてエクスポートし、保存
  • InDesignの終了: 作業が完了したらInDesignを終了

  こんな感じで、最後のインデザインのクローズまで、行ってみましたが、1件だけ実行でエラーが発生しました。
  エラー箇所を指摘した後のコーディングでは、正しく改善されてました。

 

 

VBAスクリプトの例

以下は、最終の エクセルからInDesignを制御するための基本的なVBAスクリプトです。

Sub AddTextBoxesFromExcelToInDesign()
Dim indesignApp As Object
Dim newDocument As Object
Dim excelData As Range
Dim companyName As String
Dim i As Long
Dim page As Object
Dim filePath As String
Dim pdfFilePath As String

' Excelのデータ範囲を設定
Set excelData = ThisWorkbook.Sheets("Sheet1").Range("C2:C" & ThisWorkbook.Sheets("Sheet1").Cells(Rows.Count, "C").End(xlUp).Row)

' InDesignアプリケーションを起動
On Error Resume Next
Set indesignApp = CreateObject("InDesign.Application.CC")
If indesignApp Is Nothing Then
Set indesignApp = CreateObject("InDesign.Application")
End If
On Error GoTo 0
' エラーチェック
If indesignApp Is Nothing Then
MsgBox "InDesignを起動できませんでした。インストールされているか確認してください。"
Exit Sub
End If
' 新しいドキュメントを作成
On Error Resume Next
Set newDocument = indesignApp.Documents.Add
If Err.Number <> 0 Then
MsgBox "新しいドキュメントを作成できませんでした。"
Exit Sub
End If
On Error GoTo 0
' ドキュメント設定をA4サイズに変更
With newDocument.DocumentPreferences
.PageWidth = "210mm"
.PageHeight = "297mm"
End With

' 各会社名を新しいページに追加
For i = 1 To excelData.Rows.Count
companyName = excelData.Cells(i, 1).Value

' 新しいページを追加
If i > 1 Then
newDocument.Pages.Add
End If

' テキストフレームを追加
Set page = newDocument.Pages(i)
AddTextFrame page, "15mm", "20mm", "25mm", "80mm", companyName
Next i

' ファイルの保存
filePath = ThisWorkbook.Path & "\InDesignOutput.indd"
newDocument.Save filePath

' PDFとしてエクスポート
pdfFilePath = ThisWorkbook.Path & "\InDesignOutput.pdf"
newDocument.Export idExportFormat.idPDFType, pdfFilePath

' ドキュメントを閉じる
newDocument.Close

' InDesignを終了
indesignApp.Quit
MsgBox "ExcelのデータがInDesignの新しいページに追加され、ファイルが保存され、PDFが作成され、InDesignが終了しました。"
End Sub
Sub AddTextFrame(page As Object, top As String, left As String, bottom As String, right As String, textContent As String)
Dim textFrame As Object
Set textFrame = page.TextFrames.Add
With textFrame
.GeometricBounds = Array(top, left, bottom, right) ' Y1, X1, Y2, X2
.Contents = textContent
End With
End Sub

スクリプトの説明

  • データの取得: エクセルの特定範囲からデータを取得します。
  • InDesignの起動: InDesignアプリケーションを起動します。
  • ドキュメントの作成: 新しいA4サイズのドキュメントを作成します。
  • ページごとのデータ配置: 各ページに会社名を配置します。
  • ファイルの保存とエクスポート: ドキュメントを保存し、PDFとしてエクスポートします。
  • InDesignの終了: InDesignアプリケーションを終了します。

 

まとめ

エクセルのVBAを使用してAdobe InDesignを制御することで、データの自動組版が可能になります。これは、大量のデータを扱う場合や繰り返しのレイアウト作業を自動化するのに非常に有効です。この手法を使えば、時間と労力を大幅に節約できるでしょう。

このブログ記事を参考に、多くの方々がエクセルとInDesignを組み合わせて効率的に作業を進められるようになることを願っています。

 


 

 

 ChatGPTの可能性は、計り知れない、できれば専門部署、スタッフをおいて取り組むぐらいのものと認識している。
我々みたいな弱小零細企業がどのように取り組んで行くか課題である。
今は、時間が空いた時に試し、実験しながら触っている感じ。

今回は、インデザイン自動組版の触り・・・・で終わっているがなんとかして・・・・と思う。

、 

関連記事