現在: 1 つまたは複数のテーブルを含むシートがいくつかあります (たとえば、Sheet1 には 1 つのテーブルがあり、Sheet2 には 3 つのテーブルがあります)。これらの同じシートは、いくつかのエンド ユーザー ワークブックにあります。これらのシートのテーブルは、ワークブックのセル数式内の構造化参照によって使用されます。
目標: テーブルを含むシートのみを含む別のブック (マスター ブック) が必要です。更新は、マスター ワークブックに対して手動で行われます。つまり、行の追加、行の削除、行の編集、列の追加、列の削除、列の編集です。 マスター ワークブックで更新が完了すると、更新された [マスター] シートがさまざまなユーザー ワークブックに配置され、既存のシートと (VBA を使用して) テーブルが置き換えられます。構造化された参照を壊すことはありません。#REF エラーはありません。 まあ、これは私が思い描いていることですが、必ずしもそうである必要はありません。また、共通テーブル シートはエンド ユーザー ワークブックにある必要があり、外部参照はできません。もちろん、必要なものを機能させるプロセスの一部でない限り:-)
私は VBA には非常に精通していますが、MVP ではありません。すべてのワークブック (エンド ユーザーとマスターの両方) が同じディレクトリに存在するとします。マスター ワークブックには、更新されたシートをエンド ユーザーのワークブックに配信するコードが含まれます。Windows 7 環境の Excel 2007 & 2010。
何も壊さずに最初に手動で理解しようとしているので、コードはありません。提案を歓迎します!ありがとうございました。
[2012 年 6 月 13 日更新]この長ったらしい説明がお役に立てば幸いです。
私がやっていること: (本質的に) それ自体をエンド ユーザーのワークブックにコピーするワークブックがあります (ユーザー フォームの入力に基づいて 1 ~ n 回)。エンド ユーザーのワークブックは、エンド ユーザーが特定の数式で間違いを犯さないように保護されています (さまざまな形式のシート/セル保護)。テーブルを含むシートがいくつかあり、これらのテーブルはすべてのユーザーで同じです。これらのテーブルは、データの検証 (例: Allow: List; Source: =timing_droplist) および VLOOKUP (例: =VLOOKUP($W8,Timing_table,FE$5+1,FALSE)) に使用されます。これらのエンド ユーザー ワークブックは年に 1 回作成されますが、年に 3 回更新されます (財務/予算用です)。テーブルはいつでも更新できます。データはエンド ユーザーのワークブックに追加されるため、更新されたテーブルを使用してこれらのワークブックを再生成し、エンド ユーザーにすべてのデータを再入力させるのは便利ではありません。
何が起こっているか (ほんの一例): "Timing" シートが存在し、テーブル "Timing_table" が含まれています。マスターの「タイミング」シートがブックに追加されると、Excel はその名前を「タイミング (2)」に変更します。これは正常です。ただし、追加されたシートのテーブルはグローバルではなくローカルになり、名前も変更されます。たとえば、「Timing_table12」などです。Excel がテーブル名の数字をどのように考え出すかはわかりませんが、それらは変更される可能性があります。古い「タイミング」シートを削除すると、それへのすべての参照が壊れます (もちろん) -- Name Manager をプルすると #REF が表示されます! 値の列に。新しい参照は新しいシートに対してローカルであるため、新しい参照の名前を変更しても問題は解決しません。
テーブルを別のテーブルに手動で切り取り、テキストとして貼り付けようとしましたが、数式が保持されず (基本的には値として貼り付け操作を実行します)、全体的に機能しません。オプションを探しているだけです。これらのテーブルへの外部参照はオプションではありません。