LoginSignup
0
0

More than 5 years have passed since last update.

Winmergeのレポートの生成をエクセルで開くと、行番号にハイパーリンクが追加される事があります

Last updated at Posted at 2016-09-14
'対応1:Winmergeのソースで直す。
'対応2:レポートの生成のHTMLをjQuery等で書き換える。
'対応3:レポートの生成のHTMLをexcelのvbaで、ハイパーリンクを削除する。
'対応4:レポートの生成のHTMLをexcelのvbaで、列を削除挿入して行番号を出力する。

'対応3と対応4をやってみた。(おまけ)エクセルの印刷はワードの段組がおすすめです。

'対応4:相違のある箇所だけの表示 (Diffコンテキスト)>メニューの【表示 → Diffコンテキスト】から、比較結果の表示範囲を限定できます。
'http://so-zou.jp/software/tech/tool/diff/winmerge/compare/file.htm#no3
'使えない事がわかりました。

'対応3--------------------------------------------------------------------------------------
Sub aaa_Winmerge_行番号を表示ON_ツール_レポートの生成_エクセルで開く_実行用()
    Call ハイパーリンクSubAddressを削除
    Call 罫線を引く
    Cells(1, 1).Select
End Sub
Sub ハイパーリンクSubAddressを削除()
'https://teratail.com/questions/47790
With Range("A1").SpecialCells(xlLastCell)
     MaxRow = .Row
     MaxCol = .Column
End With
For i = 1 To MaxRow
    For j = 1 To MaxCol
        With Cells(i, j)
            If .Hyperlinks.Count > 0 Then
                If .Hyperlinks(1).SubAddress <> "" Then
                   Cells(i, j).ClearHyperlinks
                   Cells(i, j).Select
                   Call フォント直し
                   Cells(i, j) = Replace(Cells(i, j), "0.", "")
                End If
            End If
        End With
   Next
Next
End Sub
Sub フォント直し()
    With Selection.Font
        .Name = "Arial Unicode MS"
        .Size = 11
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .ThemeFont = xlThemeFontNone
    End With
    With Selection.Font
        .Size = 11
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .ThemeFont = xlThemeFontNone
    End With
End Sub
 Sub 罫線を引く()
 ActiveSheet.Cells.Borders.LineStyle = False
 With ActiveSheet.UsedRange
    .Borders.LineStyle = True
    .BorderAround Weight:=xlContinuous
    .Rows(.Rows.Count).BorderAround Weight:=xlContinuous
 End With
 End Sub

'対応4--------------------------------------------------------------------------------------
Sub aaa_Winmergeレポートの生成をエクセル修正()
Dim MaxRow As Long
    With Range("A1").SpecialCells(xlLastCell)
         MaxRow = .Row
    End With
    Call 列を削除挿入(1)
    Call 連番入力(1, MaxRow)
    Call 列を削除挿入(3)
    Call 連番入力(3, MaxRow)
    Call 罫線を引く
    Call 列幅を自動調整
    Cells(1, 1).Select
End Sub
Sub 列を削除挿入(i As Long)
    Columns(i).Select
    Selection.Delete Shift:=xlToLeft
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
Sub 連番入力(iRetu As Long, MaxRow As Long)
    Dim k As Long
    k = 0
    For i = 2 To MaxRow
        If Cells(i, iRetu + 1) = "" Then
        Else
            k = k + 1
            Cells(i, iRetu) = k
        End If
    Next
End Sub
Sub 罫線を引く()
ActiveSheet.Cells.Borders.LineStyle = False
With ActiveSheet.UsedRange
    .Borders.LineStyle = True
    .BorderAround Weight:=xlContinuous
    .Rows(.Rows.Count).BorderAround Weight:=xlContinuous
End With
End Sub
Sub 列幅を自動調整()
    Cells.Select
    Cells.EntireColumn.AutoFit
End Sub
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0