2012-09-14 20:31:52 +0000 2012-09-14 20:31:52 +0000
7
7

Excelでは、コピーシートで既に存在する名前の範囲の警告が表示されるようになったのはなぜですか?

数日前からMicrosoft Excel 2007のスプレッドシートで作業をしています。シートのようなマスターテンプレートから作業をしていて、それを新しいシートにコピーすることを繰り返しています。今日までは、これは何の問題もなく起こっていました。しかし、今日の途中で突然これが変わってしまい、原因がわかりません。今では、ワークシートをコピーしようとすると、10個ほどのダイアログが表示され、それぞれが異なる名前の範囲のオブジェクト(下の図では「XXXXXX」と表示されています)が表示されるようになりました。

移動またはコピーしたい数式またはシートには名前 ‘XXXXXX’ が含まれており、コピー先のワークシートには既に存在しています。このバージョンの名前を使用しますか?

  • 移動先のシートで定義されている名前を使用するには、[はい]をクリックします。
  • 数式またはワークシートで参照されている範囲の名前を変更するには、[いいえ]をクリックし、[名前の競合]ダイアログボックスに新しい名前を入力します。

名前範囲オブジェクトは、シート内のセルを参照します。例えば、E6は複数のシート上で名前範囲PREと呼ばれており(ずっとそうです)、数式の中にはPREではなく$E$6を参照しているものもあります。上記の「○○○○○」のうちの一つがこのPREです。これらの名前の範囲は、それらが表示されているシート内でのみ解決する必要があります。以前は複数のシートに同じ名前範囲が存在していたにもかかわらず、これは問題になりませんでした。名前の範囲は残しておきたい。

この動作の変化を引き起こすために、スプレッドシート内で何が変更されたのでしょうか?この方法で作成された以前のシートに戻ってみましたが、コピーしたときにもメッセージが表示されます。別のコンピュータと別のユーザで試してみましたが、どこでも同じ動作が見られます。スプレッドシートの何かが変更されたとしか思えません。これは何なのでしょうか?また、名前の範囲を指定したシートをコピーしても警告が出ないような以前の動作に戻すにはどうすればいいのでしょうか?

Name Manager を見てみると、文句を言われている名前の範囲が 2 回表示されています。スコープTemplateのものを削除するとコピー時に警告は消えますが、#REFエラーがたくさん出てきます。スコープ Workbook のものを削除した場合は、コピー時の警告も消えたので、これが答えなのかもしれませんが、この削除がどのような効果をもたらすのか不安ですし、そもそも Template のものがどのようにして存在しているのか疑問です。

Workbook ネームマネージャのスコープ付きエントリを削除しても大丈夫でしょうか?

回答 (6)

6
6
6
2012-09-14 20:51:03 +0000

名前マネージャを開いて、文句のある名前の項目を見つけて、スコープがWorkbookのものをすべて削除すると、シートのコピーの問題はなくなり、数式はそのままになります。

5
5
5
2014-07-11 09:59:53 +0000
Sub TOOLS_DELETENAMEDRANGE()

  Dim nm As name
  On Error Resume Next

  For Each nm In ActiveWorkbook.Names
    If (MsgBox("Delete name- " & nm.name, vbYesNo) = vbYes) Then  
      nm.Delete
    End If
  Next

  On Error GoTo 0

End Sub
2
2
2
2012-09-14 20:52:04 +0000

これはエラーではありませんが、競合が存在するという警告であり、どうすればよいかの選択肢を提供しています

名前の付いた範囲(通常はワークシートのスコープ)への参照を含む範囲をコピーしたときに、コピー先のシートに同じ名前が存在する場合、Excelはどの名前を結果に使用したいかをどのようにして知ることができますか?

何が変更されたかについては、ワークブック内のすべての名前、特にスコープの名前を見直すことをお勧めします。
名前マネージャ - Ctrl-F3

1
1
1
2013-11-04 08:47:47 +0000

これらの名前は、ほとんどの場合、サードパーティAPIを介してデータをダウンロードした結果です。APIは通常、これらの名前をセル参照のプレースホルダとして使用します。

データを処理した後は、一般ユーザーが隠れている(または非常に隠れている)シートをクリーンアップしないため、これらの名前はほとんど残されます。これらの名前に関連した問題は、これらの名前が[名前]ボックスに表示されないため、このオプションで削除できないことです。

私がそれに取り組む1つの方法は、VBAスクリプトを使ってプログラムすることです。以下のサンプル

Sub do_loop_names()
Dim vJunkName As Name
Debug.Print ThisWorkbook.Names.Count

For Each vJunkName In ThisWorkbook.Names
    vJunkName.Delete
Next vJunkName
End Sub

このスクリプトはワークブックからすべての名前を削除することに注意してください。

もっと効率的な解決策があれば教えてください。

0
0
0
2015-02-20 22:03:14 +0000

私も同じ問題を抱えており、提供された解決策を試してみましたが、成功することはありませんでした。

1) 名前マネージャを開いてみると、作成していない名前がたくさんありました。しかし、それらは警告されていた名前ではありませんでした。

2) Viquar が提供してくれたコードを試してみました(start “Sub do_loops_names”)。実際に何かをする方法が分からないので、コードの一部を見逃したのだと思いますが、確かに何も起こりませんでした。

3) I tried the code provided by user345338 ( starts with “sub TOOLS_…”) - PERFECT. それは、なぜかワークブックに詰まっていたすべての隠された名前を歩いて、それらを削除しました。user345338さん(誰だか知らないけど!)、ありがとうございました。

ちなみに「codea」さんへ - user345338さんのコードは、私の問題を解決してくれたので、「役立たず」ではありません。

0
0
0
2013-07-01 18:49:58 +0000

ここでも27の謎の名前付き範囲で同じ問題が発生しました。私はCtrl+F3(別の回答で推奨されているように)を使用して、名前付き範囲のリストを表示しました(これは私が設定したことがありません!)。ワークシート・タブを何度もコピーして、メッセージを回避するために “はい "をクリックしていたので、たくさんありました。私は、名前付き範囲をすべてハイライトして削除しました(小さな画面を一度に1つずつ表示し、すべてを選択することはできませんでした)。次にワークシートをコピーしようとすると、警告メッセージなしでコピーが成功しました。

必ず元のファイルをコピーしてから試してください。