ファイルが開いているときに変更されない一意の識別子を使用して、VBA で外部ブックを参照するにはどうすればよいですか? 完全なファイルパスが含まれていて、同じ名前のファイルが開いていない場合は正常に機能します。ただし、ファイルが開かれている場合、ファイルパスを含む完全な形式は機能せず、ファイル名だけでは機能しません。
すべての参照を更新するために更新サブを作成したかったのですが、スプレッドシートが開いていると、これはうまくいきません (以下のポイント 2 を参照)。
これらは、私がそれが可能であるべきだと思ういくつかの理由です:
- 手動リンク更新メニューには、参照するファイル名しかないようです。
- また、同じ名前の 2 つのワークブックを開くことはできないため、ソース リンクを開くと、セル参照がファイル パスからファイル名に変更されます (これこそが問題の原因です。
これは私が現在持っているコードでupdCellRef
、ファイルパスへのセル参照です(ファイル名を使用したいだけです):
Sub updateValues(updCellRef)
updFilePath = ActiveWorkbook.Sheets("INPUTS").Range(updCellRef).Value
ActiveWorkbook.updateLink Name:=updFilePath, Type:=xlExcelLinks
End Sub
この問題を明確にするために、上記の関数を使用して値を更新していたときに発生しましたが、ソース スプレッドシートが開いていると、ファイル名だけで参照されます。閉じられると、完全なファイル パスによって参照されます。
Excel Professional 2010 v14 と VBA v7.0 を使用しています。
注: 管理者権限がないとインストールできないため、Power Query を含む他のソフトウェアは使用したくありません。