[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『コピーして貼り付け時にセル範囲の名前も保持したい』
こんにちは。
ひとつのシートをテンプレート(シート名:template)して
sheet1にある【作成】ボタンを押すと
テンプレートシートをコピーする、処理を作成していました。
(コピー後リネイムしています。)
しかし、何度か繰り替えすと途中で、コピーメソッドが失敗し
【実行時エラー '1004': Worksheet クラスの Copy メソッドが失敗しました。
】
のメッセージが。
調べてみると、
http://support.microsoft.com/kb/210684/ja
に行き着き、コピー後に保存するとおこらないようで。
しかし、シートをコピーしただけではブックを保存したくありません。
そこで新しいシートを挿入して、テンプレートシートのすべてを選択(左上をクリック)
コピーして、挿入した新しいシートに貼り付けることにしました。
しかし、今度はテンプレートで指定していた【名前】引き継がれない…
VBAの処理で【名前】を使用しているため、引き継いでほしいのですが…
どうにかいかないでしょうか?
どんなコードかわかりませんが、名前を使うのがVBA内だけでしたら 名前なんか使わずに変数に入れておけば良いのではないでしょうか?
下手に名前の定義を変えられてコードがデバッグ・・・なんて事も無くなりますし。 (momo)
ご紹介されたサイトでは、保存--閉じる---開く という 動作を50回に1回、とか100回に1回 行えば、エラーにならないのですよね。
大元のブック(仮にA.xls)は、開いたら、同じブックを別名で複製する (仮にTemp.xls, C:\Documents and Settings\ichinose\LocalSettings\Temp\etemp 例えば,上記のフォルダ上に保存する)。
作業を行うのは、A.xlsではなく、このTemp.xlsで行います。 これで保存--閉じる---開くのロジックを施してシートを増やしても A.XLSには、影響がありませんよね?
Temp.Xlsの内容をA.Xlsに反映したいなら、A.Xlsとして保存。 反映させたくないなら保存しないというロジックでどうでしょうか?
いくつか工夫も必要そうですが・・・。
検討してみてください。
ichinose
MS のページにも書かれていますが、これを回避するもう一つの方法は、シートの挿入を テンプレートから行うことです。
ブック内のシートを"template"という名前にするのではなく、テンプレートをファイル (XLT という拡張子)として用意し、これを読み込みます。
マクロでは、シートのコピーの代わりに Sheets.Add Type:="テンプレートのファイルパス", After:=ActiveSheet のようにします。 (Mook)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.