将所有命名范围复制到另一个工作簿

时间:2018-03-28 15:40:43

标签: excel vba copy named-ranges

所以我一直在忙于微软支持这个问题的答案,但他们的代码根本无法正常工作。我很困惑他们如何定义x,或者x总是等于VBA中的变量?无论如何,我试图在一个工作簿中复制所有命名区域,并将它们转移到另一个工作簿。我必须为50多个工作簿执行此操作,并且基本工作簿中有30-40个命名范围。我真的不想手动复制粘贴这些bugger。以下是他们为此问题提供的代码:

Sub Copy_All_Defined_Names()
   ' Loop through all of the defined names in the active
   ' workbook.
     For Each x In ActiveWorkbook.Names
      ' Add each defined name from the active workbook to
      ' the target workbook ("Book2.xls" or "Book2.xlsm").
      ' "x.value" refers to the cell references the
      ' defined name points to.
      Workbooks("trial run.xlsm").Names.Add Name:=x.Name, _
         RefersTo:=x.Value
   Next x
End Sub

运行此命令会出现以下错误:

enter image description here

并突出显示以下代码:

enter image description here

“trial run.xlsm”只是一个空白工作簿,并保存为启用宏;这是我的目标工作簿。看起来傻傻的要求帮助调试微软写的一个宏,但我在这里结束了。

对于我从中得到的原始页面,请参见此处:Microsoft Support

这就是我的命名范围:

enter image description here

1 个答案:

答案 0 :(得分:0)

很难说但是我怀疑你的RefersTo字符串是> 256个字符:如果是这样,它将失败,因为VBA无法处理指向字符串> 256个字符。