2016-12-20 49 views
0

根據我的last question,我現在想讓我的數據在我的Excel工作表中保留Excel工作表的當前格式。基本上Excel工作表具有背景顏色和已爲單元格設置的特定邊界。當我將數據複製到單元格時:PowerShell粘貼到Excel - 匹配目標

$Excel = New-Object -ComObject excel.application 
$Excel.visible = $true 
$WorkBook = $excel.Workbooks.Open($ExportCsv) 
$WorkBook2 = $excel.Workbooks.open($Template) 
$Worksheet = $Workbook.WorkSheets.item($ExpCsvShort) 
$Worksheet.activate() 
#A Range Copy 
$rangeAc = $WorkSheet.Range(「A2:A26」) 
$rangeAc.Copy() | out-null 
#Select sheet 2 
$Worksheet2 = $Workbook2.Worksheets.item(「Worklog」) 
$worksheet2.activate() 
#A Range Paste 
$rangeAp = $Worksheet2.Range(「K6:K30」) 
$Worksheet2.Paste($rangeAp) 
#C Range Copy 
$rangeCc = $WorkSheet.Range(「C2:C26」) 
$rangeCc.Copy() | out-null 
#C Range Paste 
$rangeCp = $Worksheet2.Range(「O6:O30」) 
$Worksheet2.Paste($rangeCp) 
#D Range Copy 
$rangeDc = $WorkSheet.Range(「D2:D26」) 
$rangeDc.Copy() | out-null 
#D Range Paste 
$rangeDp = $Worksheet2.Range(「L6:L30」) 
$Worksheet2.Paste($rangeDp) 

我失去了單元格的格式。我看到this question,並嘗試使用.PasteSpecial()方法,該方法失敗(無法調用空表達式),但數據仍然結束。

當我粘貼我的數據而不完全重寫我的腳本時,是否有辦法保留我的單元格背景顏色和邊框?有沒有我可以在我現有的代碼中添加.PasteSpecial()以匹配目標格式的位置?

回答

0

想通了。我想我的路線應該是:

$rangeAp = $Worksheet2.Range(「K6:K30」) 
$Worksheet2.PasteSpecial(-4163, $rangeAp) 

但它應該是:

$rangeAp = $Worksheet2.Range(「K6:K30」) 
$rangeAp.PasteSpecial(-4163) 

我誤解了如何調用.PasteSpecial()。我希望你們比我更聰明!

+0

感謝@gravity爲我指出了正確的方向! – Nate