• ベストアンサー

WordVBAで規定のところに文字列を挿入したい

 VBA超初心者の質問です。  ExcelVBAでは値をセルに代入することは出来ますが、WordVBAで規定の場所に文字列を代入するといったことはどうすれば良いのでしょうか?  できれば、テキストボックスの中身と連動できたらと思うのですが、できますか?  ちなみに、私はVBAはほとんど知識がありません。  ただ単にVBAの勉強の手始めにこれだけ教えてください。  Web検索しても見つからないので、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

私もワードのVBAは初心者です。 (テキストボックスの作り方・値のセットのし方) 値は手動でなく、プログラムでセットする方法です。 Sub test05() ActiveDocument.Shapes.AddTextbox _(msoTextOrientationHorizontal,100 ,100,100,100).Select Selection.TypeText Text:="東京都文京区" End Sub 100,・・のところは、Left,Top,Width,Heightの指定です。ワードに貼り付けるコントロールはShapesでまとめられていて、エクセルなどと違うようです。 (所定のところへテキストボックスの値をセットのし方) 「所定のところ」と言うのが、ワードの場合は曲者なような気がする。取りあえず何行目の何文字目と言う指定を知りましたので、記します。 Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) MsgBox TextBox1.Text Selection.MoveDown unit:=wdLine, Count:=3 Selection.MoveRight unit:=wdCharacter, Count:=8 Selection.TypeText Text:=TextBox1.Text End Sub テキストボックスのイベントを、どれで捕らえるかが難しいが、比較的人為的にしないと起こらないダブルクリックにしました。 テキストボックス内に文字を入れ、テキストボックス内で ダブルクリックすると3行下の該当文字から8文字目に 入力文字が挿入されます。 ワードのVBAは(1)解説書が少ない。(2)エクセルのように、Cell(Range)に当たる基本的な単位に当たるものが、見つからない。(3)エクセル・アクセスVBAと統一されていない(4)ビジネスなどで利用応用出来る場面が良く見えない。など学習は苦難の道が待っている気がします。OKWEBの質問も回答も少ないようです。お互いに頑張りましょう。

toshihiko_ooishi
質問者

お礼

 回答ありがとうございました。  自分は、WordVBAを勉強して、まずは簡単なFAX送信票をフォームから入力できればと思っています。  現在はそれをFileMakerでやっていますが、なんかFileMakerの方が簡単そうです・・・。  Vectorでもフリーソフトが少ないようなので、元々このような用途には向かないのかもしれません・・・?

toshihiko_ooishi
質問者

補足

他の投稿が来そうにないので締め切ります。 ありがとうございました。

その他の回答 (1)

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

ちょっとむずかしいのですが、以下のURLを参考にしてやってみてください。 http://www.microsoft.com/japan/developer/library/off2000/vbawrd/womthMoveUp.htm

参考URL:
http://www.microsoft.com/japan/developer/library/off2000/vbawrd/woobjSelection.htm
toshihiko_ooishi
質問者

お礼

 回答ありがとうございました。  私には難しく全部はワカリマセンでしたが、挿入場所にブックマークを付けて、そこを選択するということですね?  後でVectorで見つけた「履歴書 For Word」では、挿入箇所にテキストボックスを入れて、VBAで参照しているようですが、Shapes(1)と数字が入るのが嫌な感じがします。他に方法はないものでしょうか。 ************************************************* ActiveDocument.Shapes(1).Select With Selection .Font.Size = 10 .TypeText Text:="氏名" & Space(8) & TextBox1.Text End With *************************************************

toshihiko_ooishi
質問者

補足

他の投稿が来そうにないので締め切ります。 ありがとうございました。

関連するQ&A

  • Excel2003での改列方法

    こんにちわ。 私はWindowsXPのExcel2003のVBAでテキストファイル のデータ(カンマ区切り)を指定したセル列に代入 したいと思っているのですが、途中でセル列を変えたら データの続きから代入したいのですが上手くいきません。 この説明だと分かりづらいと思うので下記の例を見てください。 例) テキストファイルの中身: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, 11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,      :      ・ 90,91,92,93,94,95,96,97,98,99,100 セル列(B1:B10)に1~10の値を代入し、他のセル列(E1:E10)に11~20の値を,またその他のセルに30~のデータを10ずつ区切って代入したい考えています。下記のコードを実行したところ、 Do Until EOF(intFF) Line Input #intFF, tmp buf = Split(tmp, ",") Worksheets("sheet1").Range("B1:B10,E1:E10,H1:H10") = buf Worksheets("sheet1").Range("B1:B10,E1:E10,H1:H10") = WorksheetFunction.Transpose(buf) Loop Close #intFF 最初のB列にはきちんと代入されるのですが、E列では全てのセルに1が、H列にはB列の値(1~10)が代入されてしまいます。どうしたら良いのかお教え願います。

  • ExcelVBAのマクロを使ってテキストファイルの文字を読み込む

    お世話になります 表題のとおりなのですが、ExcelVBAのマクロを使ってテキストファイルの文字を読み込むマクロの書き方を探しています。 具体的には、ExcelVBAで作ったボタンを押すと、あるテキストファイル(TEST.txt)に書かれている文字列をExcelVBAで取得して、それをセルに表示させるものです。 VBA関連のサイトがあまり無く困っています、宜しくお願いします。

  • エクセルにて、テクストボックスにセルの文字列を参照させているのですが、

    エクセルにて、テクストボックスにセルの文字列を参照させているのですが、セルの文字列の255文字分しか参照してくれません。テキストボックスに256文字以上参照させるにはどうすればよいでしょうか。よろしくお願いします。

  • PowerPointVBAで文字列の置換えは可能?

    PowerPointでも、VBAを使い色々なことが出来るということを知りました。 現在会社でPowerPoint2003を使用して、資料作成を行っているのですが 「全スライド中に存在する全てのテキストボックスから、特定の文字列を抽出して それらを特定の文字列に置き換える」ということは、VBAを使うことで実現可能でしょうか。 ExcelVBAのコードをアレンジしてひょっとして出来たりするのかな?と思ったりしているのですが・・・。 膨大なページ数がある資料の、ある語句を全て書きかえねばならず 手作業ではとても時間がかかってしまうので、なんとか自動化する方法はないだろうかと 思った次第です。 「可能」か「無理」だけでも知りたいと強く思っております。

  • 規定値、値要求、空文字列の許可

    規定値:未入力 値要求:いいえ 空文字列の許可:はい とするとNullの設定になるそうですが、 規定値:未入力 値要求:いいえ 空文字列の許可:いいえ にしてはいけないのでしょうか? こういう設定はないのでしょうか?

  • Excel文字列の連結について教えてください(VBA)

    Excelの文字列の結合について教えてください。 色々調べたのですが、VBA自体がよくわからず困っています。 やりたい事は、(Excel表をご参考) 『セルA1とB1とA2の文字を固定で、セルA3以降の文字以降を  順次連結してcsvに書き出すVBAを作成したい。』 どうしても繰り返す連結マクロがわかりません。 ExcelVBAに詳しい方、教えてください。 よろしくお願いします。 結果例) 20080501A01 20080501A02 20080501B01 20080501C01   ・   ・(300件以上続きます) <Excel表>    A列  B列 1  2008  05 2  01    3  A01 4  A02 5  B01 6  C01 7  ・ 8  ・

  • レポートのテキストボックスには規定値がないのでし

    レポートのテキストボックスには規定値がないのでしょうか? フォームではフォーム上にテキストボックスを設置して規定値に文字を入れれば フォームビューの時に入力した文字が表示されますが、 レポートではページヘッダーにテキストボックスの設置まではできますが プロパティを見ても「規定値」と言う項目がありません。 レポートを開いて印刷する時にVBAで Report_R受領確認書.担当者名テキスト = 名前 とやりたいのですが、エラーになってしまいます。 なので、直接テキストボックスの規定値に名前を入れてしまおうと思ったのですがそれも見つかりません。 テキストボックスではなく、ラベルを使って行うしかないのでしょうか?

  • Excelでセル内の文字列をバイナリ値として扱う方法はないでしょうか。

    Excelでセル内の文字列をバイナリ値として扱う方法はないでしょうか。 セルに貼付けた(エンコードされている)日本語URLをデコードしたいと思っております。 Unicode文字列はVBAからJScriptの関数を呼び出して対応しましたが、 長期的にはEUC-JPやその他の文字コードもデコードしたいと思っています。 手法は今も調べていますが現時点では、汎用的な関数を自作するしかないと認識しています。 そこで、 ADODB.Streamオブジェクトにバイナリモードでセルの値を書き込んだ後に、 テキストモードで任意のCharsetを指定してみたのですが、 セルの値は文字列として扱われ、バイナリ値として直接書き込めませんでした。 具体的には、EUC-JPでエンコードされた 「%a5%c6%a5%b9%a5%c8(テスト)」という文字列からReplace関数で「%」を除去し、 バイト型配列に代入した時点で、「a5c6a5b9a5c8」という文字列として扱われている という状態です(バイナリ値として入力されませんでした)。 上記以外のアプローチの仕方も含めて模索している状態です。 問題に対する考え方だけでもご指摘いただければと思います。 よろしくお願いします。

  • Excel セル内文字列編集

    (Excel2003/WinXP) いつも大変お世話になっています。 Excelの任意のセル内に文字列があり、 その中をドラッグして部分文字列を選択します。 その選択した文字列を同じセル内の任意の位置に移動するには、 {Ctrl}+cや{Ctrl}+vを使わないとすると、 どんな方法が考えられますか? (Word的な編集テクニックです) テキストボックスに置き換えても どうもうまく実装できません。 なんとかこれを実現する方法を探してます。 既存のテキストエディターとリンクする、 アドインなどもやってみましたが、 機能的にはOKなんですが、いまいち満足していません。 スマートな方法はないものでしょうか? VBA&API、なんでもいいので、 教えていただければ幸いです。 いつも質問ばかりで気が引けるのですが、 よろしくお願いいたします。

  • AccessVBA テキストボックスの内容を規定値

    AccessVBA テキストボックスの内容を規定値に設定したい 環境:Access2003 VBA WindowsXP sp3 テキストボックスに入力された値を、規定値として設定したいです。 テキストボックスは30個程度。 『任意』のテキストボックスのみ設定したいので関数の自作を考えています。 コマンドボタン『既定1』を押すと、右側の『テキストボックス1』の内容が既定として登録されるよう考えています。 イメージ ↓コマンドボタン    ↓テキストボックス [既定1]   [テキストボックス1         ] [既定2]   [テキストボックス2         ] [既定3]   [テキストボックス3         ] …… … VBAにて下記ソースを書いたのですが正常に動作しません。 自作関数にて、引数 textboxName へと "テキストボックス名"を代入しています。 プログラムを実行すると    『修飾詞が不正です』    textboxName.ForeColor = 255    ~~~~~~~~~~~ というエラーが出てしまいます。 この時の引数の中身は textboxName = "テキストボックス1"です textboxName.ForeColor を テキストボックス1.ForeColor として認識してくれないようです。 解決方法を教えてください ソースは以下の通り------------------------------------- Option Compare Database ------------------------------------------------------- Function textboxSetDefault(textboxName As String) 'テキストを赤に変更 textboxName.ForeColor = 255 '現在入力されている値をデフォルト値に設定 textboxName.DefaultValue = textboxName.Value End Function ------------------------------------------------------- Private Sub 既定1ボタン_Click() Call textboxSetDefault(テキストボックス1.Name) End Sub -------------------------------------------------------

専門家に質問してみよう