• ベストアンサー

Excel VBA:リンクの更新

いつもお世話になっています。 Excelでセルに他のブックのリンクを貼ってある場合、 ブック起動時に『更新しますか?』と聞いてきますよね(メニューバーの編集→リンクの設定→起動時の設定で聞いてこないようにもできますが)。 (1)VBAでリンクの更新をさせるには、どのように書けばよろしいでしょうか? (2)また、『値の更新』ボタンがグレーアウトされていてクリックできないのですが、理由(原因)は何でしょうか? 教えてください、よろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 (1) 特定のブックならば、Open メソッドの中の引数の、UpdateLinks を3にすればよいけれども、設定はそのままで、開いた時に操作する方法は、 たぶん、ThisWorkbook のOpenイベントに、以下のようなものを入れておけばよいと思います。 ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways この方法はやったことがないので、確実にできるか分かりませんが。 というのは、ダイアログが先か、Openイベントが先かは、分かりません。 (2)『値の更新』ボタンがグレーアウト というのは、確か、更新元のファイルがなくなって、値だけが残っている場合だったと思います。

motsu2006
質問者

お礼

Webdy02さん、いつもありがとうございます。 私もネットや参考書で調べてはいるのですが、どうしてもこちらのサイトの方が早く確実なのでつい頼ってしまいます。 >ダイアログが先か、Openイベントが先かは、分かりません なるほど、これは確かめてみないとわかりませんね。 今は自宅なので教えていただいたことを試す環境にはないのですが、明日出社後早速試してみます。 本当にありがとうございました!

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

補足: #1 のWendy02です。 Private Sub Workbook_Open() On Error Resume Next  ThisWorkbook.UpdateLinks = xlUpdateLinksAlways On Error Goto 0 End Sub としてください。もちろん、個人用マクロブックに入れるときは、 ThisWorkbook を ActiveWorkbook に読み換えてください。試してみたら、リンクのないブックには、オブジェクト・エラーが発生しました。

motsu2006
質問者

お礼

何度もすみません、本当にありがとうございます。 試してみましたが、 openイベントよりもダイアログが先に出てきちゃいました。 しかし、どちらかというとopen時よりも 処理途中で使用したかったので特に問題はありません。 ActiveWorkbookに読み換えて使用させていただきます。 私事ですが、 現在の仕事はExcelやAccessでツール作成がメインなので、 またこのように質問させていただくことが多々あるかもしれませんが、 その際はWendy02さんをはじめ皆様よろしくお願いします。

関連するQ&A