Excel VBAでリンク更新時のエラーメッセージ表示を制限する方法

Visual Basic

Excel VBAを使用してリンクの更新時にエラーメッセージを表示するマクロを作成する際、表示されるリンク先の文字数を制限する方法について説明します。具体的には、セルB1に指定された開始位置からセルB2で指定された文字数だけを表示するようにマクロを修正する方法です。

VBAでリンク更新エラーメッセージの文字数を制限する

リンクの更新時に発生するエラーについて、表示されるリンク先の文字列を制限するには、VBAコードを修正して、文字列の長さを制限する処理を加える必要があります。以下では、セルB1に指定された開始位置、セルB2に指定された文字数だけを表示する方法を示します。

まず、元のコードのエラーメッセージの部分を変更し、文字列の一部だけを表示するようにします。以下にその方法を紹介します。

修正後のVBAコード

Sub test()
Dim sh As Worksheet
Dim wlink As Variant
Dim i As Long
Dim ck As Boolean
Dim msg As String
Dim startPos As Long
Dim length As Long
Set sh = ActiveSheet
Application.DisplayAlerts = False
wlink = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
If IsEmpty(wlink) Then
    MsgBox "このブックにリンクはありません"
    Exit Sub
End If
On Error Resume Next
startPos = sh.Range("B1").Value  ' セルB1から開始位置を取得
length = sh.Range("B2").Value    ' セルB2から表示文字数を取得
For i = LBound(wlink) To UBound(wlink)
    Err.Clear
    ActiveWorkbook.UpdateLink Name:=wlink(i)
    If Err.Number <> 0 Then
        msg = msg & "Err.Number=" & Err.Number & " : " & Mid(wlink(i), startPos, length) & vbCrLf
        ck = True
    End If
Next i
If ck = False Then
    sh.Range("A1").Value = "OK"
Else
    sh.Range("A1").Value = "NG"
    MsgBox msg
End If
Exit Sub
Application.DisplayAlerts = True
End Sub

コードの解説

この修正では、以下の点を変更しました。

  • startPos: セルB1に指定された文字の開始位置を取得
  • length: セルB2に指定された表示文字数を取得
  • Mid関数: 文字列を指定された位置と長さで切り出し、エラーメッセージとして表示する

これにより、表示されるリンクの文字列は、セルB1で指定された開始位置からセルB2で指定された文字数だけになります。たとえば、B1に「1」、B2に「10」と入力すると、リンク先の最初の10文字だけがポップアップメッセージに表示されます。

表示されるリンク先の文字数を制限するメリット

リンク先のURLが長い場合、エラーメッセージが非常に長くなってしまうことがあります。文字数を制限することで、表示されるメッセージが見やすくなり、ユーザーにとってもわかりやすくなります。

また、この方法を利用することで、どのリンクが失敗したかを特定する際に、必要な部分のみを簡潔に表示することができ、エラーメッセージをより管理しやすくなります。

まとめ: VBAでリンクエラーの文字数制限を実現する方法

Excel VBAを使ってリンク更新エラーを管理する際、表示されるリンク先の文字数を制限する方法は、セルに入力された情報を基に動的に処理を変更することができる非常に便利な手法です。セルB1に開始位置、セルB2に表示文字数を設定することで、エラーメッセージを簡潔にし、より視認性を高めることができます。

コメント

タイトルとURLをコピーしました