2010-03-29 69 views
1

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

但是现在,在复制到工作表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() 

回答

0

我有这个问题,直接在Excel本身复制带有命名区域的工作表。就在上周我有这个问题。我找不到原因,我怀疑PowerShell真的没有任何事情要做。我唯一的追求似乎是放弃并重新创建辅助工作表上的命名范围。