0

現在: 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 が表示されます! 値の列に。新しい参照は新しいシートに対してローカルであるため、新しい参照の名前を変更しても問題は解決しません。

テーブルを別のテーブルに手動で切り取り、テキストとして貼り付けようとしましたが、数式が保持されず (基本的には値として貼り付け操作を実行します)、全体的に機能しません。オプションを探しているだけです。これらのテーブルへの外部参照はオプションではありません。

4

2 に答える 2

1

このスレッドが役立つと思います: http://www.ozgrid.com/forum/showthread.php?t=66791

返信を直接提供するには (問題が主に外部参照に関係していると仮定して): Aaron Blood からの返信: Re: Copy Formula To New Worksheet Without Path

新しいシートとワークブックへのコピー/貼り付けを行うコードは既に開発済みです。あとは、新しいワークシートの数式をスキャンして、数式から外部参照を削除するだけです。

既存のコピー/貼り付けマクロの最後で、このようなものを実行します...

VB:

Sub ExtRef_Remover() 

Dim cell As Range, n As Variant 

For Each cell In Workbooks("New_WB").Sheets("Sheet1").Cells.SpecialCells(xlFormulas) 
    n = Application.Find("]", cell.Formula) 
    If Not IsError(n) Then 
        cell.Formula = "='" & Right(cell.Formula, Len(cell.Formula) - n) 
    End If 
Next cell 
End Sub 
于 2012-06-13T07:47:41.863 に答える
0

このプロジェクトでは、広範な外部参照を使用することはうまくいきませんでした。そのため、プロジェクト マネージャーに方針を変更する必要があると説得しました。彼女は、ワークブックの生成と安定性を犠牲にすることは別として、求めることが多すぎて実装に時間がかかりすぎることに同意しました。コマンドボタンを介して必要なテーブルにデータをプルすることになりました。作業しやすく、安定しています。

于 2012-10-05T14:30:01.640 に答える