Excel VBAマクロでリンクの更新と自動アップデートの設定方法

Visual Basic

Excel 2021でリンクアップデートのマクロVBAを実行する際、デフォルトでリンクの更新確認が表示されるため、これを無効にし、さらにマクロが正しく実行されるように設定する方法を解説します。質問者が直面している問題を解決するため、強制的にリンクの更新確認を無効にし、マクロを自動で実行させる手順を紹介します。

1. Application.AskToUpdateLinksを無効にする方法

デフォルトでExcelがリンクの更新を求めるポップアップを表示するため、手動で確認する必要があります。これを自動化するために、Application.AskToUpdateLinks = Falseというコードをマクロに追加します。このコードを実行することで、リンクの更新確認ポップアップを表示せずに、マクロをスムーズに実行できます。

2. VBAマクロの修正方法

質問者が提供したマクロでは、リンクの更新が行われ、その結果に応じてセルに「OK」や「NG」が表示されます。このマクロを修正するためには、リンク更新を強制的に行い、エラーハンドリングを追加して、失敗したリンクを検出できるようにします。また、Application.AskToUpdateLinksを自動で無効にする方法も含めます。

3. 改善されたVBAコードの例

以下は、質問者のマクロにApplication.AskToUpdateLinks = Falseを追加し、エラーハンドリングを改善したVBAコードです。これにより、リンクの更新確認が無視され、マクロがスムーズに実行されます。

Sub test() Dim sh As Worksheet Dim wlink As Variant Dim i As Long Dim ck As Boolean Dim msg As String Set sh = ActiveSheet Application.DisplayAlerts = False Application.AskToUpdateLinks = False wlink = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks) If IsEmpty(wlink) Then MsgBox "このブックにリンクはありません" Exit Sub End If On Error Resume Next 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 & " : " & wlink(i) & 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

4. マクロの動作確認と注意点

マクロを実行する前に、Application.AskToUpdateLinks = Falseが正しく設定されていることを確認してください。また、ActiveWorkbook.UpdateLinkを使用している部分は、リンクが正しく更新されるように設計されていますが、リンクの更新に失敗した場合は、エラーメッセージが表示されます。このエラーは、失敗したリンクを特定するための参考になります。

5. まとめ

Excel VBAを使用してリンク更新を自動化するために、Application.AskToUpdateLinks = Falseを設定することで、手動での確認を省略できます。また、エラーハンドリングを行い、失敗したリンクを表示することで、効率的にリンクの更新が行えるようになります。この方法を利用することで、Excelマクロの操作がよりスムーズに行えます。

コメント

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