三流君のソースコード置き場

ブログにソースコードをアップして、ブログの検索機能で利用してます(利用予定です)

よく検索されるキーワード: [VBA]/ [VBS]/ [CreateObject]/ [Excel]/ [ADO]


AIほ使用して記事作成 【Excel VBA】PowerPointへの自動転記で「書式」が消える問題を解決!.Textプロパティの活用術【ソースコード公開】

Excel VBAPowerPointへの自動転記で「書式」が消える問題を解決!.Textプロパティの活用術【ソースコード公開】

毎月のレポート作成で、Excelの数値をPowerPointにコピペする作業、まだ手動でやっていますか?
「63箇所」もの転記作業も、VBAを使えば''たった1秒''で終わります。

しかし、普通に転記すると「1,000円」が「1000」になったり、「10%」が「0.1」になったりと、''Excel上の「見た目(表示形式)」が消えてしまう問題''に直面します。

今回は、その問題を解決する「.Textプロパティ」を使った魔法のコードと、実務でハマりやすいポイントを解説します。

AIを使用して記事を書きました

結論:コピペ用ソースコード

まずは、解決策となるVBAコードをご覧ください。
Excelのリスト(A列:ページ番号, B列:オブジェクト名, C列:転記したい値)を読み込み、指定されたパワポのスライドへ流し込みます。

Sub パワポに文字列をセットする()
    'PowerPointアプリの起動
    Dim ppApp As Object
    Set ppApp = CreateObject("PowerPoint.Application")
    ppApp.Visible = True

    'B2セルのファイルパスを開く
    Dim ppPrs As Object
    Set ppPrs = ppApp.Presentations.Open(Range("B2").Value)

    Dim y As Long
    y = 5 'データは5行目からスタート

    'A列(ページ番号)がある間ループ処理
    While Cells(y, "A").Value <> ""
        Dim p As Long
        p = Cells(y, "A").Value       'ページ番号
        Dim strShpName As String
        strShpName = Cells(y, "B").Value 'オブジェクト名(重要!)

        'スライドとシェイプ(図形)を特定する
        Dim ppShape As Object
        Set ppShape = Nothing
        
        '【重要】指定したオブジェクト名が無い場合のエラー回避
        On Error Resume Next 
        Set ppShape = ppPrs.Slides(p).Shapes(strShpName)
        On Error GoTo 0

        If ppShape Is Nothing Then
            '見つからなかった場合、イミディエイトウィンドウに出力
            Debug.Print p & "ページ:" & strShpName & " が見つかりません"
        Else
            '★ここが最大のポイント!
            '.Value ではなく .Text を使うことで、見た目をそのまま転記
            ppShape.TextFrame.TextRange.Text = Cells(y, "C").Text
        End If
        
        y = y + 1 '次の行へ
    Wend
    
    MsgBox "転記処理が完了しました!"
End Sub

コード解説と「動画で見るべき」ポイント

このコードには、実務で躓かないための3つの重要なテクニックが含まれています。
動画の実際の動きと合わせることで、より深く理解できます。

1. 「オブジェクト名」が全ての鍵

マクロを動かすには、PowerPoint側の「図形」や「テキストボックス」の名前を知る必要があります。
「Rectangle 3」のような適当な名前のままだと、後で管理不能になります。

動画では、''「選択ウィンドウ」を使ってオブジェクト名を確認・変更する手順''を解説しています。ここを間違えるとマクロは1ミリも動きません。

2. エラーで止まらないための「保険」

実務では「指定したオブジェクト名が存在しない」ことがよくあります。その度にマクロが停止しては仕事になりません。
コード内の `On Error Resume Next` は、エラーを無視して次へ進むための重要な保険です。

動画では、''実際に名前を間違えてエラーを発生させ、回避する様子''をデバッグしながら実演しています。

3. 「.Value」の罠と「.Text」の正解

今回の動画のハイライトです。
Excelのセルからデータを取得する際、通常は `.Value` を使いますが、これだと計算結果の「数値」だけが取得され、表示形式(¥マークやカンマ、単位など)が失われます。

''「.Text」プロパティを使うことで、セルの「見た目」そのままを文字列として取得''できます。この違いを知っているだけで、転記後の修正作業がゼロになります。

応用テクニック:SUM関数との結合

「売上合計:1,000,000円」のように、文字と計算結果を組み合わせたい場合もありますよね?
Excel側で計算式を工夫することで、マクロ側を修正せずに柔軟に対応する方法も紹介しています。

= "売上合計:" & TEXT(SUM(D2:D10), "#,##0") & "円"

このようにExcel関数で見た目を作ってしまえば、あとはマクロの `.Text` で吸い上げるだけです。

まとめ

今回のコードを使えば、転記作業は一瞬で終わります。
動画では、ライブ配信ならではの「リアルな試行錯誤」や「デバッグの様子」もそのまま公開しています。きれいな教材動画ではありませんが、だからこそ現場の役に立つヒントが詰まっています。

ぜひ、動画で実際のスピード感を体感してみてください。

www.youtube.com


質問・感想・クレームなど、
気軽にコメント欄に書いてもらえるとうれしいです。

[Googleフォームにコメントを残す]
↑質問・コメントの入力フォームです、気軽に書いてください


フッター:最後にKen3Videoの動画一覧を紹介します

YouTubeにアップした動画です。他の動画を一瞬でも見てもらえるとさらに嬉しいです。
再生リスト:[三流君Ken3の最新動画]←リストの一覧形式で表示する


また、ブログを見に来てくださいね。ではまたぁ~