ncs*_*180 4 excel vba serial-port excel-vba
我目前正致力于简化工作流程.它涉及Chatillon DFIS Force Meter,它使用串行连接传输数据.数据以文本形式发送到Chattillon程序,只能保存为.dat文件.我正在尝试设置一个Excel工作簿,它可以自动打开程序并使用不同的命令将信息直接输入Excel.命令将涉及更改单位,归零传感器和传输.
我做了一些环顾四周,发现Shell功能让你可以打开文件,并且应该允许你控制它,但是我还没有找到通过Excel调用和操作程序的方法.如果有人可以帮助解决这个问题,那将非常感激.
提前致谢!
内特
Chatillon程序,基本上是用鼠标点击的按钮
如果外部应用程序具有COM接口,则Excel和VBA可以控制外部应用程序- 也就是说,如果可以将应用程序声明为对象,则创建对象的实例,并查看其方法和属性.
如果您可以获得程序的COM包装器,那就这样做.
如果你不能......你不会喜欢使用I/O流和Windows Shell对象,因为命令行DOS接口作为用户界面并不是特别友好,并且它们比霹雳舞更加狡猾.糕点工厂,当您尝试将它们用作VBA中的API时.
首先,您需要Windows脚本宿主对象模型公开的"WshShell"对象.您可以通过后期绑定来声明和实例化它,如下所示:
__PRE__但是,正确的方法(这将给你的属性和方法的智能感知下拉列表)是使用"工具:引用..."对话框创建父库,它通常位于C找到了一个参考:\ Windows下\ SYSTEM32\wshom.ocx
然后,您可以将Shell对象声明为:
__PRE__
这是一个打开命令窗口并运行命令行可执行文件的示例,为其提供命令行开关'-s'和封装在双引号中的参数.
请注意,我正在运行的可执行文件不是'regsvr32.exe' - 我的shell对象正在执行cmd.exe,这是I/O流的源和接收器.
当然,您可以直接运行您的应用程序.它可能会奏效.但它是很常见的输出流锁定或"挂"您的通话功能和VBA线程,当你调用.StdOut.ReadLine或.StdOut.ReadAll - 你已经被警告.
__PRE__分享和享受.并且,一如既往,请注意源代码示例中浏览器(或StackOverflow的文本框界面)插入的换行符.