book1にbook2のセルをコピーして貼り付け、book2を閉じようとしたところ、シートにリンクが張られているのか以下のようなメッセージボックスが出てきます
----ここから-----------------
移動またはコピーしようとしている数式またはシートには、移動またはコピー先のワークシートに既にある名前’xxx’が含まれています。この名前を使用しますか?
コピーまたは移動先のシートに定義されている名前を使用する場合は「はい」をクリックします。
数式またはワークシートで参照する範囲の名前を変更する場合は、「いいえ」をクリックし、「名前の重複」ダイアログボックスに新しい名前を入力します。
---------ここまで------------------
取り敢えず「はい」をクリックして閉じているのですが、複数回このメッセージが繰り返し出てきて面倒なので、VBAでこのメッセージを出さないようにしたいのですが、どのようにすればよいのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (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 すればよいです。
ですが、[名前の定義]をどうするか、と言われれば、それは、その都度、問題を解決しなければなりません。
    • good
    • 0

一応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
など、明確ではないかな。
この対策を取れないか検討するのが筋です。
    • good
    • 1

「はい」で、コピー先シートの名前を使用するので構わないのなら、とりあえずPasteメソッドの前に


Application.DisplayAlerts = False
でメッセージの回避のみ、できます。

それで本当に不都合がないのか、各bookの名前定義を確認しておいたほうが良いとは思いますが。
例えば数式コピーの場合、名前が一緒で、その名前範囲のデータがbook1とbook2で違う時、
貼り付け直後に数式結果が変わってくる事もあるのでは。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q名前の読み方

取引先の方から名刺をもらいましたが、名前の読み方がわかりません。
「康源」という名前の読み方教えて頂けないでしょうか。

Aベストアンサー

こんばんは! 自分のクラスには同じ漢字で「やすもと」とゆう人がいます。だからといってはいけないのですが、参考的に「やすもと」とも読めるのでどうでしょうか・・・。的外れでしたらすみません。

Qショートカットでのコピーと右クリックのコピーのちがい

こんばんは。
普段意識せずに使っているのですが、ふと疑問に思ったので、
教えてください。

エクセルでセルなどのコピーをしたいとき
「Ctrl+C」でのコピーとマウスの右クリックのコピー
これは内容が違うのでしょうか?

VBAの自動マクロの作成をするときに何か違いがでるの
かと思いまして。。。

コピーとクリップボードの違いは、
コピー:1つだけ
クリップボード:複数のコピーしたい情報を保管できる

でよいのでしょうか?

最近、身体で覚えてしまったけれど、独学なため
正しい使い方がわかってないな。。と思ったので
教えてください。

Aベストアンサー

> エクセルでセルなどのコピーをしたいとき
「Ctrl+C」でのコピーとマウスの右クリックのコピー
これは内容が違うのでしょうか?

Officeクリップボードで、貼り付けられる様子から見て、同じだと思います。

> コピーとクリップボードの違いは、
コピー:1つだけ
クリップボード:複数のコピーしたい情報を保管できる
でよいのでしょうか?

クリップボードは1つだけ
Officeクリックボードは複数のデータ(上限あり) という違いです。

ちなみに、「Ctrl」+「C」を続けて2回操作すると、Officeクリップボードが開きます。

「Officeクリップボードの利用」
http://www.relief.jp/itnote/archives/000065.php

Q日本人の名前の読み方を教えて

こんにちは、日本に留学している留学生です。

日本人の名前の読み方がいろいろありますが、
漢字がわかってもなかなか読み方が難しいですが、
いくつかの名前を教えていただきたいのです。

映画の情書に出ている「藤井 樹」はなんと読むんですか。
それと
藤井 裕輔 山本 大祐 この三人はしているのでしょうか。
この三人の名前の読み方とこう呼んでもよいという読み方も教えていただきたいのです。

どうぞよろしくお願いします。

Aベストアンサー

 こんにちわ。
 日本では名前の表記と読みのあいだに1対1の対応関係がないので、読み方は本人に聞いてみないとわからないというところがあります。「ふつうはこう読むだろう」という一般的な了解のようなものはありますが、たとえば「裕輔」を「ひろすけ」とか「ゆたか」とか読ませることも、不可能ではありません。それでも「輔」「祐」は古い官名に由来する文字なのでそれほど無茶な読み方をさせることは少ないでしょうが、「樹」だとかなりさまざまな読み方があると思います。役所ではたぶん「樹木」から連想されるほとんどすべての読みを認めるはずですから、「ふとし」「かたし」「のびる」「つよし」などもあり得るでしょう。結局は本人に聞くのが一番なのですが、そうもいかないという場合、とりあえずもっとも一般的と思われる読み方(この場合は「いつき」「ゆうすけ」「だいすけ」でしょう)をしておくしかない、ということになります。ローマ字が併記してあると助かるんですけどね。
 かえって混乱させてしまったかもしれませんが、ご参考まで。

QEX)1つのシート内にコピーされたシートが・・・

何をしてしまったのかわかりませんが、なぜか1シート内に2つのシートがあります。
2画面は連動して動きます。

たとえば左側のA1を選択すると右側もA1が選択され、連動して動きます。
この画面を元の1シートに戻すにはどうしたらよいのでしょう??

現在このファイルはいろいろなデータを10シートくらい作成おり、削除したり、戻るボタンを使用することができません。
戻ってみたらもっと前に行っていた作業に戻ってしまいました。。

大変困っております・・・・・

Aベストアンサー

[ウィンドウ]-[分割の解除] で、戻りませんか?

Q名前の読み方

出生届を出すときって、名前のフリガナまでは記入しないんですよね?

自分の名前は2種類ほど読み方が可能なのですが
(『浩司』と書いて『ヒロシ』『コウジ』みたいな感じ)
保険証に登録されていて、家族に呼ばれているカタカナ名より、違う読み方を他人や知人によくされます。

しかも、そっちの読み方のほうが個人的にカッコイイと思ってます。

いっそのことそっちの読み方にしたいのですが、そういうのは可能なのでしょうか?

Aベストアンサー

皆さんも答えているとおり、出生届けにふりがな欄もあります。しかし、戸籍には記載されません。問題の「漢字」と「よみかた」の問題ですが、法務省の戸籍事務に関する通達では「低」と書いて「たかし」と読むようなものはだめ、となっているだけです。
住民票に記載されているという回答もあるようですが、これも「便宜上」あるだけで、法律上の記載事項ではありません。名前や生年月日について戸籍と住民票のどちらが正しいかというと戸籍という答えになります。なので戸籍に記載されていない「よみかた」を住民票で証明することはできないのです。
ご本人が主張する読み方が正しい、ということになります。

また、原則として同じ戸籍に同じ名前がいてはいけないことになっていますが、これはやはり漢字での問題です。同じ『浩司』と書くが『ヒロシ』さんと『コウジ』さんで違う名前だ、というのはだめ、ということです。

Qワークシートを自動でコピー&ワークシート名を自動変更

こんにちは はじめまして

エクセルのワークシートを自動でコピーするやり方を教えていただけますでしょうか。

やりたいことは以下の通りです。

週報のマスターがありまして、1ファイルで1週間分である5シート、マスターからコピーしています。

今現在は雛形ワークシートを一つ作り、手動でワークシートを5日分をコピーし、ファイル名は「名前2008年6月23日-2008年6月27日.xls」という名前で保存してあります。
週報なので、ワークシート1つに月日を入れており、シート内のA1にも年月日を入れております。

ワークシートのイメージとしてはこんな感じです。↓

シート名:週報マスター.xls
ワークシート名:「雛形」
----------------------------
2008年**月**日
勤務時間:
作業内容:
・・
・・
・・
----------------------------

そしてこれの「雛形」を、自動で1週間分(5ワークシート)、ワークシートをコピーするようにしたいのです。(今は手動でやってます)
WebでVBAの記事を読んで、指定した枚数コピーできることはわかったのですが、A1セルに日付を入れ、日付ごとのワークシート名をつける、
その週をどう指定するのかが不明です。


長文になってしまいましたが、どなたか教えていただけると助かります。

よろしくお願いいたします。

こんにちは はじめまして

エクセルのワークシートを自動でコピーするやり方を教えていただけますでしょうか。

やりたいことは以下の通りです。

週報のマスターがありまして、1ファイルで1週間分である5シート、マスターからコピーしています。

今現在は雛形ワークシートを一つ作り、手動でワークシートを5日分をコピーし、ファイル名は「名前2008年6月23日-2008年6月27日.xls」という名前で保存してあります。
週報なので、ワークシート1つに月日を入れており、シート内のA1にも年月日を入れており...続きを読む

Aベストアンサー

>指定した枚数コピーできることはわかったのですが、A1セルに日付を入れ、日付ごとのワークシート名をつける、その週をどう指定するのかが不明です。

では、その部分のサンプルのみ示しましょう。

Sub Sample()
 Dim dt As String, st As Worksheet
 da = #12/24/2008#     '←サンプルの日付(DATE型)
 Set st = ActiveSheet
 dt = Format(da, "yyyy") & "年" & Format(da, "mm")
 dt = dt & "月" & Format(da, "dd") & "日"

 st.Range("A1") = dt     '←A1セルに日付を入れる
 st.Name = dt         '←シートの名前を日付けと同じにする
End Sub

Qメキシコ人の名前の読み方を教えて下さい

こんにちは、初めて質問させていただきます。
メキシコの固有名詞の読み方を教えて下さい。
Q1:メキシコ人の女性の名前、MaeとWasel, Hattieはそれぞれどのように発音するのでしょうか。
Q2:メキシコ人の場合、男性の名前DavidやCaroll, Hardyといった英名のような姓も、メキシコでは違った読み方が用いられているのでしょうか。
Q3:メキシコの地名、Pachecoの読み方もお教えいただけますでしょうか。
Q4:また上記のようなメキシコ人の名前の読み方は、スペイン語辞典などで調べられるのでしょうか。
以上、どうぞよろしくお願いいたします。

Aベストアンサー

メキシコ人の名前は原則としてスペイン語か先住民の名前(今ではほとんどスペイン語化)でしょう。

1)MaeとWasel, Hattieは外国系の名前のようです。メキシコ人ならマエ、ワセル、アティエと発音するでしょう。しかし、本人が本国の発音をしている場合もあり何ともいえません。

2)David ダビッド Caroll カロル Hardy ハーディまたはアルディ、これらの名前は若者同士なら英語風に発音している可能性があります。Davidはヘブライ語系でメキシコ人も使いますのでダビッドでしょう。

3)Pacheco パチェーコ 人名にもあります。

4)外来語や英語風な名前は移民の二世、三世の可能性があります。この場合発音の原則はありません。本人がどう発音しているかによります。スペイン系の名前は聖人から取りますのでそんなに多くありません。スペイン語の読み方(発音)の基礎を勉強すれば(1~2日)全ての名前が読めますよ。一部の例外を除きローマ字読みでOKですから。代表的な名前は辞書にも掲載されています。

Q全てのワークシートのレイアウト変更について

いくつも全く同じレイアウトのエクセルシートがあります。この全てのシートのレイアウトをいっぺんに全く同様なレイアウト変更(ある場所のセル内容を別の場所にカット&ペーストで移したい)したいのですが、マクロでどう書けばいいかお教え下さい。シート名を一つ一つ指定するやり方では実行できましたが、問題は一つのファイルのワークシートの数は毎回変更されるところです。因みにワークシート名(タブの部分)のネーミングルールは同じです(Plan(1), Plan(2)....Plan(n)となります)。以下に一つ一つ指定した場合のマクロを載せます。宜しくお願いいたします。
Sheets("PLAN(1)").Activate
Rows("29:31").Select
Selection.Delete Shift:=xlUp

ActiveWindow.LargeScroll ToRight:=-1
Range("j3:q28").Select
Selection.Cut
Range("a29").Select
ActiveSheet.Paste
Range("Q23").Select

Sheets("PLAN(2)").Activate
Rows("29:31").Select
Selection.Delete Shift:=xlUp

ActiveWindow.LargeScroll ToRight:=-1
Range("j3:q28").Select
Selection.Cut
Range("a29").Select
ActiveSheet.Paste
Range("Q23").Select
以下、同様です。

いくつも全く同じレイアウトのエクセルシートがあります。この全てのシートのレイアウトをいっぺんに全く同様なレイアウト変更(ある場所のセル内容を別の場所にカット&ペーストで移したい)したいのですが、マクロでどう書けばいいかお教え下さい。シート名を一つ一つ指定するやり方では実行できましたが、問題は一つのファイルのワークシートの数は毎回変更されるところです。因みにワークシート名(タブの部分)のネーミングルールは同じです(Plan(1), Plan(2)....Plan(n)となります)。以下に一つ一つ指定し...続きを読む

Aベストアンサー

下記コードの書き方だと、シート名は問題になりません。

Sub Sample()

  Dim SH As Worksheet

  '画面の再描写を停止
  Application.ScreenUpdating = False
  'マクロが書かれたブック内の全シートでループ処理
  '変数SHにはシートがひとつひとつセットされます
  For Each SH In ThisWorkbook.Worksheets
    '処理除外するシートがあればここで判定
    'シート名で比較します
    If SH.Name <> "除外シート" Then
      '除外シートでなければ
      With SH
        '29~31行目を削除
        .Rows("29:31").Delete Shift:=xlUp
        'J3:Q28を切り取り、A29に貼り付け
        .Range("J3:Q28").Cut Destination:=.Range("A29")
      End With
    End If
  Next SH

End Sub

下記コードの書き方だと、シート名は問題になりません。

Sub Sample()

  Dim SH As Worksheet

  '画面の再描写を停止
  Application.ScreenUpdating = False
  'マクロが書かれたブック内の全シートでループ処理
  '変数SHにはシートがひとつひとつセットされます
  For Each SH In ThisWorkbook.Worksheets
    '処理除外するシートがあればここで判定
    'シート名で比較します
    If SH.Name <> "除外シート" Then
      '除外シートでなければ
     ...続きを読む

Q名前の読み方が分かるサイト

漢字で書かれた名前の読み方を
簡単に調べられるようなサイトはないでしょうか?

読み方の分からない名前をしばしば目にして
困惑してしまうのですが・・・。

そう言うサイトご存知の方居ましたら
教えて下さい。

Aベストアンサー

名前は読み方が色々あるので難しいと思いますが、ここを試してみてください。

Dictionaries to search:のところを all にして Search してください。

参考URL:http://www.foks.info/index.html

Qワークシートのイベントでダブルクリックしたとき、特定の列だけにしたい

ワークシートのイベントでダブルクリックしたときの対象を特定の列だけにしたい

VBAは素人のものです。
環境は、Windows7. Pro. 64Bit Office2010 です。

エクセルシートのA列の各行のセルに以下のようなファイルのフルパスが入っています。
(全て動画ファイル)


A列
1行目 C:\user\admin\Videos\ABC.mp4
2行目 C:\user\admin\Videos\AXX.flv
3行目 C:\user\admin\Videos\XPBD.mp4
4行目 C:\user\admin\Videos\猫のあくび.mp4
 :
 :

エクセル上から、各セルの動画ファイルをダブルクリックして再生をさせるため
下記のようなワークシートイベントを作成しました
(参照元 http://qa.itmedia.co.jp/qa7370732.html)



Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
CreateObject("Shell.Application").ShellExecute Target
'target はファイルのパスを書いてあるところ
End Sub

最終的にやりたいことは、エクセルから一括でファイル名の変更をかけるための
作業を行なうことです。(リネーム用のVBAは作成済みです)
そのため、B列には変更後のファイル名、その他C列以降には更新日やファイルサイズが
入っています。
動画を確認しながら、B列以降の変更ファイル名やプロパティを編集するのに
上記のワークシートイベントでは、B列以降のダブルクリックによる編集モード
が行なえないので不便です。
ダブルクリックイベントをA列のみを対象にするか、
または、例えばマウスの中クリックで、A列のターゲットが動作するとか、
あるいは、他の列は、中クリックや右ダブルクリックで編集モードに入れるとかでも良いです。


当初、B列にハイパーリンクを作成して[=HYPERLINK(A1)]
動画を再生しようと試みましたが、
必ず毎回、ハイパーリンク警告メッセージが出てやりずらかったので
下記の方法をためしましたが、どれも警告メッセージを消すことは
できませんでした。


https://support.microsoft.com/ja-jp/kb/882598/ja
https://support.microsoft.com/ja-jp/kb/925757/ja
https://support.microsoft.com/ja-jp/kb/829072/ja

よろしくお願いします。

ワークシートのイベントでダブルクリックしたときの対象を特定の列だけにしたい

VBAは素人のものです。
環境は、Windows7. Pro. 64Bit Office2010 です。

エクセルシートのA列の各行のセルに以下のようなファイルのフルパスが入っています。
(全て動画ファイル)


A列
1行目 C:\user\admin\Videos\ABC.mp4
2行目 C:\user\admin\Videos\AXX.flv
3行目 C:\user\admin\Videos\XPBD.mp4
4行目 C:\user\admin\Videos\猫のあくび.mp4
 :
 :

エクセル上から、各セルの動画ファイルをダブ...続きを読む

Aベストアンサー

A列の場合のみ。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Target.Column = 1 Then
  Cancel = True
  CreateObject("Shell.Application").ShellExecute Target
  'target はファイルのパスを書いてあるところ
 End If
End Sub


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング