word VBAを使いこなせる人は少ないようです。市販解説本も2-3冊で、また(テーマを指定して、ぴったりの)WEB記事も見つけにくい。(特にOKWAVEのこのカテの質問読者に限れば)出来る人は少ないと予想するので。)
エクセルVBAができるからと言って、類推しては、えらい目にあう(すぐ行き詰まる)だろう。
WordVBAの文書の構成の理解の仕組についての理解も解説を探すのも一苦労。
小数箇所なら、とりあえず、手作業でやることを勧めます。常識的には、仕事人には、時間の無駄です。
ーーー
私はword VBA初心者ですが、下記を書いてみました。泥臭い初歩的ロジックです(なぜそうなるのか、本回答最後の辺の記事を参照)が。
データの有り様によっては、うまく行かない場合はあるでしょう。でも参考に。
ーー
文書の標準モジュールに(エクセルではないよ)
Sub 開始位置と終了位置を取得()
Selection.Find.ClearFormatting
'GoTo p2
Dim Target As String
Dim Myrange As Range
Dim GetStart1 As Long
Dim GetEnd1 As Long
'----株式会社
Set Myrange = ActiveDocument.Range(0, 0)
Target = "株式会社"
With Myrange.Find
.Text = Target
'検索実行
Do While .Execute
'検索文字の開始位置と終了位置を取得
If .Found = True Then
GetStart1 = Myrange.Start
GetEnd1 = Myrange.End
End If
MsgBox "開始位置:" & GetStart1 & vbCrLf & "終了位置:" & GetEnd1
Loop
End With
p2:
MsgBox "AAAA"
'----御中
Dim GetStart2 As Long
Dim GetEnd2 As Long
Set Myrange2 = ActiveDocument.Range(0, 0)
Myrange2.Find.ClearFormatting
Target = "御中"
With Myrange2.Find
.Text = Target
'検索実行
Do While .Execute
'検索文字の開始位置と終了位置を取得
If .Found = True Then
GetStart2 = Myrange2.Start
GetEnd2 = Myrange2.End
MsgBox "開始位置:" & GetStart2 & vbCrLf & "終了位置:" & GetEnd2
End If
Loop
'=======
ActiveDocument.Range(GetStart1 + 4, GetEnd2 - 2).Select
Selection.TypeText Space(15)
End With
End Sub
ーー
納得の段階が過ぎたらMsgboxの全行は削除してください。
テストデータはワード文書に
ーー
お願い
株式会社 西武振興産業 総務部 御中
いつもお世話になっており有難く存じておりま す
さて,
先日お送りしました・・
ーー
のようなものを作ってテストしました。
===
先日ふと、似た別件ですが、正規表現で、「( と )に囲まれた文字列を抽出する」というパターンをWEBで調べましたが、見つかりましたが、非常に理解がむつかしい。
https://docs.microsoft.com/ja-jp/visualstudio/ide/using-regular-expressions-in-visual-studio?view=vs-2019
==
構造的に、こういうパターンの課題に適したツールを、VBAは、備えてないと思いました。
お礼
何度も回答ありがとうございました。 テキストボックスにこだわっていましたが、仰る通り、文書内にそのまま書く方が自然ですね。 文書内に直接書けば、頂いたマクロを活用できましたので、文書を変更しました。