以下のExcelの表をパワーポイントに出力するVBAをChatGPTに質問してみました。
スライドNo. 構成 仮説 So What?
1 ChatGPT 最新動向 - 最新動向を理解し、導入検討時の意思決定に役立てる
2 バージョンアップデート 性能が向上し、より多機能 ChatGPTの進化や新たな可能性を理解し、企業のニーズにどのように適応できるかを評価できる
3 新機能・拡張機能 新たな業界向け機能やプラットフォームとの統合機能を追加 効率的な業務遂行や競争優位性を向上させる可能性を探る
4 パフォーマンス向上 高速で、精度の向上が見られる 効率的な業務遂行やコスト削減が期待でき、企業のROIが向上する可能性がある
5 セキュリティ・プライバシー データセキュリティとプライバシー保護を強化、法規制対応力向上 企業は法規制や顧客の信頼を守りながら、安心してChatGPTを導入・利用できる
6 インテグレーション 業務アプリケーションやプラットフォームとの連携が容易 企業は既存のシステムやツールと統合し、業務プロセスの効率化や一貫性を向上させることができる
7 サポート・ドキュメンテーション ユーザーサポートが充実し、ドキュメンテーション改善 企業はChatGPTの導入や運用において迅速かつ円滑な対応が可能となり、トラブル時のリスク軽減が期待できる
9 競合他社の動向 競合他社も新機能やサービスを展開 ChatGPTが市場でどのような立ち位置にあり、どのように競争力を維持・向上させるべきかを理解し、戦略的な意思決定に役立てる
10 今後の展望 技術革新や業界トレンドに対応するロードマップ策定 企業はChatGPTと長期的なパートナーシップを築く上で、技術革新や市場トレンドに適応していく戦略を立てることができる
質問はこちらの通り
以下の表を、構成をスライドタイトル、仮説とSo What?をスライドの内容の箇条書きにする
パワーポイントを出力するVBAを考えてください。
スライドNo. 構成 仮説 So What?
1 ChatGPT 最新動向 - 最新動向を理解し、導入検討時の意思決定に役立てる
2 バージョンアップデート 性能が向上し、より多機能 ChatGPTの進化や新たな可能性を理解し、企業のニーズにどのように適応できるかを評価できる
3 新機能・拡張機能 新たな業界向け機能やプラットフォームとの統合機能を追加 効率的な業務遂行や競争優位性を向上させる可能性を探る
4 パフォーマンス向上 高速で、精度の向上が見られる 効率的な業務遂行やコスト削減が期待でき、企業のROIが向上する可能性がある
5 セキュリティ・プライバシー データセキュリティとプライバシー保護を強化、法規制対応力向上 企業は法規制や顧客の信頼を守りながら、安心してChatGPTを導入・利用できる
6 インテグレーション 業務アプリケーションやプラットフォームとの連携が容易 企業は既存のシステムやツールと統合し、業務プロセスの効率化や一貫性を向上させることができる
7 サポート・ドキュメンテーション ユーザーサポートが充実し、ドキュメンテーション改善 企業はChatGPTの導入や運用において迅速かつ円滑な対応が可能となり、トラブル時のリスク軽減が期待できる
9 競合他社の動向 競合他社も新機能やサービスを展開 ChatGPTが市場でどのような立ち位置にあり、どのように競争力を維持・向上させるべきかを理解し、戦略的な意思決定に役立てる
10 今後の展望 技術革新や業界トレンドに対応するロードマップ策定 企業はChatGPTと長期的なパートナーシップを築く上で、技術革新や市場トレンドに適応していく戦略を立てることができる
【以下回答】
以下のVBAコードは、指定された表からパワーポイントスライドを生成します。表のデータは、Excelのシートに配置されている必要があります。
Sub CreateTableBasedSlides()
Dim oPPT As PowerPoint.Application
Dim oPresentation As PowerPoint.Presentation
Dim oSlide As PowerPoint.Slide
Dim oTable As ListObject
Dim oCell As Range
Dim i As Long
' PowerPointアプリケーションを開始
Set oPPT = New PowerPoint.Application
oPPT.Visible = True
' 新しいプレゼンテーションを作成
Set oPresentation = oPPT.Presentations.Add
' Excelのデータテーブルを取得
Set oTable = ThisWorkbook.Worksheets("Sheet1").ListObjects(1)
' テーブルの各行に対してスライドを作成
For i = 2 To oTable.ListRows.Count
' スライドを追加
Set oSlide = oPresentation.Slides.Add(i - 1, ppLayoutText)
' タイトルを設定
oSlide.Shapes(1).TextFrame.TextRange.Text = oTable.ListColumns(2).DataBodyRange.Cells(i - 1, 1)
' 仮説とSo What?を箇条書きに設定
oSlide.Shapes(2).TextFrame.TextRange.Text = "仮説: " & oTable.ListColumns(3).DataBodyRange.Cells(i - 1, 1) & vbCrLf & "So What?: " & oTable.ListColumns(4).DataBodyRange.Cells(i - 1, 1)
oSlide.Shapes(2).TextFrame.TextRange.ParagraphFormat.Bullet.Type = ppBulletUnnumbered
oSlide.Shapes(2).TextFrame.TextRange.ParagraphFormat.Bullet.Visible = msoTrue
Next i
End Sub
このコードは、ExcelのVBAエディターに貼り付け、実行することで動作します。Excelのシートに配置された表から、パワーポイントスライドを生成します。タイトル、仮説、およびSo What?が各スライドに配置されます。
【ここまで】
エラーになったのでまたChatGPTに聞いてみる。
シート名はあっているので、Index指定してないよとの指摘
表を全部選択して、そこからマウスを右クリック「テーブルまたは範囲からデータ」を選択
テーブルを作成
テーブル名称を「table1」で指定
テーブル化完了
マクロを実行したら、ちゃんとパワポに出力された。
動きました。おしまい。
【追記】
Bing AIに同じ質問をしてみた。
Sub ExportTableToPowerPoint()
'Excelの表を参照する
Dim ws As Worksheet
Dim rng As Range
Set ws = ActiveSheet
Set rng = ws.Range("A1:D10")
'PowerPointのオブジェクトを作成する
Dim pptApp As Object
Dim pptPres As Object
Dim pptSlide As Object
Dim pptShape As Object
On Error Resume Next
Set pptApp = GetObject(, "PowerPoint.Application")
If Err.Number <> 0 Then
Set pptApp = CreateObject("PowerPoint.Application")
Err.Clear
End If
'PowerPointのプレゼンテーションを新規作成する
Set pptPres = pptApp.Presentations.Add
'Excelの表の行数と列数を取得する
Dim rowCnt As Long
Dim colCnt As Long
rowCnt = rng.Rows.Count
colCnt = rng.Columns.Count
'Excelの表の各行に対してループする
Dim i As Long
For i = 1 To rowCnt
'PowerPointのスライドを追加する
Set pptSlide = pptPres.Slides.Add(i, 11) '11はタイトルとコンテンツのレイアウト
'スライドのタイトルに構成をセットする
pptSlide.Shapes(1).TextFrame.TextRange.Text = rng.Cells(i, 2).Value
'スライドのコンテンツにテキストボックスを追加する
Set pptShape = pptSlide.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 500, 300)
'テキストボックスに仮説とSo What?をセットする
pptShape.TextFrame.TextRange.Text = "仮説: " & rng.Cells(i, 3).Value & vbCrLf & "So What?: " & rng.Cells(i, 4).Value
'テキストボックスのフォントサイズを調整する
pptShape.TextFrame.TextRange.Font.Size = 20
'テキストボックスの位置とサイズを調整する
pptShape.Left = pptSlide.Shapes(2).Left + 10 'コンテンツプレースホルダーの左端に合わせる
pptShape.Top = pptSlide.Shapes(2).Top + 10 'コンテンツプレースホルダーの上端に合わせる
pptShape.Width = pptSlide.Shapes(2).Width - 20 'コンテンツプレースホルダーの幅に合わせる
pptShape.Height = pptSlide.Shapes(2).Height - 20 'コンテンツプレースホルダーの高さに合わせる
Next i
'PowerPointを表示する
pptApp.Visible = True
End Sub
あれ?Bingのほうが可読性高くない?
悪くない。