使工作表中的Excel定义的名称成为全局名称

时间:2010-03-29 06:51:23

标签: excel powershell excel-vba vba

我编写了Powershell脚本,将工作表从工作簿A复制到另一个工作簿B.工作表包含该工作表中范围的定义名称。最初,定义的名称在工作簿A中是全局的,即。可以从工作簿A中的任何工作表中引用。

但是现在,在复制到工作表B之后,定义的名称仅限于该工作表。如何以编程方式(最好通过Powershell脚本)使所有命名范围全局,即可以从工作簿B中的所有工作表中引用。

为了清晰起见,有些代码。

#Script to update SOP from 5.1 to 5.2
$missing = [System.Type]::missing

#Open files
$excel = New-Object -Com Excel.Application
$excel.Visible = $False
$excel.DisplayAlerts = $False
$newTemplate = "C:\WorkbookA.xls"
$wbTemplate = $excel.Workbooks.Open($newTemplate)

$oldSop = "C:\WorkbookB.xls"
$wbOldSop = $excel.Workbooks.Open($oldSop)

#Delete 'DATA' worksheet from old file
$wsOldData = $wbOldSop.Worksheets.Item("DATA")
$wsOldData.Delete()

#Copy new 'DATA' worksheet to old file
$wbTemplate.Worksheets.Item("DATA").Copy($missing,$wbOldSop.Worksheets.Item("STATUS"))

#Save
$wbOldSop.Save()
$wbOldSop.Close()

#Quit Excel
$excel.Quit()  

1 个答案:

答案 0 :(得分:0)

在从excel本身直接复制带有命名范围的工作表时,我遇到了这个问题。上周我遇到了这个问题。我找不到原因,我怀疑PowerShell真的没有任何关于它的事情。我唯一的办法似乎是在次要工作表上删除并重新创建命名范围。