マンガでよめる痔のこと・薬のこと

Word文書を作成しています。
複数の単語の、色を変えたいと思い。
置換をマクロで記録をしてみたのですが、実行してもなにも起こらないのです。
これはなぜなのでしょうか?
ちなみに置換しているのは色のみで、文字はそのままです。

また他にもマクロのような一括でできる機能などはないのでしょうか?
よろしくおねがいいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんばんは。



複数の単語を変換する場合は、ループにしてあげればよいのですが、以下は、文字の色を換えるマクロです。

>これはなぜなのでしょうか?
記録マクロではそのサポートがないからだけです。しょせん、記録マクロの限界です。


Sub FormatReplacing()
  With ActiveDocument.Content.Find
    .ClearFormatting
    .Text = "あ"
    .Wrap = wdFindContinue
    .Font.ColorIndex = wdAuto '黒(自動)
    With .Replacement
      .ClearFormatting
      .Text = "あ"
      .Font.ColorIndex = wdRed '赤
    End With
    .Execute Replace:=wdReplaceAll
  End With
End Sub
    • good
    • 0

以下は生半可な知識ですのでお許しを。


私はワード2002です。この書式に関連した検索置換の辺はバージョンで差が大きいかも。
(1)マクロの記録では文字のフォントの指定のコードは出てこない。下記コード参照。不思議だが。
編集ー置換のダイアログボックスの、検索と置換の文字をそれぞれ
の機会に別に範囲指定して、書式ボタンをクリックすると、
検索の文字と置換後の文字の書式(をフオントの色)を指定できるから、そこで指定しておく。そして置換ボタンは、押さないで置く。
下記(2)の後マクロで実行する。
(2)文字を検索文字と置換後文字を同じにして(置換後の文字の書式だけ変えても)、マクロを実行しても効果が出なかった。それで一旦仮に(他に出現しないような)差しさわりのない別の文字に一旦置換で変えて、その後もう一度元に戻す置換をマクロで実行する。
そのとき、置換ダイアロウグの置換後の文字の(元の文字である)フォントの色を望みのものに設定しておく。
検索する文字列について、文字列+書式(フォント色)
の両者が合わないと、マクロなりで実行した置換の効果は得られない
から(当然だろうが)注意のこと。
ーー
以上だと、なんとも奇妙な点なのだが、他に正しい採るべき方法があるかもしれないのですが、参考までによろしく。
参考にマクロの記録結果はたぶん質問者と同じで
Sub Macro54()

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "海"
.Replacement.Text = "道"
.Forward = True
.Wrap = wdFindAsk
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
組み込みの置換ダイアロウグをコードで出し各項目(例えば書式ボタンクリック以下)セットもパラメータで与えられると思うが、知識が十分でないので略。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCEL VBA でのワード置換

EXCEL VBA でのワード置換を教えてください。

EXCELからワードをオープンして文字列置換をしたいです。

Dim wdObj As Object
Dim wdDoc As Object
Dim objSelect As Object
Dim xResult As Boolean

Set wdObj = CreateObject("Word.Application")

wdObj.Visible = True
Set wdDoc = wdObj.Documents.Open(ActiveWorkbook.Path + "\Sample.doc")
Set objSelect = wdObj.Selection

objSelect.Find.Text = "*****"
objSelect.Find.Replacement.ClearFormatting
objSelect.Find.Replacement.Text = Format(35000, "###,###,###")

objSelect.Find.Execute(Replace:=wdReplaceAll)


上記コードで実行したところ、検索はできるのですが、置換ができません。
手動で置換フォームを出してみると、検索文字列、置換文字列ともに目的の文字列が入っています。
そのまま「全て置換」のボタンを押すと、問題なく置換されます。

色々調べてみたのですが、どのサイトもExecuteで置換できるように書かれていて、煮詰まってしまいました。

お知恵をお貸し下さい。

EXCEL VBA でのワード置換を教えてください。

EXCELからワードをオープンして文字列置換をしたいです。

Dim wdObj As Object
Dim wdDoc As Object
Dim objSelect As Object
Dim xResult As Boolean

Set wdObj = CreateObject("Word.Application")

wdObj.Visible = True
Set wdDoc = wdObj.Documents.Open(ActiveWorkbook.Path + "\Sample.doc")
Set objSelect = wdObj.Selection...続きを読む

Aベストアンサー

以下のマクロで試してみて。

Sub test()
 Dim wdObj As Object
 Dim wdDoc As Object
 Dim objSelect As Object
 Dim xResult As Boolean

 Set wdObj = CreateObject("Word.Application")
 wdObj.Visible = True

 Set wdDoc = wdObj.Documents.Open(ActiveWorkbook.Path + "\Sample.doc")
 Set objSelect = wdObj.Selection

 objSelect.Find.ClearFormatting
 objSelect.Find.Replacement.ClearFormatting
 
 With objSelect.Find
  .Text = "*****"
  .Replacement.Text = Format(35000, "###,###,###")
  .Forward = True
  .MatchFuzzy = True
  .MatchWholeWord = False
  .MatchCase = True
  .MatchWildcards = False
  .Forward = True
  .Wrap = 1 'wdFindContinue
  .Format = False
  .Execute , , , , , , , , , , 2 'wdReplaceAll
 End With

End Sub

ExcelでWordの置換を操作する場合
Find.Execute のパラメータを省略する場合「, , , , , , , , , , 2」の
ように書くほうが確実みたい。
https://msdn.microsoft.com/ja-jp/library/microsoft.office.interop.word.find.execute(v=office.11).aspx

それと、Selection.Find を使う場合は、条件を省略しないほうが良い
らしいです。
https://oshiete.goo.ne.jp/qa/5559086.html

以下のマクロで試してみて。

Sub test()
 Dim wdObj As Object
 Dim wdDoc As Object
 Dim objSelect As Object
 Dim xResult As Boolean

 Set wdObj = CreateObject("Word.Application")
 wdObj.Visible = True

 Set wdDoc = wdObj.Documents.Open(ActiveWorkbook.Path + "\Sample.doc")
 Set objSelect = wdObj.Selection

 objSelect.Find.ClearFormatting
 objSelect.Find.Replacement.ClearFormatting
 
 With objSelect.Find
  .Text = "*****"
  .Replacement.Text = Format(350...続きを読む

Qワードにおいての置換 「する。」→「します。」ができない

ワードにおいて50ページ近くの文書で置換をしたいのですが、なぜかうまくいきません。

「する。」→「します。」としたいのですが、「する。」の「。」が認識されていないようです。文章途中の「~する~」まで「~します~」となってしまいます。

どうすればちゃんと認識できるでしょうか?

ご教授よろしくお願いします。

Aベストアンサー

Office 2003での検証では

置換のときに

オプション:あいまい検索(日)

になっている。
オプションボタンをクリックして
あいまい検索のチェックボックスをはずすなり
(あいまい検索の)オプションで適宜変更してあげれば区別される。

http://office.microsoft.com/ja-jp/word/HP051894331041.aspx

Word 2007については調べてない。きっと似たようなのがあるだろう。

QWord-VBAで文字色を一括置換したいのですが、

Word文書で、赤い文字だけを白文字に変更するマクロを作りたいと思い、マクロの記録機能で記録されたものを参考に以下のようなマクロを作りました。

With Selection.Find
.ClearFormatting
.Font.Color = wdColorRed
.Replacement.ClearFormatting
.Replacement.Font.Color = wdColorWhite
End With

このマクロには不都合がありまして、、、

1.カーソル位置より上方の赤文字は変更されない
2.テキストボックス内の赤文字も変更されない

ということで困っております。ヘルプもあちこち見ましたが、どうにもうまくいきません。どなたかご存知の方、解決方法についてアドバイスをいただければ幸いです。

Aベストアンサー

Wordのマクロは、あまり、作ったことがありませんので、うまくなかったら
ご容赦ください。

Sub test()
 Dim rngWord As Range
 Dim shp As Shape
 Dim rng As Range
 '文字色の変更
 For Each rngWord In ActiveDocument.Words
  If rngWord.Font.Color = wdColorRed Then '赤
   rngWord.Font.Color = wdColorWhite '白
  End If
 Next rngWord
 'テキストボックスの中の文字色の変更
 For Each shp In ThisDocument.Shapes
  If shp.AutoShapeType = msoShapeRectangle Then
   For Each rng In shp.TextFrame.ContainingRange.Characters
    If rng.Font.Color = wdColorRed Then '赤
     rng.Font.Color = wdColorWhite '白
    End If
   Next rng
  End If
 Next
End Sub

Wordのマクロは、あまり、作ったことがありませんので、うまくなかったら
ご容赦ください。

Sub test()
 Dim rngWord As Range
 Dim shp As Shape
 Dim rng As Range
 '文字色の変更
 For Each rngWord In ActiveDocument.Words
  If rngWord.Font.Color = wdColorRed Then '赤
   rngWord.Font.Color = wdColorWhite '白
  End If
 Next rngWord
 'テキストボックスの中の文字色の変更
 For Each shp In ThisDocument.Shapes
  If shp.AutoShapeType = msoShapeRectangle Then...続きを読む

QWORD VBA 繰り返し処理

WORD VBAについて教えてください。

つぎのようなマクロがあり、これを検索する文字列がなくなるまで、繰り返して、処理するようにしたいのですが、どうすればよいのでしょうか?

Sub Macro1()
Selection.Find.ClearFormatting
With Selection.Find
.Text = "あ"
.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.MoveRight Unit:=wdCharacter, Count:=1
End Sub

WORD VBAについて教えてください。

つぎのようなマクロがあり、これを検索する文字列がなくなるまで、繰り返して、処理するようにしたいのですが、どうすればよいのでしょうか?

Sub Macro1()
Selection.Find.ClearFormatting
With Selection.Find
.Text = "あ"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
...続きを読む

Aベストアンサー

こんにちは。

>繰り返し処理の書き方を知りたい
それは、サンプルが良くないですね。
直接の回答にはならないかもしれませんが、こういうのはどうかしら?

Sub SampleTest1()
Dim blnFound As Boolean
Dim rngContent As Range
Dim intCount As Integer

blnFound = True
Set rngContent = ActiveDocument.Content
intCount = 0

Do While blnFound = True
  With rngContent.Find
    .ClearFormatting
    .Wrap = wdFindStop
    .Text = "あ"
    .Execute
  End With
  blnFound = rngContent.Find.Found
  If blnFound = True Then intCount = intCount + 1
Loop
MsgBox (intCount & "個見つかりました。")
End Sub

こんにちは。

>繰り返し処理の書き方を知りたい
それは、サンプルが良くないですね。
直接の回答にはならないかもしれませんが、こういうのはどうかしら?

Sub SampleTest1()
Dim blnFound As Boolean
Dim rngContent As Range
Dim intCount As Integer

blnFound = True
Set rngContent = ActiveDocument.Content
intCount = 0

Do While blnFound = True
  With rngContent.Find
    .ClearFormatting
    .Wrap = wdFindStop
    .Text = "あ"
    .Execute
  End...続きを読む

QExcelからワード文書の文字置換を実行する(ワードでのマクロも)

ワードの文書中の文字列をマクロで書き換える。
準備:ワード文書(「文書1.docx」)にて 
本文中に 「すずき」
表に 「すずき」
ヘッダー、フッターに 「すずき」
ふたつのTextBox中に 「すずき」

ワードのマクロ、エクセルでのマクロを、とにかく、試行錯誤で完成させました。
しかし、意味が分からない部分があります。
下記にて①、②、③、そして、安定の観点からのサジェスチョンを
お願いしたいと思います。
方法は、これだけではないと思います。多分、使うクラス、メンバーの違い
だと思います。何がしかのサジェスチョンをいただければ幸いです。
宜しくお願い致します。
尚、環境は Windows10(Windows8.1 32bitからup),Office2010です。

'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Sub ワードでのマクロ()
Dim sec As Section
Dim hdr As HeaderFooter
Dim i as Integer

' 文章全体に対して、置換を実行する=====================
ActiveDocument.Range(0, 0).Select ’①必要性はない
Selection.WholeStory       ’①仮に入れるなら、どんな場合?

strFind = "すずき"
strReplace = "鈴木"

With Selection.Find
.Text = strFind
.Replacement.Text = strReplace
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With

' フッターに対して、置換を実行する=====================
For Each sec In ActiveDocument.Sections ’②For eachの必然性?
For Each hdr In sec.Footers        ’②同様に
With hdr.Range.Find ’3回,回るが、フッタが3つあるわけではない!?
.Text = strFind
.Replacement.Text = strReplace
.Forward = True
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
Next
Next

' ヘッダーに対して、置換を実行する=====================
For Each hdr In ActiveDocument.Sections.Item(1).Headers
’③Itemを使うことでも、OKであったが、やはりメンバーはitem(1)だけのようだ。
' このからくりはどうなっているのであろうか?
With hdr.Range.Find
.Text = strFind
.Replacement.Text = strReplace
.Forward = True
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
Next

'Shapeオブジェクトに対して置換実行=================
For i = 1 To ActiveDocument.Shapes.Count 
’For NextはTextBoxの数だけ。従って理解可。
ActiveDocument.Shapes(i).Select
Selection.Find.ClearFormatting       
Selection.Find.Replacement.ClearFormatting 
With Selection.Find
.Text = strFind
.Replacement.Text = strReplace
.Forward = True
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
Next i
End Sub

'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sub エクセルでのマクロ()
Dim WdApp As Word.Application
Dim WdDoc As Word.Document

'ワード 文章全体に対して、置換を実行する===================
Set WdDoc = GetObject("C:\文書1.docx") ’ワード文書をオープン
Set WdApp = WdDoc.Application
WdApp.Visible = True
WdDoc.Activate
strFind = "すずき"
strReplace = "鈴木"
With WdDoc.Content.Find
.Text = strFind
.Replacement.Text = strReplace
.Forward = True
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With

' フッターに対して、置換を実行する=====================
Dim sec As Word.Section
Dim hdr As Word.HeaderFooter
For Each sec In WdDoc.Sections
For Each hdr In sec.Footers
With hdr.Range.Find
.Text = strFind
.Replacement.Text = strReplace
.Forward = True
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
Next
Next

' ヘッダーに対して、置換を実行する=====================
For Each hdr In WdDoc.Sections.Item(1).Headers
With hdr.Range.Find
.Text = strFind
.Replacement.Text = strReplace
.Forward = True
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
Next

'Shapeオブジェクトに対して置換実行=================
Dim myShape As Word.Shape
For Each myShape In WdDoc.Shapes
myShape.TextFrame.TextRange.Find.ClearFormatting
myShape.TextFrame.TextRange.Find.Replacement.ClearFormatting
With myShape.TextFrame.TextRange.Find
.Text = strFind
.Replacement.Text = strReplace
.Forward = True
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
Next
WdApp.Quit

End Sub

ワードの文書中の文字列をマクロで書き換える。
準備:ワード文書(「文書1.docx」)にて 
本文中に 「すずき」
表に 「すずき」
ヘッダー、フッターに 「すずき」
ふたつのTextBox中に 「すずき」

ワードのマクロ、エクセルでのマクロを、とにかく、試行錯誤で完成させました。
しかし、意味が分からない部分があります。
下記にて①、②、③、そして、安定の観点からのサジェスチョンを
お願いしたいと思います。
方法は、これだけではないと思います。多分、使うクラス、メンバーの違い
だと思い...続きを読む

Aベストアンサー

No.1の回答者です。
お礼を読みました。VBAでステップインを使ってマクロの動作確認を
しているのですね。
私は、マクロについて少しずつ理解している最中であり、高度な処理を
するようなものは、理解もできていませんし書くこともできません。
ですから、いくつかの疑問に対しては、私なりに理解している範囲での
回答になりますので、違っている場合もあります。


お礼の1.について
> Selectionを入れることで、動きました
そうですか。私も理解しているわけではないのですが。
'ActiveDocument.Range(0, 0).Select
このコメントブロックを解除してもダメだったのでしょうか?

変数rngを本文領域でも使えるようにする方法もあります。
Set rng = ActiveDocument.Range(Start:=0, End:=0)
With rng.Find
.Text = strFind
.Replacement.Text = strReplace
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
私の環境では、これで動作します。


お礼の2.について
> ' セクションごとのヘッダー・フッターで指定
> For Each sec In ActiveDocument.Sections

繰り返しが必要なのは、SectionオブジェクトにはHeadersプロパティと
Footersプロパティがあり、HeadersFootersコレクションオブジェクト
を持つためです。ここには3つの定数があり、それぞれに対して指定を
する必要があるためです。
http://www.relief.jp/itnote/archives/word-vba-header-footer-link-previous.php

さらに、セクション数が複数の場合に、セクション1と次のセクション
との関係で、前セクションとリンク(前と同じ)が切れている場合に、
指定した置換設定が続いているセクションでは実行されないためです。

このことから、セクションを指定する場合は、必要なので記入します。


お礼の3.について
お礼の2.と関連しますが、HeadersFootersコレクションオブジェクト
の3つの定数ごとに処理をしますので、3回の処理をします。
 wdHeaderFooterEvenPages
 wdHeaderFooterFirstPage
 wdHeaderFooterPrimary
これをセクションごとのヘッダーとフッターで繰り返すためです。


お礼の4.について
テキストボックスのみのロックなどがあることすら知りません。
Wordだけで作成したテキストボックスなのでしょうか?
(Excelなら、個別にロックできるので)
Wordにも[編集の制限]がありますが、保護を開始して制限する範囲に、
テキストボックスのみがあるとは思えないのですが?
エラーになる部分のテキストボックスを直接確認してみてはいかが。

今回のエラーが、何が影響しているのか私にはわかりません。
On Errorステートメントでエラーを無視することはできそうですが、
これを使うのは原因がわかっている場合のほうが良いみたいです。
http://officetanaka.net/excel/vba/statement/OnError.htm

ちなみに、Wordのバージョンなどの環境を書いたほうが、お互いの
違いによるトラブルを避けることができると思いますよ。
私の場合はWord2013なのですが、No.1の回答で提示したマクロは、
以前所持していたWord2002でも実行できたと思います。

No.1の回答者です。
お礼を読みました。VBAでステップインを使ってマクロの動作確認を
しているのですね。
私は、マクロについて少しずつ理解している最中であり、高度な処理を
するようなものは、理解もできていませんし書くこともできません。
ですから、いくつかの疑問に対しては、私なりに理解している範囲での
回答になりますので、違っている場合もあります。


お礼の1.について
> Selectionを入れることで、動きました
そうですか。私も理解しているわけではないのですが。
'ActiveDocument.Range(0, 0)...続きを読む

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

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

Aベストアンサー

私もワードの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の質問も回答も少ないようです。お互いに頑張りましょう。

私もワードのVBAは初心者です。
(テキストボックスの作り方・値のセットのし方)
値は手動でなく、プログラムでセットする方法です。
Sub test05()
ActiveDocument.Shapes.AddTextbox _(msoTextOrientationHorizontal,100 ,100,100,100).Select
Selection.TypeText Text:="東京都文京区"
End Sub
100,・・のところは、Left,Top,Width,Heightの指定です。ワードに貼り付けるコントロールはShapesでまとめられていて、エクセルなどと違うようです。
(所定のところへテキストボックスの値をセットのし方...続きを読む

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

QWordのマクロが記録出来ない

Win XP 2003です。
Wordのマクロについて質問します。

Wordでマクロを記録しようとするとマウスの矢印の先にビデオテープみたいな絵が出て記録出来ません。これはどういう意味でしょう。

Excelでは通常に記録出来るのでセキュリティの設定が問題ではないと思うのですが、これは、一体何が原因でしょうか。

因みに記録しようとしたのは、段落にインデントを設定する記録です。
宜しくお願いします。

Aベストアンサー

>マウス矢印の先にビデオテープみたいな絵が出て記録出来ません。
マクロの記録中を表しているものです。
記録中に、マクロの終了と一時停止のツールバーが表示されていませんか。
マウス操作で文字列操作はできませんので、対象を選択しておくか、マクロの一時停止/再開を使って行うか、キーボードで操作します。
ツールバーやルーラー上の操作は、停止せずにそのままマウスでも操作可能です。

マクロについて
http://office.microsoft.com/ja-jp/word/HP051894211041.aspx?pid=CH060840311041
トラブルシューティング : マクロの記録と実行
http://office.microsoft.com/ja-jp/word/HP051894221041.aspx?pid=CH060840311041
 

QWORDの文字をマクロで色替えするには?

WORDの文章で文字検索ウインドウ枠内に入力した文字全てをツールバーで指定した色に変える作業を文末まで自動的に繰り返したいのですが、このとき FOR文をどういう式としたらよいですか?
特に文末でやめるには?
また FOR の変数の種類は?
1回のみの色替えのマクロ記録は成功しておりますが、文末まで自動で行いたいのです。よろしくお願いします。

Aベストアンサー

マクロの記録が使えないですか。
文章全体を範囲指定
編集ー置換ー検索する文字列ーー(例)東京 書式(下に方の書式ボタンを押す。そのとき、検索する文字列のボックスをFOCUSしておくこと) 自動
置換後の文字列ーー(例)東京(同じ文字列を指定) 書式 (例)赤色
すべて置換
ーーー
やってみると、マクロの記録が出来ましたよ。
結果見れば判るとおり、FORNEXTやFOR EACHを使わないやり方で、これがVBAの理想ですから。wdReplaceAllで繰り返し的処理をやってくれるのですから。


人気Q&Aランキング

おすすめ情報