使用PowerShell将文本文件数据复制到现有的Excel工作簿中

时间:2016-03-17 14:25:58

标签: excel vba excel-vba powershell

所以我在将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)

1 个答案:

答案 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)有用。