PowerPoint VBAを使い、バラバラのテキストボックスを1つに連結するマクロをご紹介します。
選択中のすべてのテキストをつなげ、1つのテキストボックスにして貼り付けてくれます。
コードは神AI「ChatGPT」で開発しました。ChatGPTについては、次の記事で解説しています。
神AI「ChatGPT」でパワポVBAを開発【始め方から解説】
ChatGPTとは、質問を投げると人工知能が回答してくれるチャットサービスです。Excelでの数式や…
バラバラのテキストボックスを1つに連結するマクロ
Sub TextConcatenateAndPaste() '選択中のテキストボックスをY座標の小さい順にソート Dim shpArray() As shape ReDim shpArray(1 To ActiveWindow.Selection.ShapeRange.Count) For Each shp In ActiveWindow.Selection.ShapeRange i = i + 1 Set shpArray(i) = shp Next shp Dim tempShp As shape For i = LBound(shpArray) To UBound(shpArray) - 1 For j = i + 1 To UBound(shpArray) If shpArray(i).Top > shpArray(j).Top Then Set tempShp = shpArray(i) Set shpArray(i) = shpArray(j) Set shpArray(j) = tempShp End If Next j Next i 'テキストボックス内のテキストを連結 Dim txt As String For i = LBound(shpArray) To UBound(shpArray) - 1 txt = txt & shpArray(i).TextFrame.TextRange.Text & vbCrLf Next i txt = txt & shpArray(UBound(shpArray)).TextFrame.TextRange.Text '新しいテキストボックスを作成してテキストを貼り付け Dim newShp As shape Set newShp = ActiveWindow.Selection.SlideRange.Shapes.AddTextbox(msoTextOrientationHorizontal, 0, 0, 200, 50) newShp.TextFrame.TextRange.Text = txt 'テキストの折り返しを無効化 newShp.TextFrame.WordWrap = msoFalse '選択中のテキストボックスと同じフォント、フォントサイズを使用 newShp.TextFrame.TextRange.Font.Name = ActiveWindow.Selection.ShapeRange(1).TextFrame.TextRange.Font.Name newShp.TextFrame.TextRange.Font.NameFarEast = ActiveWindow.Selection.ShapeRange(1).TextFrame.TextRange.Font.NameFarEast newShp.TextFrame.TextRange.Font.Size = ActiveWindow.Selection.ShapeRange(1).TextFrame.TextRange.Font.Size '新しいテキストボックスを選択 newShp.Select End Sub
選択中のテキストボックスをY座標の小さい順にソートし、スライドの上部にあるテキストボックスから順に連結されるように処理しています。
ソートの処理をしていないと、テキストボックスの重なり順で連結されてしまうので、並べた順に連結されない場合があります。
マクロの使い方は、次の記事で解説しています。
PowerPointマクロ入門 | コピペで始める楽々コース
PowerPointでマクロを始めたいけど、難しそうでよく分からないという方向けの入門編です。PPD…
実行結果
連結したいテキストボックスをすべて選択します。選択順は問いません。
マクロを実行すると、テキストの並び順通りに連結されたテキストボックスが貼り付けられます。テキスト間は改行コードが入るように処理しています。
ActiveWindow.Selection.SlideRange.Shapes.AddTextbox(msoTextOrientationHorizontal, 0, 0, 200, 50)
貼り付け場所は上記コードの「0(X座標), 0(Y座標)」の値で調整してください。
テキストボックスをバラバラにする
テキストボックスを連結したい場合もあれば、バラバラにしたい場合もあります。テキストばらしはPowerPointの標準機能だけで行えます。
詳細は、次の記事で解説しています。
PowerPointでテキストを1文字ずつバラバラにする方法
PowerPointでテキストボックスの文字を1文字または1行ずつバラバラにする方法をご紹介します。…
マクロで自動化したい場合はこちら。
【パワポVBA】テキストをばらして1行ずつ分割するマクロ
Illustratorのスクリプトでお馴染み「テキストばらし」のような処理ができるPowerPoin…