2016-10-13 6 views
0

Ich möchte einige numerische Werte, die ich über ein PowerShell-Skript erhalte, in ein Excel-Arbeitsblatt laden. Ich kann den Wert bereits zurückbekommen, aber er kommt als String in die Tabellenkalkulation und irgendwie erlaubt mir Excel nicht, ihn in eine Zahl umzuwandeln. Ich hoffe ich verpasse nur einen Schritt und es ist nicht unmöglich.Senden eines numerischen Werts von PowerShell an VBA

Dies ist der VBA Teil

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" 

Meine Vermutung ist, dass dies hier ist das Problem:

Set WshShellexec = wshshell.Exec(strCommand) 
+0

'Exec' führt Befehle asynchron aus, aber da' ReadAll' blockiert, sollte dies kein Problem sein (es sei denn, der externe Befehl generiert übermäßige Ausgabe, so dass der Puffer voll ist). Was ist 'PsCommand'? –

+0

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

+0

PsCommand = "Powershell -Datei c: \ script \ FolderSizeCheck \ FolderSizev2.ps1" & TargetFolder – Grizli

Antwort

0

ReadAll immer gibt einen String zurück. Um eine Zahlenfolge in eine ganze Zahl zu konvertieren verwenden CInt oder CLng:

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

Beachten Sie, dass die Zeichenfolge nur eine Nummer bestehen muss (führende und nachfolgende Leerzeichen ist in Ordnung). Andere Zeichen in der Zeichenfolge führen zu einem Fehler. In diesem Fall müssen Sie zuerst den Wert aus der Zeichenfolge analysieren, bevor Sie ihn in eine Ganzzahl konvertieren.

+0

Ich habe das versucht und scheint der Code Teil zu sein, nach dem ich gesucht habe. Vielen Dank für die Hilfe !!! :) – Grizli

Verwandte Themen