-1

次のように、最初のドキュメントのセルを参照するExcel ドキュメントC:\Budget-v034-2012.xlsx(ドキュメント A) と別の Excel ドキュメント (ドキュメント B) があるとします。='C:\[Budget-v034-2012.xlsx]Sheet1'!$A$1

ドキュメント A が更新されると、更新されたバージョン番号で保存されます (つまり、v034 は v035 になります)。ドキュメント B の参照を新しいバージョン番号で自動的に更新するにはどうすればよいですか?

ソリューションは完全に自動である必要はありません。たとえば、現在のバージョン番号が手動で提供されたドキュメント B のセルがあり、すべての参照には提供された番号が自動的に組み込まれます。このような法人化はどのように達成できたのでしょうか。

4

2 に答える 2

2

これは非常に単純な(単純な?)ソリューションです。

ドキュメント B では、ファイルのパスや名前 (たとえば、セル A1 にあるとします) を保存し、INDIRECT式を使用して他のセルに結果を与えることができます。

  • セル A1:Budget-v034-2012.xlsx
  • 他のセルで:=INDIRECT('C:[' & A1 & ']Sheet1'!$A$1)

保守性を高めるために、 Named Rangeも使用できることに注意してください。

  • ドキュメント B のシートのセルにパスまたは名前を追加します (シート 1、セル A1 など)。
  • 左上 (セル A1 の上) に名前 (必要なもの) を入力します。Path
  • もう一方のシートでは、次の式を使用できます。=INDIRECT('C:[' & Path & ']Sheet1'!$A$1)
于 2012-08-21T13:30:31.167 に答える
0

正当な理由がない限り、多くの場合、同じファイル名を保持し、ファイル内のセルでバージョンの詳細を更新する方が簡単です。そうすれば、外部リンクは関連データで最新の状態に保たれます。

新しいファイルを Excel 内から新しいファイル名で保存すると、他のブックのリンクは古いファイルにリンクしたままになり、ファイルを削除するか外部で名前を変更した場合にのみ壊れます。

これを Excel で手動で行う方法はいくつかあります。

  1. Excelデータ/リンクの編集/ソースを強調表示し、ソースの変更をクリックします
  2. 検索と置換を使用します。たとえば、find [Budget-v034-2012.xlsx] replace with [Budget-v035-2012.xlsx] (オプションが有効になっていることと、Lookin:= formulas および March Entire cell contents:= FALSE であることを確認してください)

上記の両方を実行するマクロを記録すると、次のような結果が得られます。

Sub Macro1()

ThisWorkbook.ChangeLink Name:="C:\Users\ooo\Desktop\Budget-v034-2012.xlsx", NewName _
        :="C:\Users\ooo\Desktop\Budget-v035-2012.xlsx", Type:=xlExcelLinks

End sub

Sub Macro1()

    Cells.Replace What:="[Budget-v034-2012.xlsx]", Replacement:="[Budget-v035-2012.xlsx]", LookAt:=xlPart _
        , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub
于 2012-08-21T13:37:18.810 に答える