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

このQ&Aのポイント
  • WORD文書のハイパーリンクされている文字の色を変更したい
  • VBAでハイパーリンクの文字色を変更する方法がわからない
  • フォント、サイズ、色の統一はできたが、ハイパーリンクの文字色が変わらない
回答を見る
  • ベストアンサー

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

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

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

ん~~~ とりあえず次のようにしてみて下さい。 変更前:  h.Range.Style = wdStyleHyperlink 変更後:  if h.type = msohyperlinkrange then   h.Range.Style = wdStyleHyperlink  end if 文章に埋め込まれたハイパーリンクではなく,ボタンなど図形等に取り付けたハイパーリンクを一緒にコピーしてきているのではないかと思います。 またはもっと安直に, sub macro1() の直下に sub macro1() on error resume next のようにするのでも出来ます。

oldhidesan
質問者

お礼

keithinさん どうもありがとうございます。最初の方法で全部設定しなおしできました。簡易な方法も勉強のため試みて見ます。

関連するQ&A

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

    VBAの初心者です。教えてください。 色々なWEBサイトより情報を集めてWORD文書を作成しています。フォント名、サイズ、色がバラバラで、それを統一するVBAは以下のように出来たのですが、ハイパーリンクされている文字の色も黒になっています。ハイパーリンクされている文字色だけは本来の青色で表示したいのですが、どのようにしたらいいのか分かりません。よろしくお願いします。 (WORD2007 Windows7) Sub フォント変換() ' ' With ActiveDocument.Content.Find .Text = MatchiWildcards .Format = True .Font.Size = 11 With .Replacement .Font.Name = "MS Pゴシック" .Font.Size = 10.5 .Font.Color = wdColorBlack .Font.Bold = False End With .Execute Replace:=wdReplaceAll End With With ActiveDocument.Content.Find .Text = MatchiWildcards .Format = True .Font.Size = 12 With .Replacement .Font.Name = "MS Pゴシック" .Font.Size = 10.5 .Font.Color = wdColorBlack .Font.Bold = False End With .Execute Replace:=wdReplaceAll End With End Sub

  • excelマクロですべてのハイパーリンク解除したい

    excel2016で、ワークシート内のハイパーリンクをすべて解除したいと思います。 すべて削除するマクロは Sub Sample()  With ThisWorkbook.Worksheets("Sheet1")   .Hyperlinks.Delete 'ハイパーリンク削除  End With End Sub なのですが、これを解除の命令に変えて Sub Sample()  With ThisWorkbook.Worksheets("Sheet1")  .ClearHyperlinks 'ハイパーリンク解除  .Font.Underline = False '文字のアンダーライン解除  .Font.ColorIndex = xlAutomatic '文字色を自動設定  End With End Sub とするとエラーになってしまいます。 どのようにすれば良いでしょうか?

  • Word2010 VBAでオブジェクトに文字の効果

    Word2010のVBAで作成するオートシェイプに文字を入力し、その文字に文字の効果を付けたいです。 付けたい効果は「ワードアートのスタイル」の「文字の効果」内にある「変形」の「四角」です。 Sub 図形() Dim 丸 As Shape Set 丸 = ActiveDocument.Shapes.AddShape(msoShapeOval, 1, 1, 60, 60) 丸.Select 丸.TextFrame.TextRange = "文字" 'この部分です。Excelではこれで出来たのですがWordだと書き方が違うのでしょうか? Selection.ShapeRange.TextEffect.PresetShape = msoTextEffectShapePlainText End Sub よろしくお願いいたします。

  • エクセルで特定の文字のフォントサイズ・色を変更したい。

    質問番号:1822805を参考にエクセルで特定の文字に色付けする作業をしています。 このときに、色を変えると同時にフォントサイズとフォントスタイルを 太字にしたいのですがエラーでうまくいきません。 どなたかご教授いただければと思います。 エラー内容は『オブジェクトはこのプロパティまたはメソッドをサポートしていません』です。 ちなみに下記のような構文を書いています。 『日本』と言う文字列に色をつける場合となっています。 Sub test() Dim rng As Range, r As Range, i As Long, colInd As Integer With ActiveSheet Set rng = .Range("a1:z100") '範囲の設定 txt = "日本" '文字の設定 colInd = 3 '色の設定 For Each r In rng If InStr(r, txt) > 0 Then _ r.Characters(InStr(r, txt), Len(txt)) _ .Font.ColorIndex = colInd .Font.Size = 12 .Font.Fontstyle = "太字" Next End With End Sub

  • VBAのハイパーリンクにつきまして

    以前に質問をさせていただき、こちらでベストアンサーを決定した後に急きょ変更があったところがあり、わからなくなってしまいこちらに戻ってきた次第です。 http://okwave.jp/qa/q8743521.html にて質問をさせていただきました内容について、以下のVBAで解決できております。 しかし、抽出したファイル名にハイパーリンクが欲しいという要望を受けてしまいました。 ハイパーリンクのVBAについていろいろ調べましたが、この記述方法に追加して実行する方法が全く分かりませんでした。 お分かりになる方がいましたら、この内容にハイパーリンクをつける方法をお教えいただけますでしょうか。よろしくお願いいたします。 Sub Macro1() Dim i As Long Dim myPath As String, Flnm As String ReDim Flnmfp(0) As String Dim WS1 As worksheet Set WS1=ThisWorkbook.sheets("sheet1") myPath="望みのフォルダパスを入力" Call fpFileName(myPath, Flnmfp ) 'フォルダ内のファイル名取得 If Ubound(Flnmfp)=0 Then 'フォルダにファイルが無ければ終了 Exit Sub End if For i =1 to Ubound(Flnmfp) Workbooks.open filename := Flnmfp(i) Flnm=Dir(Flnmfp(i)) With Workbooks(Flnm).sheets("sheet1") WS1.Cells(2, i).value=.Range("G5").value WS1.Cells(3, i).value=.Range("G6").value WS1.Cells(4, i).value=.Range("K7").value WS1.Cells(5, i).value=CStr(.Range("G9").value) & CStr(.Range("N9").value) & CStr(.Range("P9").value) '同じ要領で望みのセルを記入する WS1.Cells(8, i).value=Flnm End with Workbooks(Flnm).close Savechanges:=False Next i End Sub Sub fpFileName(ByVal myPath As String, ByRef Flnmfp() As String) 'サブフォルダも含め全部のxlsファイル名をフルパスで取得する   Dim cnt As Long, buf As String, f As Object   buf = Dir(myPath & "\*.xls")   Do While buf <> ""     cnt = Ubound(Flnmfp) + 1 ReDim Preserve Flnmfp(cnt)     Flnmfp(cnt)= myPath & "\" & buf     buf = Dir()   Loop   With CreateObject("Scripting.FileSystemObject")     For Each f In .GetFolder(myPath).SubFolders       Call fpFileName(f.Path, Flnmfp)     Next f   End With End Sub

  • ワードVBAで、段落のタブの数を数えたい。

    ワード2002使用です。 2段落目に複数のタブが入力されています。 ワードVBAで、選択した段落のタブの個数を数えたい。 sub タブ() Dim tab数 As Integer ActiveDocument.Paragraphs(2).Range.Select tab数 = Selection.Paragraphs.tabs.Count←ここがよくわかりません msgbox tab数 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 ここで教えていただきたいのは,上記のマクロを実行するためにボタンを押した際,実行前にカーソルが置かれていたのと同一の場所に実行後のカーソルを戻す方法です。(ちなにみ上記のマクロを実行する際にカーソルが置かれているのは,空白行ではない行の先頭です。※処理とは関係ないかもしれませんが,念のために。) そのような処理を行うには,上記のマクロにどのような記述を追加すればよいのでしょうか。 どなたかご教示いただければと思います。 どうぞよろしくお願いいたします。

  • Excel2000 ハイパーリンクを削除するマクロ

    どなたか教えてください。 Excel2000で、URLやメールアドレスを入力すると勝手にハイパーリンクにされてしまいます。 これをハイパーリンクとならないようにするマクロを作りたいのです。 具体的には、特定のセルにだけ、URLやメールアドレスを入力する可能性が あるという条件で、 下記のようにしました。 Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False nowcell = ActiveCell.Address Target.Hyperlinks.Delete With Range("O14:AI14,L41:AI41") .IndentLevel = 1 .VerticalAlignment = xlCenter .Font.Name = "Arial" .Font.Size = 16 End With Range(nowcell).Activate Application.ScreenUpdating = True End Sub セルが変更されるたびに、O14:AI14,L41:AI41のハイパーリンクを削除して、勝手に 変更された書式を特定の書式に戻すという処理をしています。 ただ、特定の書式を設定しているため異なる書式のセルに同じマクロを使うと、 書式が乱れてしまいます。 それで、ハイパーリンクが削除される前のセル書式を保存しておいて、ハイパーリンクを削除した後に、 復元するということをしたいのですが、どうすればよいでしょうか? イメージ的には、 org_format=target.font nowcell.font=org_format というようにしたいところなのですが・・・ 良いアイデアをご教授ください。 宜しくお願い致します。

  • VBAで、エクセルからワードへの変換について

    VBAは、全くの初心者で、テキスト等のサンプルコードを参照して書いているのですが 期待通りの動きをしないので、教えてください。 やりたい事は、Excelファイル(A-Fカラム、400行程度)を 1行ページのワードに変換し、400枚のワードファイルを作成します。 その際に、添付画面のように、各カラムを、タイトル、連番、内容などと区分けをして フォントも変えたいです。 下のコードでは、転送は、出来るのですが、1行1ページにならず、また、 エクセルの枠も転送されてしまいます。 ワードVBAも試したのですが、特定文字での検索が難しく、各ページでの 改行位置が異なるため、自分の理解では出来ませんでした。 ワードでテンプレートを作って、Excel VBAから差込になるのでしょうか? よろしくお願い致します。 Sub CopyExcelDataToWord() Dim wsSource As Excel.Worksheet Dim cell As Excel.Range Dim collUniqueHeadings As Collection Dim lngLastRow As Long Dim i As Long Dim appWord As Word.Application Dim docWordTarget As Word.Document Set wsSource = ThisWorkbook.Worksheets(1) With wsSource lngLastRow = .Range("A" & Rows.Count).End(xlUp).Row Set collUniqueHeadings = New Collection For Each cell In .Range("A2:A" & lngLastRow) On Error Resume Next collUniqueHeadings.Add Item:=cell.Value, Key:=cell.Value On Error GoTo 0 Next cell End With Set appWord = CreateObject("Word.Application") With appWord .Visible = True Set docWordTarget = .Documents.Add .ActiveDocument.Select End With For i = 1 To collUniqueHeadings.Count With wsSource .Range("A1").AutoFilter Field:=1, Criteria1:=collUniqueHeadings(i) .Range("A1:D" & lngLastRow).Copy End With With appWord.Selection .PasteExcelTable linkedtoexcel:=False, wordformatting:=True, RTF:=False .TypeParagraph End With Next i For i = 1 To collUniqueHeadings.Count collUniqueHeadings.Remove 1 Next i Set docWordTarget = Nothing Set appWord = Nothing End Sub

  • Excelのセルのフォントサイズを自動調整

    Excel97VBAの質問です。 セルの値が長すぎて表示しきれない場合は、フォントサイズを調整したい。 Sub Macro1() With Sheet1 .Columns("A").ColumnWidth = 1 .Range("A1").Value = 1 .Range("A2").Value = 12 .Range("A3").Value = 123 .Range("A4").Value = 1234 End With End Sub この場合、A2~A4の表示が潰れます。 フォントサイズを例えば、 Sub Macro2() .Range("A2").Font.Size = 7 .Range("A3").Font.Size = 5 .Range("A4").Font.Size = 3 End Sub と設定すれば潰れずに値が表示されます。 このようなフォントサイズの最適値を自動的に設定したい。 よろしくご指導お願いします。

専門家に質問してみよう