我编写了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()
答案 0 :(得分:0)
在从excel本身直接复制带有命名范围的工作表时,我遇到了这个问题。上周我遇到了这个问题。我找不到原因,我怀疑PowerShell真的没有任何关于它的事情。我唯一的办法似乎是在次要工作表上删除并重新创建命名范围。