2010-03-29 5 views
1

J'ai écrit le script Powershell pour copier une feuille de calcul d'un classeur A vers un autre classeur B. La feuille de calcul contient des noms définis pour les plages de cette feuille. À l'origine, les noms définis sont globaux dans le classeur A, c.-à-d. peut être référencé à partir de toutes les feuilles de calcul dans le classeur A.Rendre les noms Excel définis dans une feuille de calcul pour être global

Mais maintenant, après copie dans la feuille de calcul B, les noms définis sont limités à cette feuille de calcul uniquement. Comment I par programmation (via le script Powershell préférablement) faire tous ceux nommés plage globale, c'est-à-dire peut être référencé à partir de toutes les feuilles de travail dans le classeur B.

Certains codes pour plus de clarté.

#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() 

Répondre

0

J'ai ce problème lorsque vous copiez des feuilles de calcul avec des plages nommées directement à partir d'Excel. J'ai eu ce problème la semaine dernière. Je ne pouvais pas savoir pourquoi, et je soupçonne que PowerShell n'a vraiment rien à faire à ce sujet. Mon seul recours semblait être de laisser tomber et de recréer les plages nommées sur les feuilles secondaires.

Questions connexes