
book1にbook2のセルをコピーして貼り付け、book2を閉じようとしたところ、シートにリンクが張られているのか以下のようなメッセージボックスが出てきます
----ここから-----------------
移動またはコピーしようとしている数式またはシートには、移動またはコピー先のワークシートに既にある名前’xxx’が含まれています。この名前を使用しますか?
コピーまたは移動先のシートに定義されている名前を使用する場合は「はい」をクリックします。
数式またはワークシートで参照する範囲の名前を変更する場合は、「いいえ」をクリックし、「名前の重複」ダイアログボックスに新しい名前を入力します。
---------ここまで------------------
取り敢えず「はい」をクリックして閉じているのですが、複数回このメッセージが繰り返し出てきて面倒なので、VBAでこのメッセージを出さないようにしたいのですが、どのようにすればよいのでしょうか?
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんにちは。
[名前定義]は、本来は、マクロとは相性がよくありません。Application.DisplayAlerts = False でエラーをなくすのは良いのかもしれませんが、[名前の定義]が二重構造になってしまいますので、あまり関心しません。ただ、結果論で、コーディングする人のマクロの技術の問題ですから、当面の問題が起こらなければそれでよいのではないか、と言われるのがオチですから、それ以上は、本質的なコーディングの段階から技術を求められなければ何も言えません。
ただ、本来、シートコピーの段階で、例えば、
以下で新規のブックを用意して、標準モジュールに書いていただければ分かります。
Sub DoubleNamesTest1()
Dim NewBook As Workbook
Dim AcBook As Workbook
Set AcBook = ActiveWorkbook
With AcBook.Worksheets(1)
'名前定義
.Range("A1:C3").Name = "myTest"
.Copy After:=AcBook.Sheets(AcBook.Sheets.Count)
.Copy
End With
Set NewBook = ActiveWorkbook
With NewBook
'以下がエラーが発生する
AcBook.Sheets(AcBook.Sheets.Count).Copy After:=NewBook.Sheets(1) '*
''ここの二行が、エラー対策
'.Sheets.Add After:=.Sheets(.Sheets.Count) '**
'AcBook.Sheets(AcBook.Sheets.Count).Cells.Copy .ActiveSheet.Range("A1") '**
End With
Set NewBook = Nothing
Set AcBook = Nothing
End Sub
AcBook.Sheets(AcBook.Sheets.Count).Copy After:=NewBook.Sheets(1)
↓
上記一行を以下の二行に置き換える
.Sheets.Add After:=.Sheets(.Sheets.Count)
AcBook.Sheets(AcBook.Sheets.Count).Cells.Copy .ActiveSheet.Range("A1")
というように、Cells.Copy すればよいです。
ですが、[名前の定義]をどうするか、と言われれば、それは、その都度、問題を解決しなければなりません。
No.2
- 回答日時:
一応VBAにはApplication.DisplayAlerts = False
がある。
質問の場合もこれを入れることで、出なくなるか、やってみてください。
ツールーマクローVBE-挿入ー標準モジュールで出た画面に
Sub auto_open()
MsgBox "aaa"
Application.DisplayAlerts = False
End Sub
Sub auto_close()
MsgBox "bbb"
Application.DisplayAlerts = True
End Sub
確認できたらMsgboxの行は毎回出ると、しつこいから削除のこと。
(ほかにもコードのやり方があります)
ーーー
しかし本件は有名なもののようで、Googleでエラーメッセージの「移動またはコピーしようとしている・・」の前から20文字ぐらい(長い目に。途中で切っても可)をコピーし、検索語として貼り付けして、照会すると、そのものズバリに関した記事がたくさんでる。
http://q.hatena.ne.jp/1211612862
など、明確ではないかな。
この対策を取れないか検討するのが筋です。
No.1
- 回答日時:
「はい」で、コピー先シートの名前を使用するので構わないのなら、とりあえずPasteメソッドの前に
Application.DisplayAlerts = False
でメッセージの回避のみ、できます。
それで本当に不都合がないのか、各bookの名前定義を確認しておいたほうが良いとは思いますが。
例えば数式コピーの場合、名前が一緒で、その名前範囲のデータがbook1とbook2で違う時、
貼り付け直後に数式結果が変わってくる事もあるのでは。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(IT・Webサービス) EXCELVBAでシートを他のブックにコピーする命令を出すと毎回存在しないシート名の問合わせがある 1 2022/05/07 15:12
- Excel(エクセル) EXCELVBAでシートを他のブックにコピーする命令を出すと毎回存在しないシート名の問合わせがある 2 2022/05/07 17:16
- Excel(エクセル) シートが違う2枚のエクセルシートにある数値を別シートにコピーしたい(VBA?) 8 2022/03/31 12:24
- Excel(エクセル) シート参照を含む数式を連続コピー 3 2022/12/10 11:42
- Excel(エクセル) エクセルの数式について ブック内の別シートの値の含まれたセルの個数を集計したい 全シート一覧のシート 1 2022/07/21 19:28
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) エクセル VBAでBook モジュールのプロシージァ(コード)に除外シートを設定したい 1 2023/01/11 15:53
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 関数を使ってデータと一...
-
Excelの行をコピーして貼り付け...
-
エクセルの選択範囲以外を削除...
-
EXCELで別のブックから式をコピ...
-
EXCELのVBAでシートコピーをし...
-
エクセルのシートコピーした際...
-
【エクセル】プルダウン設定の...
-
エクセルの1シートの内容を複...
-
EXCEL2007でシートをコピーする...
-
CSVファイルについて質問です。
-
エクセルで1ページ目を行の幅が...
-
エクセルでシートを「移動また...
-
シートが保護されていないのに...
-
Excel 複数 シートコピー 同...
-
EXCEL VBA シートの名前を指定...
-
EXCEL VBA シートをコピーする...
-
エクセルシートを別のエクセル...
-
エクセルのユーザーフォームを...
-
Excel シートのコピーの際、ペ...
-
HPのtextデータをEXCELにコピー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの行をコピーして貼り付け...
-
Excel 関数を使ってデータと一...
-
エクセルの選択範囲以外を削除...
-
EXCELのVBAでシートコピーをし...
-
EXCELで別のブックから式をコピ...
-
Excel シートのコピーの際、ペ...
-
Excel 数式の保護をしたセルを...
-
【VBA】コピー&複数個所のペー...
-
エクセルのワークシートをUSBメ...
-
エクセルシートを別のエクセル...
-
エクセルでシートを「移動また...
-
エクセルの1シートの内容を複...
-
エクセルVBA 1行飛ばしで転記す...
-
ExcelVBAで、ユーザーフォーム...
-
【エクセル】プルダウン設定の...
-
CSVファイルについて質問です。
-
PDFファイルをコピーしてエクセ...
-
ページの設定を別シートにコピ...
-
VBA シートをコピー後、ボタン...
-
エクセルのページをシートごと...
おすすめ情報