如何在excel中使用VBA调用其它外部程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在excel中使用VBA调用其它外部程序相关的知识,希望对你有一定的参考价值。
使用shell语句,例子:
Sub RAR()Shell "C:\\Program Files\\WinRAR\\WinRAR.exe", vbNormalFocus
End Sub 参考技术A shell
外壳程序,你看看可以不 参考技术B Shell 函数
R执行一个执行档程式,如果成功的话,会传回一个 Variant (Double) 来代表这个程式的 task ID,若不成功,则会传回 o。 语法
Shell(pathname[,windowstyle])
Shell 函数的语法含有底下这些指名引数:
单元
描述
pathname 必要引数,Variant (String),要执行的程式名称,以及任何必要的引数或命令列变数,同可时加上目录或档案夹名称,以及磁碟机名称。
Windowstyle 选择性引数,此为 Variant (Integer),表示在程式执行时,视窗的呈现型态,如果windowstyle 省略,则程式是以最小化来执行。
windowstyle 指名引数有以下这些值:
常数
值
描述
vbHide 0 视窗会被隐藏,且驻点会移到隐藏的视窗。
VbNormalFocus 1 视窗具有驻点,且会还原到它原来的大小和位置。
VbMinimizedFocus 2 视窗会以一个图示来显示,并具有驻点。
VbMaximizedFocus 3 视窗会最大化,并具有驻点。
VbNormalNoFocus 4 视窗会被还原到前一次的大小和位置,而目前使用中的视窗仍然维持使用中。
VbMinimizedNoFocus 6 视窗会以一个图示来显示,而目前使用中的视窗仍然维持使用中。
请注意
如果 Shell 函数可以成功地执行所要的执行档,则它会传回启始程式的 task ID , task ID 是一个唯一的数值,用来指名执行中的程式,如果 Shell 函数无法开启指名的程式,则会产生错误
附注 预设情况为 Shell 函数是以非同时方式来执行其它程式,也就是说,用 Shell 所启动的程式,可能还没执行完全,就执行到 Shell 函数之後的陈述式。
参考之后的代码是这样写的,
Sub MacroUpdate()
On Error GoTo ErrorHandler
ID = Shell(ThisWorkbook.Path & "\" & "LiveUpdate.exe", 4)
Exit Sub
ErrorHandler:
MsgBox Err.Description, vbInformation, MacroTitle
End Sub
运行正常,
ExcelVBA如何调用API DLL(Delphi生成)
Public Declare Function plock Lib "passzy.dll" (ByVal s As String) As Boolean
Declare Function punlock Lib "passzy.dll" (ByVal s As String) As Boolean
在excel中执行的时候,提示第一行错误:编译错误,常数、固定长度字符串…………
我的delphi中声明:(DLL中包含窗体,其它没什么特别的了)
function punlock(s:pchar):boolean; stdcall;
function plock(s:pchar):boolean; stdcall;
编译好的dll,用delphi本身是可以完美调用的。
另外这个DLL无法regsvr32.exe注册,无法用VBA引用。请问我应该怎么做?
(已经解决了,无满意答案)Public改成Private就可以调用了,另外VBA的boolean与Delphi类型格式不一样,传递无意义,必须用整形、浮点或字符串。改成long对integer后完美运行
这里有详细说明和修改文件下载
以上是关于如何在excel中使用VBA调用其它外部程序的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 VBA 在 Excel 中添加连接(到外部数据源)并将其保存到该 Excel 电子表格的连接列表