简体   繁体   中英

Copying Text File Data into existing Excel Workbook Using PowerShell

So I'm having a problem exporting data from a Text.File into a Excel Workbook that contains data from a month. What ends up happening is, the code opens a new workbook with the name and tittle of the sheet called 'Geraldine3-16-2016', I don't mind that, however it never gets added or copied to the the main workbook. So eventually, the only thing that changes in the main workbook is that a new sheet gets created called 'Sheet 1'but there is no data from the text file. Any help is greatly appreciated, Thank you in advance!

function Release-Ref ($ref) { 
([System.Runtime.InteropServices.Marshal]::ReleaseComObject( 
[System.__ComObject]$ref) -gt 0) 
[System.GC]::Collect() 
[System.GC]::WaitForPendingFinalizers() 
} 

$File='C:\users\cesar.sanchez\downloads\Returns data 2-16-15.xlsx'
$TextFile='C:\Users\cesar.sanchez\downloads\Geraldine3-16-2016.txt'

$Excel = New-Object -C Excel.Application
$Excel.Visible=$true #For troubleshooting purposes only.
# $Excel.DisplayAlerts = $false 
$TextData = $Excel.Workbooks.Opentext($TextFile,$null,$true) 
$ExcelData = $Excel.Workbooks.Open($File) # Open Template
$NewS_ExcelData=$ExcelData.sheets.add()
$TexttoCopy=$TextData.Sheets.item(1)
$TexttoCopy.copy($NewS_ExcelData)

I believe it has to do with something in this part of the code but I'm not completely sure.

$NewS_ExcelData=$ExcelData.sheets.add()
$TexttoCopy=$TextData.Sheets.item(1)
$TexttoCopy.copy($NewS_ExcelData)

.OpenText is not the same as .Open . It does not return an object. (found out the hard way!)

$TexttoCopy=$TextData.Sheets.item(1) throws the error:

You cannot call a method on a null-valued expression.

Alternative code:

$File='C:\users\cesar.sanchez\downloads\Returns data 2-16-15.xlsx'
$TextFile='C:\Users\cesar.sanchez\downloads\Geraldine3-16-2016.txt'

$Excel = New-Object -C Excel.Application
$Excel.Visible=$true #For troubleshooting purposes only.
# $Excel.DisplayAlerts = $false 
$Excel.Workbooks.Opentext($TextFile,$null,$true)   # Open Text file
$TextData       = $Excel.ActiveWorkbook            # Assign active workbook
$ExcelData      = $Excel.Workbooks.Open($File)     # Open Template

$NewS_ExcelData = $ExcelData.sheets.add()
$TexttoCopy     = $TextData.Sheets.item(1)

$TexttoCopy.copy($NewS_ExcelData)

You may also find $TexttoCopy.move($NewS_ExcelData) useful.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM