• ベストアンサー

(エクセル)別のブックにシートをコピーすると

初めて質問します。 EXCEL2000で、VBAとテンプレートが同じブックに保管されています。(test1.xls) test1.xlsのユーザーフォームでデータを入力して、コマンドボタンを押すと、テンプレートが別ブックにコピーされ、セルが埋められるようにしたいのですが、テンプレートにシート間参照(temp!A1)を使っているので、コピー元のブックを参照するように書き換えられてしまいます。([test1.xls]temp!A1) がんばって検索したのですが、回避策を見つけることができませんでした。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.4

>その際シート間の参照を崩したくないのですが… コピー対象のシート(参照があるシート)を作業グループにして、一括コピーすれば大丈夫かと思います。 Sheets(Array("Sheet1", "Sheet2")).Copy シートを1枚づつコピーした場合は、元のブックに対して参照してしまいますが、シートを作業グループにしてコピーすると、シート間のリンク情報としてそのままコピーされます。

sonon
質問者

お礼

遅くなりました。 スマートな方法で私好みです(笑) ぜひ試してみたいと思います。 ありがとうございました。

その他の回答 (3)

  • arare2005
  • ベストアンサー率31% (63/199)
回答No.3

確かにご質問者さまの様にコピーされてしまいますよネ これはこの機能を作った方の仕様だと思います(^^; シート参照をコピーした場合、外部のブックを絶対参照した方が使い勝手が良いと思われたのだと思います。 ちなみに、同一シート内の参照や外部ブックへの参照はコピーしても、その参照の数式は変わりませんから。。。 私は以下の方法で回避しますが、他にオプションなどがあるのかも。。。 (1)シート参照のある場合、別名で保存する (2)参照となるブック名(.xls)は判っているので、自分のブック名に置換する (3)シート参照するシートがデータとして1ヶ所のシートであれば、そのシートは別のブック(book1)とし、シート参照する方も別のブック(book2)とすれば、book2→book1!shhet1...となるので結果としてそのままの数式となる (4)(3)を更に分割して1ブック1シートで全て再度作成する ※VBAで組まれていらっしゃるので、VBAのコードは省略いたしますが、もし判らなければ同様の作業を「マクロの記録」で行えば、VBAのコードは出てきますので参考にされたら良いと思います。 実際の動作は、ご質問者さまと私も同意見(仕様書みたいな同一の書式の物をコピーする際など)ですが、MSの方とは認識が違う様です。 もしかすると2003等では、違うかもしれませんが... とりあえず私も2000で手動コピーですが確認しましたので回避するには上記のいずれかを選んで組まれてはいかがでしょうか(^^) もし、記述で意味不明な場合は、再度、補足など入れていただけますか。 m(_ _)m

sonon
質問者

お礼

遅くなって申し訳ありません。 仕様上、オリジナルのブックを開くと自動でマクロが立ち上がるため、目的のシートだけをコピーする必要があったんです。 とりあえず全部の方法を試したいと思います。 ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

#1です。もうひとつ確認。 雛形シートをコピーして、他ブック(test2.xlsと仮にするとして)に新シートを作成したとき、 雛形シートの、あるセルにある=[test1.xls]temp!A1が、コピー先でも =[test1.xls]temp!A1となるようですが、これが困るのですか。 どうなればよいのですか。 なお雛形シートのシート名はtemp1ですか。

sonon
質問者

補足

雛形シートは複数あり、tempもその一つ(=同時にコピーされる)です。 フォームのデータはいったんtempシートに入力され、ほかのシートから参照されます。 実際は雛形シート内では =temp!A1 のように参照しています。が、新ブックにコピーされると同時に =[test1.xls]temp!A1 と書き換えられます。これを同じブック内での参照のまま保持する方法が解らずに困っています。要するにコピー後も =temp!A1 のままでいてほしいのです。 たびたび申し訳ありませんが、よろしくお願い致します。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

>VBAとテンプレートが同じブックに保管されています。(test1.xls) エクセルのテンプレート・ファイルの拡張子は.xlt と思いますが、 「同じブックに保管されています」とはどういうことでしょうか。 「同じフォルダに」のことでしょうか。

sonon
質問者

補足

ありがとうございます。 「テンプレート」とはエクセルのテンプレートファイルではなく、自分で作った雛形という意味です。言葉が足りなくて申し訳ありません。 一つのブックにVBAと複数のシートがあり、シートだけを新しいブックにコピーしたいのです。その際シート間の参照を崩したくないのですが… 引き続きよろしくお願い致します。

関連するQ&A