【问题标题】:Copy All Named Ranges To Another Workbook With VBA使用 VBA 将所有命名范围复制到另一个工作簿
【发布时间】:2020-10-01 12:29:03
【问题描述】:

请先阅读以下帖子; Copy all named ranges to another workbook。我也在尝试,这个页面上的答案和其他网站上的信息让我无处可去。

我已经稍微修改了代码。使用此代码,我收到以下错误;错误 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

【问题讨论】:

  • 它有什么作用吗?如果您在错误时单步执行x.Value 是什么?
  • x.Value ="=SheetName!#REF!"因此,它确实在“数据库”工作簿中找到了一张工作表,但没有范围名称。我在工作簿“数据库”中定义的所有名称都是为整个工作簿设置的,而不仅仅是一张表。
  • 原文件中的引用是什么?
  • 我的数据库文件中有很多范围名称。他们都指的是这样的东西;名称 = Company_Name,参考 = =TableCompany_Name[表头名称]

标签: excel copy range named


【解决方案1】:

我偶然找到了我的问题的解决方案。 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/.


首先我在我的 Database-Workbook 中使用了以下宏来取消隐藏所有定义的名称:

Sub ShowAllNames()
   Dim x As Name
   For Each x In ActiveWorkbook.Names
       x.Visible = True
   Next x
End Sub

在取消隐藏所有定义的名称后,我立即在列表顶部看到了 _FilterDatabase 名称。然后我在我的其他工作簿中的 CopyNames 代码中添加了 'If Not x.Name Like "_Filter*" Then' 行。通过将此行添加到代码中,代码将跳过所有以 _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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 2022-12-08
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多