VBA调用bat,doc 命令行 窗口关闭之后,VBA代码 再继续执行

目录

■代码

VBA代码

bat代码

■bat中的[%~dp0]使用 (文章链接)

■扩展 (Bat相关知识):

■其他方式调用bat (文章链接)

■让工具更简洁 (不使用bat文件)


VBA调用doc命令,doc窗口关闭之后,继续执行代码

■代码

VBA代码

Option Explicit

'Docワィンドワ閉じるした後、後続けの処理実施
Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandel As Long, ByVal dwMilliseconds As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal blnheritHandel As Long, ByVal dwProcessld As Long) As Long

注:

如果你在程序中指定了Option Explicit,那么所有的变量都必须用Dim显式声明才可以使用。

===

'* * * * * * * * * * * * * * * * * ** * * * * * * * * * * * ** *
'*                                                 *
'* Out対象ファイル作成(Tempフォルダー作成)                *
'* 作成日:2016/12/22                              *
'* 作成者:                               *
'* 更新日:                                        *
'* 更新者:                               *
'*                                                 *
'* * * * * * * * * * * * * * * * * * * ** * * * * * * * * ** * *

===

Public Sub createTempFolder()

On Error GoTo errl
         
    '■バッチ対象
    Dim BAT_CREATE_TEMP_TOOL As String: BAT_CREATE_TEMP_TOOL = _
                BAT_FILE_URL & "\" & BAT_CREATE_TEMP_TOOL_FILE_NAME
        
    'bat命令
    Dim cmdStr
    cmdStr = """" & BAT_CREATE_TEMP_TOOL & """" & " " & """" & OUT_FILE_PATH & """"
    'MsgBox cmdStr

    'バッチを実行する
    RetVal = Shell(cmdStr)
    
    processId = OpenProcess(&H100000, False, RetVal)
    r = WaitForSingleObject(processId, -1&)
    r = CloseHandle(processId)
    
    TEMP_FOLDER_EIXST_FLG = "1"
    
    
GoTo endok

errl:
    '異常処理
    ERROR_FLG = "1"
     
    ERROR_INFO_LIST.Add ("関数:「createTempFolder」で、エラー発生しました。")
    ERROR_INFO_LIST.Add ("エラー詳細:" & Err.Number & " : " & Err.Description)
        
endok:

End Sub

变量定义

 'バッチファイルの保存場所
 BAT_FILE_URL = Mid(OUT_FILE_PATH, 1, indexOfOut - 1) & "Tool" & "\bat"

 BAT_CREATE_TEMP_TOOL_FILE_NAME = "CreateTempTool.bat"

bat代码

CreateTempTool.bat

@echo off
set outDir=%1

cd /d %~d0
cd %outDir%
mkdir Temp

■bat中的[%~dp0]使用 (文章链接)


bat中的[%~dp0]使用_sun0322的博客-CSDN博客_bat dp0

扩展 (Bat相关知识):

%0:表示批处理本身 

%~sdp0:
这里面的
d:表示扩展到批处理文件所在的盘符;
p表示扩展到批处理文件所在的路径.


假如批处理文件在c盘的123文件下的test文件夹下:
 c:\123\test\批处理文件:

d:表示c:\;
p表示123\test\
s:表示路径中含有短名 


cd /d %~sdp0:就表示进入批处理文件所在的文件夹中
cd /d %~d0:就表示进入批处理文件的盘符

其他方式调用bat (文章链接)

文件夹缩写(文件夹空格问题解决)_sun0322的博客-CSDN博客

■让工具更简洁 (不使用bat文件)

    'bat命令
    Dim cmdStr
    cmdStr = "c\AAAA\BBB\xxx.exe param1 param2"
    // cmdStr = "java -jar c:\xxx\xxx\xx\tool.jar param1 param2"
    'MsgBox cmdStr

    'バッチを実行する
    RetVal = Shell(cmdStr)
    
    processId = OpenProcess(&H100000, False, RetVal)
    r = WaitForSingleObject(processId, -1&)
    r = CloseHandle(processId)

原来的bat中,有多行命令时,可以多次执行,这样,就不用单独建立一个bat文件了。

===


  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值