• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:WORD VBAでハイパーリンクの文字列色変更)

WORD VBAでハイパーリンクの文字列色変更

このQ&Aのポイント
  • VBAでWORD文書のフォントを統一する方法を教えてください。
  • ハイパーリンクされている文字の色を変更する方法を教えてください。
  • WORD2007でWINDOWS7を使用しています。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

こんなカンジ Sub macro1()  Dim h As Hyperlink ’全文のフォントを設定する  With ActiveDocument.Range(0, ActiveDocument.Range.End).Font   .Name = "MS Pゴシック"   .Size = 10.5   .Bold = False   .Color = wdColorBlack  End With ’ハイパーリンクスタイルを再設定する  For Each h In ActiveDocument.Hyperlinks   h.Range.Style = wdStyleHyperlink  Next End Sub

oldhidesan
質問者

お礼

ありがとうございました。希望通りに通りにできました。 全てのフォントを10.5にするのではなく8ポイントとかそのまま残しないフォントがありましたので、変更したいフォントサイズを指定しました。 でもORを使って短くする方法があるのでしょうね。 勉強します。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

終りの方に、次を追加するとか。 With ActiveDocument For i = 1 To .Hyperlinks.Count .Hyperlinks(i).Range.Font.ColorIndex = wdBlue Next End With

oldhidesan
質問者

お礼

ありがとうございます。 KEITHINさんとは違う方法ですが、同じ回答が得られました。 もって勉強します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • WORD VBAでハイパーリンクの文字列色変更

    最初の質問 VBAの初心者です。教えてください。 色々なWEBサイトより情報を集めてWORD文書を作成しています。フォント名、サイズ、色がバラバラで、それを統一するVBAは以下のように出来たのですが、ハイパーリンクされている文字の色も黒になっています。ハイパーリンクされている文字色だけは本来の青色で表示したいのですが、どのようにしたらいいのか分かりません。よろしくお願いします。 (WORD2007 Windows7) 早速keithinさんより以下のご回答をいただきました。新しいWORDファイルで例題(30行ぐらい)を作り実行したところ、希望通りの結果でした。 その後ハイパーリンクの全てが表の中にある本ファイルで実行したところ、ハイパーリンクスタイルを再設定する途中で止まってしまい(12-13は設定されている)、”指定されたプロパティはこのオブジェクトではサポートされません”として h.Range.Style = wdStyleHyperlink がハイライトされてしまいます。 どのような問題が考えられるのでしょうか? 問題解決したと云いながら申し訳ありません。 サポートよろしくお願いします。 Sub macro1()  Dim h As Hyperlink ’全文のフォントを設定する  With ActiveDocument.Range(0, ActiveDocument.Range.End).Font   .Name = "MS Pゴシック"   .Size = 10.5   .Bold = False   .Color = wdColorBlack  End With ’ハイパーリンクスタイルを再設定する  For Each h In ActiveDocument.Hyperlinks   h.Range.Style = wdStyleHyperlink  Next End Sub

  • macroコードを短縮できるでしょうか。

    下記のコードで、実行できます。大部分はマクロを記憶し、同じ処理を重ねただけのものです。 目的は、ワードで選択した文字列の中から数字を削除します。 ただし、下記のような場合は削除しません。 【請求項1】、項2、ないし3、いずれか1、【0019】、第3の、 この処理を行うために、差別化しました。 まず、数字を赤字で太字にしました。 次に、上記の、削除しては具合が悪い数字については、明朝で標準に戻すようにしてから、赤字で太字の数字を削除しました。 2000文字を超えるので、途中大幅にカットしました。 以下は、コードです。 ~~~~~~~~~~~~~~~~~~~~~~~~ Private Sub 符号削除() Selection.Find.ClearFormatting Selection.Find.Font.Bold = True Selection.Find.Replacement.ClearFormatting With Selection.Range.Find .ClearFormatting .Text = "第1" .Replacement.Text = "" .Replacement.Font.Color = 1 .Replacement.Font.Bold = False .Execute Replace:=wdReplaceAll End With Selection.Find.ClearFormatting Selection.Find.Font.Bold = True Selection.Find.Replacement.ClearFormatting With Selection.Range.Find .ClearFormatting .Text = "第2" .Replacement.Text = "" .Replacement.Font.Color = 1 .Replacement.Font.Bold = False .Execute Replace:=wdReplaceAll End With Selection.Find.ClearFormatting Selection.Find.Font.Bold = True Selection.Find.Replacement.ClearFormatting With Selection.Range.Find .ClearFormatting .Text = "又は2" .Replacement.Text = "" .Replacement.Font.Color = 1 .Replacement.Font.Bold = False .Execute Replace:=wdReplaceAll End With ↓以下、20まで繰り返し Selection.Find.ClearFormatting Selection.Find.Font.Bold = True Selection.Find.Replacement.ClearFormatting With Selection.Range.Find .ClearFormatting .Text = "乃至20" .Replacement.Text = "" .Replacement.Font.Color = 1 .Replacement.Font.Bold = False .Execute Replace:=wdReplaceAll End With Selection.Find.ClearFormatting Selection.Find.Font.Bold = True Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "1" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll ↓以下、9,0まで繰り返し Selection.Find.ClearFormatting Selection.Find.Font.Bold = True Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "9" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Font.Bold = True Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "0" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub ~~同じ繰返しを短くする部分の正規表現の使い方やloopを指南していただけたら幸甚です。

  • VBSでWordの文字色変え

    VBSなのですが Wordファイルをドラッグしたら <と>で囲まれた文字の色を変更して保存する というものを考えております が <============= 部分でコンパイルエラー(ステーメントがありません) が発生します 初心者でさっぱりわからないのですが どなたかお助けを! よろしくお願いいたします 以下ソース Dim objWord Dim f Dim m If WScript.Arguments.Count<1 Then m="Hello!" MsgBox m WScript.Quit End If Set objWord=CreateObject("Word.Application") objWord.Visible=True For Each f In WScript.Arguments objWord.Documents.Open f objWord.Selection.Find.ClearFormatting objWord.Selection.Find.Replacement.ClearFormatting objWord.Selection.Find.Replacement.Font.Color = wdColorRed With objWord.Selection.Find .Text = "\<[!\>]@\>" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With objWord.Selection.Find.Execute Replace:=wdReplaceAll '<======================= objWord.ActiveDocument.SaveAs f&".doc" objWord.ActiveDocument.Close Next objWord.Quit WScript.Quit

  • WORDマクロで単語リストテキスト内からヒットしたものだけを書き出したい

    ワードの文章中にList.txtに入っている単語をハイライトして太字に変更していくマクロを作成してみました。 検索にヒットした単語だけを outlist.txt へ書き出したいのですがどのような方法があるかご教授願えませんでしょうか。 現状だとすべての単語が書き出しされてしまいます。 過去ログやヘルプから見よう見真似で作成したマクロですので間違っている箇所もあるかもしれませんが、よろしくおねがいします。 list.txtは以下のように1単語で改行しているテキストです。 AAA BBB CCC ・ ・ Sub test1() Open "c:\list.txt" For Input As #1 Open "c:\outlist.txt" For Output As #2 While Not EOF(1)  Line Input #1, a  Selection.Find.ClearFormatting  With ActiveDocument.Content.Find .ClearFormatting .Text = a With .Replacement .ClearFormatting .Font.Bold = True .Highlight = True .Text = a End With .Execute Format:=True, Replace:=wdReplaceAll  End With Print #2, a Wend Close #2 Close #1 End Sub

  • ワードで算用数字を漢数字に変換するマクロについて

    お世話になっております。 ・ワードで算用数字を漢数字に変換する方法又はマクロを探しています。 ・希望例: 22→二二、 100→一〇〇等 ・以下のマクロを実行しましたが、全く反応がありません。 (マクロについてはずぶの素人です) Option Explicit Sub KanToNum() Dim num As Integer, kan() As Variant kan() = Array("〇", "一", "二", "三", "四", "五", "六", "七", "八", "九") For num = 0 To 9 With ActiveDocument.Content.Find .Text = kan(num) .MatchByte = False .Replacement.Text = num .Execute Replace:=wdReplaceAll End With Next num End Sub マクロの修正を含めアドバイスをお願いします。 よろしくお願いします。

  • ワードで選択範囲だけの改行を削除するマクロ

    こんにちは いつもお世話になっています ワード2010で、選択範囲だけの部分の改行を削除するマクロを記録マクロで作ったのですが、選択部以外もすべて改行してしまいます。どこがいけないのでしょうか。あるいは、操作の仕方でしょうか。以前は使えていたと思うのですが、仕様が変わったのでしょうか。 任意の範囲を選択しておいて、記録を開始しました。 よろしくお願いします。 Sub Macro1() ' ' Macro1 Macro ' ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "^p" .Replacement.Text = "" .Forward = True .Wrap = wdFindAsk .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub ネット上で見つけた以下のマクロでもすべての改行が削除されます。 http://okwave.jp/qa/q960285.html Sub Macro14() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "^p" .Replacement.Text = " " End With Selection.Find.Execute Replace:=wdReplaceAll End Sub

  • 特定の色のマーキングだけを解除するマクロ

    Wordのマクロについての質問です 複数の色でマーキングしている文書があり、 特定の色のマーキングだけを解除するマクロを 作成していますが、マーキングの色の指定の仕方がわかりません。 マーキングの色の指定はどのよう(どこ)にすれば、よいのですか。 Sub マーキングなし() ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Highlight = False With Selection.Find .ClearFormatting .Highlight = True .Text = "" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True End With Selection.Find.Execute Replace:=wdReplaceAll end sub

  • word2007 マクロ

    下記マクロは蛍光ペン部分を消して、その文字数分にアンダーラインを引くマクロになります これを改造して、赤文字を消して、その文字数分を空欄にしたいのです。 ですが、wdColorRedの入れ方が分かりません。ご教授お願いします。 Sub Problem() '蛍光ペン部分を消して、アンダーラインを引く Selection.Find.ClearFormatting Selection.Find.Highlight = True Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Highlight = False With Selection.Find.Replacement.Font .Underline = wdUnderlineSingle .StrikeThrough = False .DoubleStrikeThrough = False .Outline = False .Shadow = False .Hidden = False .AllCaps = False .Superscript = False .Subscript = False End With With Selection.Find .Text = "*" .Replacement.Text = " ^z" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub

  • ワード VBA

    ワードのマクロについて教えてください。 以下のようなマクロをボタンに登録しています。 Sub Macro10() Dim myReg As Object Dim st As String Dim match As Variant Set myReg = CreateObject("VBScript.Regexp") myReg.Pattern = "\x0d\x0d(|$)" myReg.Global = True st = ActiveDocument.Range.Text ActiveDocument.Range(1, 1).Select For Each match In myReg.Execute(st) With Selection .Find.Text = match.Value .Find.Replacement.Text = vbCr .Find.Execute , , , , , , , , , , wdReplaceAll End With Next st = ActiveDocument.Range.Text If myReg.Test(st) Then _ ActiveDocument.Range.Text = myReg.Replace(st, "") Set myReg = Nothing End Sub ここで教えていただきたいのは,上記のマクロを実行するためにボタンを押した際,実行前にカーソルが置かれていたのと同一の場所に実行後のカーソルを戻す方法です。(ちなにみ上記のマクロを実行する際にカーソルが置かれているのは,空白行ではない行の先頭です。※処理とは関係ないかもしれませんが,念のために。) そのような処理を行うには,上記のマクロにどのような記述を追加すればよいのでしょうか。 どなたかご教示いただければと思います。 どうぞよろしくお願いいたします。

  • Windows7, MSWord2007 でマクロを使用しています。以

    Windows7, MSWord2007 でマクロを使用しています。以前うまく行っていたのに今日はエラーで止まります。 記入した文字を日本字はMS明朝10.5PT, 半角アルファベットはTimesNewRomanPT12 に統一するマクロです。 [検索する文字列]に指定したパターンマッチングが正しくありません、と表示されます。 他人からいただいたマクロなので自分で直せません。ご援助いただければと存じます。 止まった行: .Execute Replace:=wdReplaceAll マクロ全文: Sub SelectedFontChangedMSMincho10_5TimesNewRoman12() Dim myRng As Range With ActiveDocument Set myRng = .Range(Selection.Range.Start, .Range.End) End With With myRng.Font .NameFarEast = "MS 明朝" .NameAscii = "Times New Roman" .NameOther = "Times New Roman" .Size = 10.5 End With With myRng.Find .ClearFormatting .Text = "[0-9A-Za-z,.\\\!\?""'/$\%\&\#\(\)\=\-\+\<\>]{1,}" '半角スペース~チルダ .Forward = True .Wrap = wdFindStop .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True .MatchFuzzy = False With .Replacement .ClearFormatting .Text = "" .Font.Size = 12 End With .Execute Replace:=wdReplaceAll End With End Sub

専門家に質問してみよう