[英]Copy All Named Ranges To Another Workbook With VBA
请先阅读以下帖子; 将所有命名范围复制到另一个工作簿。 我正在尝试相同的方法,此页面上的答案和其他网站上的信息使我无处可去。
我稍微修改了代码。 使用此代码,我收到以下错误; 错误 1004“应用程序定义或对象定义的错误”。 非常感谢帮助。 错误显示在以下行:'ThisWorkbook.Names.Add Name:=x.Name, RefersTo:=x.Value'
Sub CopyNames()
'Gedefineerde namen kopiëren naar andere werkmap.
Dim x As Name
Dim wbDatabase As Workbook
Set wbDatabase = Workbooks("Database.xlsx")
For Each x In wbDatabase.Names
ThisWorkbook.Names.Add Name:=x.Name, RefersTo:=x.Value
Next x
End Sub
我偶然找到了我的问题的解决方案。 Excel 创建了一个隐藏名称,名为 _FilterDatabase。 我在以下网站 ( https://www.reddit.com/r/excel/comments/78t8mw/what_function_do_the_automatically_generated/ ) 上了解到,只要您在工作簿中过滤某些内容,就会创建此名称。 由于 _FilterDatabase 不以字母开头,因此会在 CopyNames 代码中给出错误。 由于我经常使用过滤器,从长远来看,删除名称对我没有帮助。 当我使用过滤器时,Excel 将再次创建该名称。 我在以下网站上找到了解决方案; https://www.mrexcel.com/board/threads/excel-keeps-creating-a-hidden-_xlfn-iferror-name-why.1081695/ 。
首先,我在数据库工作簿中使用以下宏取消隐藏所有定义的名称:
Sub ShowAllNames()
Dim x As Name
For Each x In ActiveWorkbook.Names
x.Visible = True
Next x
End Sub
取消隐藏所有定义的名称后,我立即在列表顶部看到了 _FilterDatabase 名称。 然后我将“If Not x.Name Like "_Filter*" Then”行添加到我的其他工作簿中的 CopyNames 代码中。 通过将此行添加到代码中,代码将跳过所有以 _Filter 开头的名称。 这是完整的代码;
Sub CopyNames()
'Gedefineerde namen kopiëren naar andere werkmap.
Dim x As Name
Dim wbDatabase As Workbook
Set wbDatabase = Workbooks("Database.xlsx")
For Each x In wbDatabase.Names
If Not x.Name Like "_Filter*" Then
ThisWorkbook.Names.Add Name:=x.Name, RefersTo:=x.Value
End If
Next x
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.