
FSO(Filesy System Object) *** 作文件,要重定向的话,需要以命令行形式执行脚本并在命令行里指定要重定向到的文件。
命令行方式如下:cscript 脚本名称 >> "D:\Program Files\diffcount\myresulttxt"
脚本里直接写入文件的方式(FSO):
只有用Exec执行命令,才能获取输出流并写入文件。
Const ForWriting = 2resultfile = "D:\Program Files\diffcount\myresulttxt"
Set fso = CreateObject("ScriptingFileSystemObject")
Set myfile = fsoOpenTextFile(resultfile, ForWriting, True)
Set WshShell = WScriptCreateObject("WScriptShell")
Set oExec = WshShellExec(shell_cmd)
Set oStdOut = oExecStdOut
Do Until oStdOutAtEndOfStream
myfileWriteLine oStdOutReadLine
Loop
myfileClose
Command就是VB里的启动参数值
例子:
Private Sub Form_Load()
If Command = "" Then
Msgbox "Command参数是空的"
Else
Msgbox "Command参数是:" & vbNewLine & Command
End If
End Sub
1、VBA取行列数:
例如要取第二行使用了多少列:Cells(2, ColumnsCount)End(xlToLeft)Column:解释:主要是End方法,VBA中如下阐述:返回一个 Range 对象,该对象代表包含源区域的区域尾端的单元格。等同于按键 End+ 向上键、End+ 向下键、End+ 向左键或 End+ 向右键。Range 对象,只读。意思就是说取到选择区域的最后一个单元格。
如果你需要取到sheet页内使用到的最大行和列,可以如下使用: nRow = ActiveSheetUsedRangeRowsCount nCol = ActiveSheetUsedRangeColumnsCount
2、VBA运行CMD:固定写法
Set objshell = CreateObject("wscriptshell")
' CMD需要在当前文件夹下执行
Dim path As String
path = ThisWorkbookpath
Set DosExec = objshellExec("cmdexe /c " & "sqlldr " & strDBInfo & " control=" & path & "\resultctl")
Set DosExec = Nothing
Set objshell = Nothing
此处添加path,是因为SQLLOADER在执行时需要找到此文件。
3、数组
整体来说VBA的数据很奇葩。 声明数组:Dim arr() as String,这个是一个无法一个一个赋值的数据,也可以声明定长的数据:Dim arr(1 To 3) as String,但是在程序中往往数组的大小是根据某一个值来确定的,但是却无法像如下声明:Dim arr(1 To intValue)(intValue为整数),你需要ReDim,才可以、ReDim strRtn(1 To usedNum)(建议不从1开始,从0开始,否则容易会造成混乱)如果ReDim时,需要保留之前的值,请添加参数:Preserve。ReDim Preserve a(5) A
以上就是关于vba如何获取Shell执行程序的外部输出或者如何将外部程序的执行结果重定向到一个文件全部的内容,包括:vba如何获取Shell执行程序的外部输出或者如何将外部程序的执行结果重定向到一个文件、一个vb写出来的exe程序,在cmd调用的时候如何添加参数运行、vba中vbsrows.count如何取第二列等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)