2016-05-13 77 views
0

我基本上試圖創建一個Power Shell函數,該函數接受一個設置爲Excel工作表的變量並返回最後使用的行和列。將Excel類型變量傳遞到PowerShell函數

我知道代碼在函數外工作。這是它在我的函數中的樣子。

Function FindRange ([string] $path) 
{ 
$mainRng = $path.UsedRange.Cells 
$ColCount = $mainRng.Columns.Count 
$RowCount = $mainRng.Rows.Count 
$xRow = $RowCount 
$xCol = $ColCount 
Write-Host "function DEBUG xrow:" $xRow 
Write-Host "function DEBUG xcol: " $xCol 
Write-Host "function path:" $path 
} 
FindRange $BTWSRawSheets 

$ BTWSRawSheets是:

$BTWSRawSheets = $wbBTWS.worksheets | where {$_.name -eq "Export Worksheet"} 

的寫主機輸出 「功能的路徑:」 $ path是

function path: System.__ComObject 

有沒有人能幫助我弄清楚如何通過excel工作表中作爲參數?我花了幾個小時研究和嘗試,但沒有運氣。

回答

1

我想你會混淆它是否是電子表格文件名(文本字符串,$ path是一個合理的名稱),或者它是否是連接到工作表的正在運行的Excel實例的活動COM對象。考慮到你直接使用$ path.UsedRange的方式,並且從輸出消息中,我猜它應該是後者 - 所以你將參數轉換爲[string]的方式正在打破它。

嘗試取出[字符串]類型:

Function FindRange ($path) 
{ 
...