
wordマクロについて教えてください
文字列A~文字列B
必要部分
文字列A’~文字列B’
という構成で必要部分だけ残したいのですが、難しくて。。
※文字列A、B、A'、B'は文中に1度しか出てこない事は確認済みです
3万文字の中から100文字程度残したいのですが、1000ファイルあるので手作業ではとても出来なくてマクロでやってみようかと思ったのですが
1.文字列Aを検索→範囲指定開始 文字列Bを検索→範囲指定終了 という考えで合っているのか
2.コード、参考になるWEBなど教えてください
3.文字列に「”」が含まれている場合の処置
以上よろしくお願いします
No.3ベストアンサー
- 回答日時:
もっとスマートな書き方があると思いますが、とりあえずは提示できる
マクロの例です(記録マクロそのままを利用しています)。
文字列A~文字列B
必要部分
文字列C~文字列D
として処理しています。
Sub test()
Call Macro1
Call Macro2
End Sub
Private Sub Macro1()
Selection.Find.ClearFormatting
With Selection.Find
.Text = "文字列A"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = True
End With
Selection.Find.Execute
Selection.Extend
Selection.Find.ClearFormatting
With Selection.Find
.Text = "文字列B"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = True
End With
Selection.Find.Execute
Selection.Delete Unit:=wdCharacter, Count:=1
End Sub
Private Sub Macro2()
'
' Macro1 Macro
'
'
Selection.Find.ClearFormatting
With Selection.Find
.Text = "文字列C"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = True
End With
Selection.Find.Execute
Selection.Extend
Selection.Find.ClearFormatting
With Selection.Find
.Text = "文字列D"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = True
End With
Selection.Find.Execute
Selection.Delete Unit:=wdCharacter, Count:=1
End Sub
No.2
- 回答日時:
(´・ω・)...ファイルごとに条件が違うなら、一つずつ手作業が基本だお。
そもそもの考え方が間違っているじょ。
No.1
- 回答日時:
(´・ω・`)たかだか1000ファイルなら、手作業で良いと思うんだ。
それが10万ファイルとか100万ファイルとかだったら、さすがに考えるけどね。
マジで。
・・・本題・・・
とりあえず、「マクロの記録」で ”Word” という文字列を ”ワード” という文字列に「全て置き換える」動作を記録してみました。
Sub Macro1()
'
' Macro1 Macro
'
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Word"
.Replacement.Text = "ワード"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
こんな感じになる。
必要な「置換」を必要な回数繰り返すマクロにすれば良いでしょう。
※「置換」で ”ワード” を空白にすれば「削除」になります。
・・・
あ。上のコードは行頭の連続した半角スペースを全角スペースにしています。注意してください。
ありがとうございます 文字を置換するのは出来るんですけど、文字列A~Bまでの内容はファイルによって違うので単純に置換では処理できませんでした
今後、同じような処理が必要になってくるので手作業では厳しいんですよね
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
エクセルで文字列をtxtファイル...
-
VBの「As String * 128」とは?
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
Msgboxの×が押されたとき
-
Excelで偶数行だけ文字列を数え...
-
VBA 1つのセルに入っている値の...
-
文字列からタブコードを取り除...
-
SQL の Update文(?) と ...
-
アクセスで特定の数字以外(複...
-
php言語の脆弱性について
-
grepで検索行以外の行を抽出す...
-
Excelで3E8を3.00E+8にしない方...
-
aaa.bbb.ccc という、「ドット...
-
【Teraterm】文字列と変数の連...
-
UNIX:縦一列のファイルを横一行...
-
PDFのファイル名をリネームをし...
-
エクセルでSQLでいうところの「...
-
C言語の勉強しています。すみま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
エクセルで文字列をtxtファイル...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
Excelで指数表現しないようにす...
-
エクセルで文字列の最大値を抽...
-
VBの「As String * 128」とは?
-
VBA2005 16進を2桁で表示したい。
-
Excelで3E8を3.00E+8にしない方...
-
【Excel VBA】複数ある特定の文...
-
OnTime 使用時のプロシージャへ...
-
アクセスで特定の数字以外(複...
-
エクセル 数値データを桁をそ...
-
Msgboxの×が押されたとき
-
ORCLEでの小数の表示方法の変更...
-
VBAを使って選択した範囲の数字...
-
MS SQLServer のSQLで文字列の...
-
同一セル内に関数と文字列を同...
-
Pro c/c++ でホスト変数の後に....
おすすめ情報