
追い詰められているマクロ初心者です。
ネットで相談させていただき、下記マクロを完成する事が出来たのですが、
一部修正がうまくいかない為投稿させていただきました。
マクロ内容:エクセルファイルを指定し、選択したシートを現在のブックにコピーする
その際、不要な名前管理を削除してからコピー
修正したい箇所:指定したブックからコピーした際、シート参照の数式が入っていると外部参照になってしまう。
やってみた事:①(i)の前にarrayを入れる 外部参照のまま
②(i)を削除してみた 外部参照にならなくたったが際限なくシートをコピーし続けた
Sub 名前管理削除()
Dim myPath As String
Dim wb_A As Workbook
Dim i As Integer
'
myPath = Application.GetOpenFilename(("Excelファイル,*.xls*,CSVファイル,*.csv"), , "ブックを選択して下さい。")
If myPath = "False" Then Exit Sub
Set wb_A = Workbooks.Open(myPath)
Dim name As Object
For Each name In Names
If name.Visible = False Then
name.Visible = True
End If
Next
On Error Resume Next ' エラーを無視。(削除件数にカウントしてしまいます)
For Each nm In ActiveWorkbook.Names
If InStr(nm.Value, "#REF") > 0 Or _
InStr(nm.Value, "\") > 0 Then
nm.Delete
i = i + 1
Else
End If
Next nm
' 終了の表示
MsgBox "不要な名前定義を削除しました。" & vbCr & _
"削除定義件数=" & i & "件", vbInformation, cnsTitle
For i = 1 To wb_A.Sheets.Count
wb_A.Sheets(i).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
Next
wb_A.Close False
End Sub
不勉強で申し訳ございませんが、何卒よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>やってみた事:①(i)の前にarrayを入れる
とありますが、「wb_A.Sheets(array(i))」と記述したのなら、参照が設定されてしまいます。
参照設定させないためには、全シートを一括でコピーさせる必要があり、そのためにarray()を使用します。
最後のForループで、いきなりコピーせず、1つずつシート名を取得します。
(配列に格納すると良いと思います)
その後に、array()の中に、取得した全てのシート名を列記すれば大丈夫です。
お忙しいところ本当にありがとうございました。ご回答いただきましたサンプルをもとに、じっくり修正してみたいと思います。本当にありがとうございました!
No.1
- 回答日時:
少し直してみましたが、マクロでは除去できないものがあります。
以前、それ専用のマクロを作ったことがありますが、基本的には、無理だったような気がします。
それで、エラーを出したら、エラーを出した数を数えるようにしました。 変数 j, k
具体的には、IFERROR という関数を使った名前定義は、セルの中に潜り込んで取れなくなったのだったという記憶があります。
不要な名前定義の削除について、このサンプルをとおして検討し直してみてください。
'//
Sub 名前管理削除r()
Dim myPath As String
Dim wb_A As Workbook
' Dim i As Integer
'
myPath = Application.GetOpenFilename(("Excelファイル,*.xls?,CSVファイル,*.csv"), , "ブックを選択して下さい。")
If myPath = "False" Then Exit Sub
Set wb_A = Workbooks.Open(myPath)
'------------------------
Dim n As Name
Dim nn As String
Dim j As Long, k As Long
Dim r As Range, b As Range
Const cnsTitle = "名前削除"
For Each n In wb_A.Names
n.Visible = True
nn = Mid(n.RefersToLocal, 2)
If IsError(Evaluate(n.Value)) Then
On Error Resume Next
n.Delete
If Err() <> 0 Then
k = k + 1
Else
j = j + 1
End If
On Error GoTo 0
Else
Set r = Range(nn)
If IsError(r) Then
n.Delete
j = j + 1
ElseIf InStr(nn, "\") > 0 Then
n.Delete
j = j + 1
End If
End If
Next
If j > 0 Or k > 0 Then
MsgBox "不要な名前定義を削除しました。" & vbCr & _
"削除定義件数=" & j & "件" & vbCrLf & _
"削除失敗件数 =" & k & "件", vbInformation, cnsTitle
End If
If j > 0 Or k > 0 Then
MsgBox "名前削除に失敗しましたので、中止します。", vbCritical
Exit Sub
End If
'----------------------------
For i = 1 To wb_A.Sheets.Count
wb_A.Sheets(i).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
Next
wb_A.Close False
End Sub
お忙しいところご丁寧にありがとうございました。ご回答いただきましたサンプルを元にじっくりと検討したいと思います。本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
このQ&Aを見た人はこんなQ&Aも見ています
-
好きな人を振り向かせるためにしたこと
大好きな人と会話のきっかけを少しでも作りたい、意識してもらいたい…! 振り向かせるためにどんなことをしたことがありますか?
-
何回やってもうまくいかないことは?
みなさんには、何回やってもうまくいかないことはありますか?
-
もし10億円当たったら何に使いますか?
みなさんの10億円プランが知りたいです!
-
コーピングについて教えてください
皆さんはストレスを感じたとき、どのような方法や手段、テクニックで対処していますか?
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
エクセルで数式は残したまま他シートからのリンクを一括で外す方法
Excel(エクセル)
-
EXCELで別のブックから式をコピーしたときにブック名がついてきてしまうのですが
Excel(エクセル)
-
Excel VBA シート保存時のリンク解除について
Excel(エクセル)
-
-
4
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
削除できないファイルがあるん...
-
ダウンロードに失敗したファイ...
-
他ブックからのシートコピーの...
-
実行時エラー336の意味を教...
-
プリンタードライバーがアンイ...
-
Vistaのローカルプロファイルを...
-
YouTube等の動画のサムネイルの...
-
購入時からあるPCのアプリの削...
-
クリーンアップしても削除でき...
-
マカフィー金庫 非表示または削...
-
ネットからファイルをデスクト...
-
OS上で異常な音がして、動作が...
-
シェルスクリプトで配列が使えない
-
Wordで作成した文章は自分以外...
-
快活クラブで株取引をしたいの...
-
Androidのスマホを 使ってます...
-
Windows10で「映画&テレビ」を...
-
エクスプローラーがローカルの...
-
excel 13でセルにURLを入れたの...
-
Excel2007 IFERROR 他のバー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
購入時からあるPCのアプリの削...
-
TIFファイルを削除しようとすると
-
マカフィー金庫 非表示または削...
-
他ブックからのシートコピーの...
-
ローカルディスク(B)? のアイ...
-
削除できないファイルがあるん...
-
YouTube等の動画のサムネイルの...
-
Windows10 スタートメニューに...
-
Acronis True Imageでセキュア...
-
yahooのパーソナル天気の・・・
-
あるレジストリキーの削除に関して
-
マカフィーの完全削除を求む!
-
プリンタードライバーがアンイ...
-
Vistaのローカルプロファイルを...
-
デバッカエラーが出るのでデジ...
-
Java(TM) 6 Updateが複数あるの...
-
google日本語入力が削除できない
-
Windowsムービーメーカーが起動...
-
Windows Media Player10について
-
PCを強制終了するとクッキーが...
おすすめ情報