これが可能かどうかはわかりませんが、ウェブ全体で回答が見つからないことがあります。セルからシートを動的に参照する - VBA
personA
、personB
、personC
のように、テンプレートのワークブックSchedule.xls
を作成しました。私はそれをコピーしてマスターファイルMaster.xls
に貼り付けることによって各ワークブックから同じ範囲を抽出する必要があります。これにより、各人の情報をこのマスターブックに取り込むことができます。
このMaster.xls
は、記入人数がSchedule.xls
になります。
たとえば、これらの3人の人は、personA
,personB
、personC
の3人の人と一緒に滞在しましょう。
彼らは彼らのスケジュールを生成したら、私はその情報を取得したいとMaster.xls
にコピーしますが、別のシートにpersonA
、personB
とpersonC
を命名。私はSchedule.xls
のセルを設定することで、これをやりたい
、人々はpersonA
、personB
とpersonC
の間の値を選択することができますA1
は、言います。
この方法では、シートの動的参照をMaster.xls
に作成できます。このマクロでは情報が貼り付けられます。
`Range("B2.D5").Select
Selection.Copy
Workbooks.Open Filename:= _
"C:\My Documents\Master.xlsx"
Sheets(*REFERENCE*).Select
Range("B2").Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWorkbook.Close`
私が上書きたいシートを設定する代わりに、REFERENCEの何を書くべきですか?
ありがとうございます。
'PersonX'が* Schedule.xls *に参加したとき、* Master.xls *(完全なUNCパス)を更新したとします。 * Master.xls *には基本のテンプレートシートがあります。ワークシート** personX **がマスターでない場合は、シートのコピーを作成して** personX **に名前を変更し、スケジュールから希望の範囲をコピーしますそれに。しかし、これは、人がMaster.xlsへの書き込みアクセス権を持っていることを前提としています。 – PatricK
@ mmarinrこれはあなたの問題に答えるもので、コードの問題を解決するものではありません。 'Sheets(Range(" A1 ")。Value).Select'を使ってください。しかし、 'Select'、' Selection'と 'ActiveSheet'を使わないほうが良いです –
' Schedule.xls'ファイルに 'ComboBox'のようなものがあります。次に、あなたの 'Workbook_Open'で、' Master.xls'にある全てのシートをコンボボックスに入れます。人が名前を見つけられない場合は、名前を入力するだけです。その後、 'Schedule.xls'の' Workbook_BeforeClose'で、 'Master.xls'を更新してください。ユーザーのシートが存在しない場合は、シートを追加して情報を追加します。 @ShaiRadoが推奨するように、 'Select'のようなものを使わないでください。 'Worksheet'やその他のExcelオブジェクトの使い方を見てください – Zac