2016-10-13 20 views
0

我想通過PowerShell腳本接收一些數字值到Excel工作表。我已經可以將值返回,但它以字符串的形式到達電子表格,並且Excel不會允許我將其轉換爲數字。 我希望我只是錯過了一步,這不是不可能的。從PowerShell發送數值到VBA

這是VBA部分

strCommand = (PsCommand) 
Set wshshell = CreateObject("WScript.Shell") 
Set WshShellexec = wshshell.Exec(strCommand) 
stroutput = WshShellexec.StdOut.ReadAll 
Sheets("Sheet1").Cells(i, 2).Value = stroutput 
Sheets("Sheet1").Cells(i, 2).NumberFormat = "0" 

我的猜測是,這現在的問題是:

Set WshShellexec = wshshell.Exec(strCommand) 
+0

'Exec'異步運行命令,但是因爲'ReadAll'被阻塞,所以這裏不應該是個問題(除非外部命令產生過多的輸出,所以緩衝區被填滿了)。什麼是'PsCommand'? –

+0

'.Value = Val(stroutput)'? – Slai

+0

PsCommand =「Powershell -File c:\ script \ FolderSizeCheck \ FolderSizev2.ps1」&TargetFolder – Grizli

回答

0

ReadAll總是返回一個字符串。要轉換數字字符串到整數使用CIntCLng

Sheets("Sheet1").Cells(i, 2).Value = CLng(stroutput) 

注意,字符串必須由只是一個數字的(開頭和結尾的空白是好的)。字符串中的其他字符將導致錯誤。在這種情況下,您需要首先解析字符串中的值,然後再將其轉換爲整數。

+0

我試過了,似乎是我正在尋找的代碼部分。非常感謝您的幫助!!! :) – Grizli