2010-03-29 4 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 действительно не имеет никакого отношения к этому. Мое единственное обращение, казалось, заключалось в том, чтобы сбросить и воссоздать именованные диапазоны на вторичных листах.

Смежные вопросы