2010-03-29 71 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真的沒有任何事情要做。我唯一的追求似乎是放棄並重新創建輔助工作表上的命名範圍。