所以我在将Text.File中的数据导出到包含一个月数据的Excel工作簿时遇到问题。最终发生的事情是,代码打开一个新工作簿,其中包含名为'Geraldine3-16-2016'的工作表的名称和tittle,我不介意,但它永远不会被添加或复制到主要工作簿。因此,最终,主要工作簿中唯一改变的是创建一个名为“Sheet 1”的新工作表,但文本文件中没有数据。非常感谢任何帮助,谢谢你提前!
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)
我认为这与代码的这一部分有关,但我不完全确定。
$NewS_ExcelData=$ExcelData.sheets.add()
$TexttoCopy=$TextData.Sheets.item(1)
$TexttoCopy.copy($NewS_ExcelData)
答案 0 :(得分:2)
.OpenText
与.Open
不同。它不会返回一个对象。 (找出困难的方法!)
$TexttoCopy=$TextData.Sheets.item(1)
抛出错误:
You cannot call a method on a null-valued expression.
替代代码:
$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)
您可能还会发现$TexttoCopy.move($NewS_ExcelData)
有用。