スポンサーリンク

050-VBA

WORDのVBAでかなり悩んだ!ユーザーフォームのテキストボックスからワードに文字列を入力する方法!

へっぽこヘタレシステム管理者の管理人です。

さて、エクセルではマクロやVBAを弄ることは、たまにあるのですが・・・

今回は、ワードでVBAを組んで、ユーザーフォームからワード本文にテキストを送信する方法を実践してみたので、忘備録として掲載しておきます。

ワードは、社会人になってから25年くらい使っていますが・・・

マクロ付きの【拡張子docm】は、生まれて初めて使いました。

実際に使うことはあまりないとは思うのですが・・・

たまたま、仕事の関係で、作る事になったのですが・・・

エクセルのユーザーフォームとはかなり勝手が異なっており・・・

かなり苦戦しました。

イチバン苦労したのは、テキストの送信先の・・・

【Object】の指定方法が分からないというモノでした。

インターネットでもイロイロ検索したのですが、エクセルのVBAほど情報もあまり無いですし・・・

そもそもエクセルのVBAと記述が結構違う気がします。

これも慣れの問題なのかもしれませんが・・・

覚えておいて損をすることもないと・・・と思うことにします。

ワードにコンテンツコントロールとテキストボックスを配置する

まずは、テストとして、ワードに

  • コンテンツコントロール
  • テキストボックス

を配置します。

コンテンツコントロールの配置については【開発タブ】が必要となりますので・・・

あらかじめ、表示させておきましょう。

コンテンツコントロールには、プロパティで【タイトル】を設定しておきます。

テキストボックスは、適当に配置しておきます。

【Object】の記述方法が本文内とヘッダー内で異なりますので・・・

練習の為に、本文とヘッダー内の用法にテキストボックスを配置します。

ユーザーフォームを作る

次にユーザーフォームを【Visual Basic Editor】から適当に作ります。

テキストボックスを配置し・・・

コマンドボタンを貼り付けます。

スポンサーリンク

ブログランキングにご協力ください!
ブログランキング・にほんブログ村へ

コマンドボタンにコードを設定する

次に、コマンドボタンにコードを設定します。

コードの詳細は次のとおりです。

本文のコンテンツコントロールにユーザーフォームのテキストボックスから文字列を入力する。

'コンテンツコントロールにフォームから文字列挿入
 
    Dim control As ContentControl
    
    'テンプレートのテキストコンテンツコントロールにフォームの値を代入

    For Each control In ActiveDocument.ContentControls

        'タグで処理する場合は、control.Tag

        Select Case control.Title

            'Caseの""内はWordテンプレートにあるテキストコンテンツコントロールのタイトル名

            Case "textA"
                control.Range.Text = Me.TextBox1.Text
                
            Case "textB"
                control.Range.Text = Me.TextBox2.Text
                
            Case "textC"
                control.Range.Text = Me.TextBox3.Text
                
         End Select
  
    Next

コンテンツコントロールのタイトル名でオブジェクトを指定します。

次に・・・

ヘッダー内のテキストボックスに文字列を入力する記述する。

'ヘッダーのテキストボックスに文字列挿入

    
   Set A = ActiveDocument.Sections(1).Headers(1).Shapes(1).TextFrame.TextRange
    
     Debug.Print A.Text 'デバック用なのでなくてもOK
    
   A.Text = Me.TextBox4.Text

次の 【ヘッダー内のテキストボックスオブジェクトの指定】の記述が分からずに・・・

ActiveDocument.Sections(1).Headers(1).Shapes(1).TextFrame.TextRange

かなり苦労しました。

Shapes(1) のカッコ内の数字は、テキストボックスの個数番号なのですが・・・

複数になるとこれが分からない・・・

テキストボックスのオブジェクト名を調べる方法があるのなら教えて欲しいですね。

次に・・・

本文内のテキストボックスに文字列を入力する記述する。

'本文内のテキストボックスに文字列挿入
    
    
   Set B = ActiveDocument.Shapes(1).TextFrame.TextRange

     Debug.Print B.Text 'なくてもOK
 
   B.Text = Me.TextBox5.Text
     
   
   
   Set C = ActiveDocument.Shapes(2).TextFrame.TextRange
     
    Debug.Print C.Text ’なくてもOK
   
  C.Text = Me.TextBox6.Text
    

ここもヘッダーの場合と記述の方法がことなりますので注意が必要です。

Shapes(2) のカッコ内の数字もテキストボックスによって変わりますが・・・

これも指定したいテキストボックスが何番か調べる方法がイマイチ分かりません。

最後に、実際に実行し思った通りに文字列が入力されるかテストします。

ファイルを開いたときにフォームを表示させる

さいごにファイル開いたときにフォームを自動で表示させる方法です。

【Visual Basic Editor】で標準モジュールを追加し・・・

Sub AutoOpen()

    UserForm1.Show

End Sub

と記述すればOKです。

マクロで指定することもできます。

ブログ開設に必要なドメイン取得、サーバーレンタル、ASPの登録等は、こちらのサイトから!

スポンサーリンク
スポンサーリンク

-050-VBA

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


関連記事

使った事も触った事もないRPA【WinActor】!初見で特別定額給付金支給システムへの自動入力シナリオを無理やり作って動かした件!

さて、特別定額給付金の支給事務で5月のサビ残業が100時間を超過した管理人です。 土日も休みがありません。 遅れていた特別定額給付金の支給システムがようやく稼働したとおもいきや・・・ 特別定額給付金の …

Accessでユーザー定義関数を作る!基本はエクセルの場合と同じ方法でOK!

エクセル【EXCEL】でユーザー定義関数は、よく使いますが・・・ そういえば、アクセス【ACCESS】では、使った事がないなと思い・・・ 作り方を整理してみました。 基本はEXCELの場合と同じ 試し …

code1-eyecatch

AI-OCR【Tegaki+Seisho】&RPA【WinActor】!稼働させるマシンスペックは重要なのか?

国民1人10万円給付【特別定額給付金】の支給事務で、連日連夜のサビ残続きの管理人です。 既に、7割弱の申請書が届いていますが・・・ 入力作業がなかなか捗りません・・・ パンチャー6人・RPA2台体制で …

エクセルマクロの本を買ってみた!【EXCEL自動化の教科書】!35万部も売れているらしいが?

管理人はこれまで、エクセルのマクロを仕事上いくつも作成していますが、すべて独学とGoogle検索だけで済ませていました。 真面目に本を読んで知識をインプットした事がなかったので、1冊本を買ってみようと …

ZOOM+Openmeetings+VideoCaptureでインターネットに接続されていないLAN環境でもWEBセミナーを受講できる

へっぽこヘタレシステム管理者の管理人です。 さて・・・ コロナ禍のせいで、なんでもかんでもZOOM等のWEB会議ソフトを使って、会議や講習会が開催され、その度に準備に呼ばれる面倒な日々を送っております …

スポンサーリンク
スポンサーリンク
スポンサーリンク