説明するには、私は現在、処理後にファイルの最初の2つのタブを分離し、新しいワークブックを開き、そのワークブックを保存します。名前はレポートの担当者の名前(各ファイルに名前が記載されています)と電子メールで送信されます。2つのExcelワークシートを同時に新しいワークブックにコピーしたい
私は2つのことについて助けが必要です。名前の参照としてセルを使用してファイルを保存することができず、同時に2枚のシートをコピーすることはできません(シート1はシート2に依存し、コピー/貼り付けは接続を分割します)。
誰でも助けてもらえますか?
更新: 私は作業として保存することができました:)しかし、同時に2つのワークシートをコピーできるようにするにはまだ助けが必要です。
$Files = GCI '\\networkfolder\workingfolder' | ?{$_.Extension -Match "xlsx?"} | select -ExpandProperty FullName
#Launch Excel, and make it do as its told (supress confirmations)
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $True
$Excel.DisplayAlerts = $False
#Loop through files and perform tasks
ForEach($File in $Files[0..4]){
$Source = $Excel.Workbooks.Open($File,$true,$true) #Open's source
$NewWorkBook = $Excel.Workbooks.Add() # open target (New Workbook)
$sh1_wb1 = $NewWorkBook.sheets.item(1) # first sheet in destination workbook
$sheetToCopy2 = $Source.sheets.item(2) # Alias for 2nd Sheet
$sheetToCopy = $Source.sheets.item(1) # Alias for 1st Sheet
$SheetsToCopy = ($sheetToCopy, $sheetToCopy2) # Selects sheets 1 and 2
#I think the fix to copy both sheets at the same time would be in this step
$SheetsToCopy.copy($sh1_wb1) # copy source sheet 1 & 2 to destination workbook
$ws1 = $NewWorkBook.worksheets | where {$_.name -eq "Charts Data Tab"} #Selects Sheet2
$ws2 = $NewWorkBook.worksheets | where {$_.name -eq "Dashboard"} #Selects Sheet1
$range = $ws1.Rows.Item("1:5000")
[void]$range.select()
$range.Copy();
$range.PasteSpecial(-4163)
$Source.close($false) # close source workbook w/o saving
$Name = $ws1.Cells.Item.Invoke(2,4).Value2 #Registers contents of D2 of Sheet2
$FName = "\\networkfolder\Testing\$Name.xlsx"
$NewWorkBook.SaveAs($FName)
Start-Sleep 50000
}
$xl.quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel)
@デビッドZemens、私は私の「答え」を削除し、私の質問を編集したが、残念ながら、それはまたあなたのコメントを削除しています。私はSave As部分についてあなたの提案を試みましたが、残念ながらそれはうまくいきませんでした:( –
@DavidZemens、助けてくれる人は誰ですか? –