我在Excel VBA中运行一个简单的shell命令,它在指定的目录中运行批处理文件,如下所示:
Dim strBatchName As String
strBatchName = "C:\folder\runbat.bat"
Shell strBatchName
Run Code Online (Sandbox Code Playgroud)
有时批处理文件在某些计算机上运行可能需要更长时间,并且正在进行的VBA代码依赖于批处理文件来完成运行.我知道你可以设置如下的等待计时器:
Application.Wait Now + TimeSerial(0, 0, 5)
Run Code Online (Sandbox Code Playgroud)
但这可能不适用于某些速度太慢的计算机.有没有一种方法,系统地告诉Excel中使用VBA代码的其余部分进行到后壳具有完成运行?
我一直在向VBA添加MS Access数据库,以便对船只进行一些分析.但是,数据库现在已更改为SQlite,我不知道如何从VBA访问.我已经尝试过使用GitHub的SQLiteForExcel,但我不明白它是如何工作的,即使是这些例子.我访问Access数据库的代码如下:( db_path是我的Access数据库的超链接)
Sub query_db()
On Error GoTo Errorhandler
Dim v_db As DAO.Database
Dim rst As DAO.Recordset
Dim vessels_db As Variant
Dim strSQL As String
Dim i As Long
Dim ws As Worksheet
Set ws = Worksheets("results")
ws.Select
vessels_db = [db_path]
Set v_db = OpenDatabase(vessels_db)
Worksheets("results").Select
[x_0].Select
Range(Selection, Selection.Offset(40000, 1)).ClearContents
strSQL = " SELECT Vessels.vsl_name, Vessels.dwt FROM Vessels " & _
" GROUP BY Vessels.vsl_name, Vessels.dwt ORDER BY Vessels.vsl_name ; "
Set rst = v_db.OpenRecordset(strSQL)
...
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何使用SQLiteForExcel更改此代码,以便我可以访问SQLite数据库.
提前谢谢了
我正在尝试运行 ssh 命令,并将输出捕获到 VBA 中的变量(使用 OpenSSH)。我可以让它在命令行中正常工作:
ssh user@ip python C:\Temp\Remote.py
结果是返回到命令行窗口的值列表。我想将其读入 VBA 变量。
我找到了这个,这个和这个。前两个似乎没有正确发送或接收命令,因为代码挂在 oShell.Exec(...) 上。外壳看起来正在执行,但它只是挂起。如果我关闭挂起的命令窗口,VBA 中的结果是空白的。
Dim sCmd As String
sCmd = "ssh user@ip python C:\Temp\Remote.py"
Dim oShell As Object
Set oShell = CreateObject("WScript.Shell")
Dim oExec As Object
Dim oOutput As Object
Set oExec = oShell.Exec(sCmd)
Set oOutput = oExec.StdOut
Dim s As String
Dim sLine As String
While Not oOutput.AtEndOfStream
sLine = oOutput.ReadLine
If sLine <> "" Then s = s & …Run Code Online (Sandbox Code Playgroud) 我正在使用调用python脚本的VBA代码.我可以将参数发送到我的python脚本并使用它来读取它sys.argv[1].
在python代码中,我有一个函数,它接受给定的参数并返回一个值.
请问如何在VBA中获得返回值?