PR
スポンサーリンク

【ExcelVBA】リンクの更新をしないでブックを開く方法(UpdateLinks)

スポンサーリンク
エクセルVBA-リンク更新しないでブックを開く-アイキャッチ ブックの操作
スポンサーリンク
スポンサーリンク
スポンサーリンク

ブック同士でリンクを貼る、リンクの更新とは

セルが他のブックを参照している例です。(外部参照とも呼びます。)

下のsampleフォルダ内には2つのブックが保存されています。

ブックAとブックBがある状態

ブックAのA1セルはブックBのA1セルの値を参照しています。
ブックBのA1セルに書かれている「おはようございます」がブックAにも表示されています。

ブックAからブックBにリンクしている状態

リンク更新のテストのため、一旦どちらも保存して閉じたあとにもう一度ブックBを開き、「おはようございます」から「こんにちは」に文字を変更して閉じておきます。

ブックBの文字を変更

この状態で手動でブックAを開くとリンクを更新するか確認するメッセージが表示されます。

「更新する」を選択するとリンクが更新され、「こんにちは」の文字が表示され、逆に「更新しない」ボタンを押すとリンクが更新されないのでブックB変更前の「おはようございます」の文字が表示されます。

ブックAをリンク更新する、しないで開いた場合の状態

これを使用してVBAでブックを開くテストを行いたいと思います。

スポンサーリンク

マクロでブックを開く時にリンク更新しないで開く方法

ファイルを開く時にリンク更新をしないで開きたい場合は、Workbooks.Openの引数に「UpdateLinks:=0」を指定して開きます。

Workbooks.Open(ファイルパス, UpdateLinks:=0)

「UpdateLinks」はファイル内の外部参照 (リンク)の設定を行う引数で、0を指定することで「更新しない」の意味になります。 

↓のサンプルマクロではファイルを開いてから閉じるまでの一連の流れを行っています。

サンプルマクロで実行している内容
①開く対象のファイルパスを変数にセット
②リンクを更新しないブックを開く
③A1セルの値をメッセージボックスに表示する
④開いたファイルを閉じる

Sub Sample1()

Dim FilePath As String
Dim TargetFile As Workbook

    '開く対象のファイルパスを変数にセット…⓵
    FilePath = "C:\Users\Owner\Desktop\sample\ブックA.xlsx"

    'リンクを更新しないブックを開く…⓶
    Set TargetFile = Workbooks.Open(FilePath, UpdateLinks:=0)

    'A1セルの値をメッセージボックスに表示…⓷
    MsgBox Worksheets(1).Range("A1").Value
    
    '開いたファイルを閉じる…⓸
    TargetFile.Close SaveChanges:=False
    
    '変数の初期化
    Set TargetFile = Nothing
    
End Sub


マクロを実行すると「おはようございます」のメッセージが表示されます。
(参照先のブックBの値は元々「おはようございます」でしたが、そのあと更新して現在は「こんにちは」になっているのでリンクを更新すると「こんにちは」が表示されます。)

リンク更新しないサンプルマクロ実行
スポンサーリンク

マクロでブックを開く時にリンク更新をして開く方法

次はブックを開くときにリンクを更新する方法です。

リンク更新をしたい場合はWorkbooks.Openの引数に「UpdateLinks:=3」を指定して開きます。

Workbooks.Open(ファイルパス, UpdateLinks:=3)

「UpdateLinks」はファイル内の外部参照 (リンク)の設定を行う引数で、3を指定することで「更新する」の意味になります。 

サンプルマクロで実行している内容
①開く対象のファイルパスを変数にセット
②リンクを更新してブックを開く
③開いたファイルを閉じる

Sub Sample1()

Dim FilePath As String
Dim TargetFile As Workbook

    '開く対象のファイルパスを変数にセット…⓵
    FilePath = "C:\Users\Owner\Desktop\sample\ブックA.xlsx"

    'リンクを更新してブックを開く…⓶
    Set TargetFile = Workbooks.Open(FilePath, UpdateLinks:=3)

    'A1セルの値をメッセージボックスに表示…⓷
    MsgBox Worksheets(1).Range("A1").Value
    
    '開いたファイルを閉じる…⓸
    TargetFile.Close SaveChanges:=False
    
    '変数の初期化
    Set TargetFile = Nothing
    
End Sub

マクロを実行すると「こんにちは」のメッセージが表示されます。
(参照先のブックBの値は元々「おはようございます」でしたが、そのあと更新して現在は「こんにちは」になっているのでリンクを更新すると「こんにちは」が表示されます。)

リンク更新するサンプルマクロ実行
スポンサーリンク

※コードのコピー利用について

・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。

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