名前の定義の一括削除したいんです。
こんにちは。
先日、同一フォルダの複数ブックのワークシート名の変更とセルの幅の変更とセルへの色付けを教えていただきました。
そこから先に問題が発生して、毎月更新するファイルなので
アクセスのクエリをエクスポートしていますが、エクスポート先の
ブックに名前の定義が残っているため、ワークシート名を変更しても
前月のシートにデータを上書きしてしまいます。
なのでシートの名前の定義の削除を行いたいのですが、
Dim nm As Name
For Each nm In Application.Names
nm.Delete
Next
のコードを以前の質問から検索して使用してみましたが
nm.Delete
のところで名前が正しくありませんと出てしまいます。
アクセスでエクスポートしてエクセルに張り付いた名前の定義は
VBAでは削除できないのでしょうか?
最終的には同一フォルダの複数ブックのワークシートの
名前の定義をVBAで一括削除したいんですが・・・。
試してみたコードは下です。
結果はシート名(2)にシート名が変更されて
名前の定義は削除されていませんでした。
シート名を変更しているのでシート名と名前の定義の名称は
違っています。
Dim N As Object にしても結果は同様でした。
マクロの記録ではWorkbook.Names("AAA").Delete
になっていて定義の名前を指定しないとダメなのかなとか
思っていたりします・・。
度々で申し訳ないですが、お知恵を頂戴できないでしょうか?
Dim path$, wb As Workbook, wbName$
Dim ws As Worksheet, i&
Dim nCount As Long
Dim sVal As String
Dim n As Name
path = ThisWorkbook.path & "\"
wbName = Dir(path & "*.xls")
Do Until wbName = ""
If wbName <> ThisWorkbook.Name Then
Set wb = Workbooks.Open(path & wbName)
i = 2
Set ws = wb.Worksheets(wb.Sheets.Count)
If Trim(ws.Range("T2") & "月") <> "" Then
On Error Resume Next
ws.Name = ws.Range("T2") & "月"
nCount = 1
sVal = ws.Cells(1, nCount).Value
Do While sVal <> ""
ws.Columns(nCount).EntireColumn.AutoFit
ws.Cells(1, nCount).Interior.ColorIndex = 15
nCount = nCount + 1
sVal = ws.Cells(1, nCount).Value
for each n in wb.names
n.delete
next
for each n in ws.names
n.delete
next
Loop
If Err.Number <> 0 Then
ws.Name = ws.Range("T2") & "月" & " (" & i & ")"
i = i + 1
End If
On Error GoTo 0
End If
DoEvents
'Next
wb.Save
wb.Close
End If
wbName = Dir
Loop
Set wb = Nothing
Set ws = Nothing
お礼
ありがとうございました。試してみましたがうまくいきました。