Sono stato a questo per un bel po ',Creazione di un nuovo foglio di lavoro Excel tramite .copy() e spostandolo verso l'ultima posizione
voglio creare un nuovo foglio di lavoro copiando un'altra. Questo posiziona il nuovo foglio prima che il foglio venga copiato. Poi voglio spostarlo fino alla fine di tutti i fogli.
L'obiettivo è quello di avere i fogli di lavoro chiamati> Sommario1> summary2> summary3 .. ecc in questo ordine
Ecco quello che ho (scusa brevità)
$ex = New-Object -ComObject Excel.Application
$ex.Visible = $true
$wb = $ex.Workbooks.Add()
for ($i = 1; $i -le 3; $i++)
{
$wb.Worksheets.Item(2).Copy($wb.Worksheets.Item(2))
$newSheet = $wb.Worksheets.Item(2)
$newSheet.Activate()
$name = "Summary$i"
$newSheet.Name = $name
$wb.Worksheets.Item($name).Move($wb.Worksheets.Item($i + 1))
}
Si lavora per il primo foglio, rinomina il foglio, quindi lo sposta fino alla fine, ma dopo di che, ogni volta che raggiunge il metodo .Move, non fa nulla se non. Attiva() il foglio "Riepilogo" originale.
Non ho idea di come spiegare questo comportamento .. Grazie gentilmente in anticipo.
Edit:. Cambiato $ wb.Worksheets.Item ("Sommario") Spostare a $ wb.Worksheets.Item ($ name) .Portare
Edit:
ecco la soluzione:
for ($i = 1; $i -le 3; $i++)
{
$wb.Worksheets.Item(2).Copy($wb.Worksheets.Item(2))
$newSheet = $wb.Worksheets.Item(2)
$newSheet.Activate()
$name = "Summary$i"
$newSheet.Name = $name
$lastSheet = $wb.WorkSheets.Item($wb.WorkSheets.Count)
$newSheet.Move([System.Reflection.Missing]::Value, $lastSheet)
}
Benvenuti a StackOverflow, si ricorda che è possibile rispondere voi stessa domanda e non solo la modifica di esso (lo è ancora di [altamente consigliato] (http: //meta.stackexchange.com/questions/17463/can-i-answer-my-own-questions-even-those-where-i-knew-the-answer-before-asking)) e accettarlo. In questo modo, puoi condividere le tue conoscenze con la comunità e tipo di * chiudere * la domanda - grazie per la comunità. – JMax