VBA PPTのカタカナ全角変換
前回「VBA 半角カタカナの全角変換」では、Excelシート上の文字列の中から、半角カタカナだけを対象に全角変換する処理を作成しました。
今回は、前回作成した処理を利用して、PowerPoint文書のテキストボックス文字列を対象に全角変換する処理に変えていきます。
プログラムの作成
前回ファイルを流用してファイル名は「test3.xlsm」として、
Sheet1モジュールに「test3」関数を新規追加、
前回プログラムから「KatakanaZenkaku」関数はそのまま流用します。
以下に「test3」関数のみプログラムを示します。
Public Sub test3()
Dim oApplication As Object
Set oApplication = CreateObject("PowerPoint.Application")
Dim oPresentation As Object
Set oPresentation = oApplication.Presentations(1)
Dim nIndex As Long
nIndex = oPresentation.Windows(1).Selection.SlideRange.SlideIndex
Dim oSlide As Object
Set oSlide = oPresentation.Slides(nIndex)
Dim oShape As Object
For Each oShape In oSlide.Shapes
With oShape.TextFrame2.TextRange
Dim sText As String: sText = .Text
.Text = KatakanaZenkaku(sText)
End With
Next oShape
End Sub
プログラムを組み込んだExcelファイルを以下に添付します。
テスト用PowerPoint文書ファイル
テスト用のテキストボックス文字列を含んだPowerPoint文書ファイルを添付します。
動作確認
上記のテスト用PowerPoint文書ファイル「test.pptx」をダブルクリックして開き、1ページ目のスライドを選択して表示します。
Excelファイル「test3.xlsm」の開発タブ、マクロから、
マクロ名:Sheet1.test3を実行します。
実行結果例は次のようになり、テキストボックス内の文字列のうち、半角カタカナ部分のみが全角文字に変換されました。
プログラムの解説
それでは、「test3」関数の主な内容を説明します。
オブジェクト変数oApplicationの宣言と、CreateObject関数を使用して、PowerPointアプリケーションを参照できるようにoApplication変数にセットする処理です。今回は、すでにPowerPointアプリケーションを起動した状態でプログラムを実行しているので、起動中のアプリケーションを参照します。
Dim oApplication As Object
Set oApplication = CreateObject("PowerPoint.Application")
PowerPointアプリケーションで最初に開いた文書オブジェクトをoPresentation変数にセットします。
Dim oPresentation As Object
Set oPresentation = oApplication.Presentations(1)
文書中の選択スライドのスライド番号をnIndexに設定します。
Dim nIndex As Long
nIndex = oPresentation.Windows(1).Selection.SlideRange.SlideIndex
選択スライドのスライドオブジェクトをoSlideに設定します。
Dim oSlide As Object
Set oSlide = oPresentation.Slides(nIndex)
スライド中のShapeオブジェクトを1つずつ取り出します。ここでは、テキストボックスの前提としており、そのテキストをsTextに取り出してKatakanaZenkaku関数で文字列中の半角カタカナを全角変換したうえで、テキストオブジェクトに戻します。
Dim oShape As Object
For Each oShape In oSlide.Shapes
With oShape.TextFrame2.TextRange
Dim sText As String: sText = .Text
.Text = KatakanaZenkaku(sText)
End With
Next oShape
2ページめのスライドを変換
次にテスト用PowerPoint文書ファイル「test.pptx」の2ページ目のスライドを選択してマクロ実行してみます。
実行前)
実行後)
半角カタカナは全角変換されましたが、、、
箇条書きの書式が変更されてしまった!
テキストボックスから文字列全体を取り出して、全角変換した後、文字列全体をテキストボックスに戻しているので、文字列途中の書式などは全てリセットされてしまうのです。
PowerPoint文書では、箇条書きのほかにも、文字列途中の文字色を変えたり、下線を引いたりなど、色々な装飾を施したりします。
そのため、書式が崩れてしまっては、全角変換できたとしても、あまり役立つものとならないでしょう。
次回は書式を保持して変換できるように改良していきたいと思います。
記事を気に入って頂き、お役に立てたら嬉しいです。