2010-03-29 5 views
1

워크 시트를 통합 문서 A에서 다른 통합 문서 B로 복사하는 Powershell 스크립트를 작성했습니다. 워크 시트에는 해당 시트 내의 범위 이름이 정의되어 있습니다. 원래 정의 된 이름은 통합 문서 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이 ​​실제로 그것에 대해 할 일이 없다고 생각합니다. 나의 유일한 의지는 2 차 시트에서 명명 된 범위를 삭제하고 다시 작성하는 것으로 보였습니다.

관련 문제