如何用VBA调用批处理文件?

作者&投稿:容蓉 (若有异议请与网页底部的电邮联系)
vba如何执行批处理文件~

用shell调用

shell 函数在 vba 里,其功能是执行一个可执行文件。
从代码中看:
使用 ActiveWorkbook.Path 获取 excel 当前工作簿的路径,再组合成目标执行程序的全路径,但在 windows 平台中,路径的分隔符是用 \ 而不是 "¥",因此,尝试修改代码,示例如下:
f = Shell(ActiveWorkbook.Path & "\" & GetFileName, vbNormalFocus)f = Shell(ActiveWorkbook.Path & "\" & GetCurPath, vbNormalFocus)

额,不太明白题主说的具体情况,我遇到2种。


1.批处理文件的代码是固定,要么通用性强,要么不跟随变量存在变化

这种情况下,直接调用批处理文件就好了。

Shell "X:\YY\ZZ\abc.bat"

2.批处理文件的代码是变化的,需要在VBA执行过程中写出来,这种情况就比较复杂啦

用Print命名写程序,然后也是Shell来执行啦,下面是我写的实际例子

Open strPNAME For Output As #nFNO
Print #nFNO, "open xx.xx.xxx.xx"   'open 主机名
Print #nFNO, "user"              '用户名
Print #nFNO, "abc"                '密码
'循环,根据Lot 数量,写相应行数的代码
For i = 7 To WorksheetFunction.CountA(Worksheets("RS").[J:J]) + 4
MakeSureDirectoryPathExists "D:\" & Worksheets("RS").Cells(i, "L") & "\" & Worksheets("RS").Cells(i, "J") & "\" '创建文件夹
localfd = "D:\" & Worksheets("RS").Cells(i, "L") & "\" & Worksheets("RS").Cells(i, "J")
'FTP 路径确定
    rsraw = Worksheets("RS").Cells(i, "J") & "*.csv"
    pth = Worksheets("RS").Cells(i, "M").Value
    px = Format(Worksheets("RS").Cells(i, "J"), ">")
     
    p0 = Mid(px, 1, 4)
    p1 = Mid(px, 5, 2)
    p2 = Mid(px, 7, 2)
    p3 = Mid(px, 9, 2)
ftpfolder = "/data1/on/exp/array/rs/" & pth & "/" & p0 & "/" & p1 & "/" & p2 & "/" & p3
'CD到Ftp目录,然后下载到本地,匹配条件为jpg文件
    Print #nFNO, "cd """; ftpfolder; """"
    Print #nFNO, "lcd """; localfd; """"
    Print #nFNO, "bin"
    Print #nFNO, "mget """; rsraw; """"
Next i
Print #nFNO, "bye"
'文件完成
Close #nFNO
ShellAndWait "ftp -v -i -s:" & strPNAME

以上,题主参考下吧




如何用VBA批量处理,一次性把很多cvs格式的文件另存为exl格式文件_百度知...
使用下面代码可批量改后缀名 Sub 批量()Dim wkb As Workbook lj = "D:\\"dirname = Dir(lj & "\\*.cvs")Do While dirname <> ""Set wkb = Workbooks.Open(lj & "\\" & dirname)dirname = Left(dirname, Len(dirname) - 3) & "xls"wkb.SaveAs Filename:="D:\\" & dirname, File...

bat能调用vba代码
兄弟你的意思,我这样理解了,你是不是要先打开excel,然后自动点击里面的按钮,执行代码?如果这样的话,纯dos批处理我认为是无法实现的。。。必须与vbs混合用,bat+sendkeys,应该可以实现 思路,先打开excel,然后代码 echo off start "文件名加后缀"ping -n 3 127.0 >nul mshta vbscript:createobj...

这个vba代表什么意思?
意思是创建一个外壳(Shell)对象,调用它的Run方法开一个命令行程序(cmd.exe)异步(参数0表示异步)运行一个批处理文件task.bat。异步运行的意思是不等待这个批处理文件运行结束就继续执行下面的vba代码。

什么是vba
2. VBA的应用领域 VBA可以应用于Excel、Word、Access、Outlook等多个Office组件中。例如,在Excel中,通过VBA可以编写代码来自动处理数据、分析数据、生成图表等;在Word中,VBA可以用来自动创建文档、批量处理文本等。此外,VBA还可以用于自动化定制Office的用户界面、创建新的菜单和工具条等。3. VBA的特点...

...只要字幕删除第一行,第二行,第四行。vba怎么批处理?
这个用VBA干嘛?函数+操作就行了。假设图在AB两列,则 1、在C1输入 =if(iserror(--A1),row(),0)向下填充公式 2、复制C列,在C列选择粘贴:数值 3、全选ABC列,按C列排序

vba批处理excel文件的问题
如须要更多帮助,请发电邮到:SUMSUNGO@SINA.COM Function Texcel()Dim Wb As Workbook Dim Epath As String Dim i As Long For i = 1 To 20 Epath = "D:\\a\\" & i & ".xls"Set Wb = Workbooks.Open(Epath)'you edit code...Wb.Save Wb.Close Set wk = Nothing Next i End Fun...

批处理批量整理EXCEL表中的字符
批处理不能直接修改xls,但是可以调用excel运行宏。也就是用录制宏录制好后,用批处理调用运行处理多文件。楼上有会VBA的高手,可以用VBA来做。

...简单又高效!【附完整的VBA代码、操作视频】
调用子过程获取数据源路径:通过VBA,我们编写一个函数,遍历指定文件夹,获取所有学生档案的Excel文件路径。读取数据并合并到汇总表:对每个找到的文件,运行子过程读取数据,将数据存储在数组arr_汇总中,然后写入到预先准备好的汇总工作表sht_汇总。提升性能的关键点:禁用屏幕刷新: 在程序运行初期,禁用...

VBA,VBscript,批处理之间有什么区别
VBA是Visual Basic在应用软件中一般应用,面向Microsoft公司的Office软件;VBScript是VB脚本,实质是一种文本文件,需要脚本 运行环境来执行;批处理是指的计算机在执行操作或命令的时候,成批执行一系列指令……

word宏Word 宏功能介绍和使用
宏,本质上是一种批处理程序命令,它在Microsoft Office软件中通过VBA脚本实现用户的自定义功能,显著提升工作效率。比如,你可以编写一个宏,让它在每次打开Word文档的同时自动打开另一个特定文件,这在没有宏的情况下是需要手动操作的。宏操作类似于批处理,但功能更为强大。例如,当从网上复制网页内容到...

中沙群岛的岛礁及其海域17268117167: vba如何执行批处理文件 -
蛮伊百定: 用shell调用

中沙群岛的岛礁及其海域17268117167: 如何用ExcelVBA批量处理文件 -
蛮伊百定: 方法有很多,一下是一个例子:作者:层序缘 链接:https://www.zhihu.com/question/59403671/answer/221091633 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.sub BatchFiles Dim Filename as String,...

中沙群岛的岛礁及其海域17268117167: vba调用批处理,咋就不好用呢,单独执行都好用啊... -
蛮伊百定: shell 函数在 vba 里,其功能是执行一个可执行文件.从代码中看:使用 ActiveWorkbook.Path 获取 excel 当前工作簿的路径,再组合成目标执行程序的全路径,但在 windows 平台中,路径的分隔符是用 \ 而不是 "¥",因此,尝试修改代码,示例如下:f = Shell(ActiveWorkbook.Path & "\" & GetFileName, vbNormalFocus) f = Shell(ActiveWorkbook.Path & "\" & GetCurPath, vbNormalFocus)

中沙群岛的岛礁及其海域17268117167: word文档批处理 用vba
蛮伊百定: VBA代码如下: Sub AddStr() Dim myDialog As FileDialog, oFile As Variant, oDoc As Document Set myDialog = Application.FileDialog(msoFileDialogFilePicker) With myDialog .Filters.Clear .Filters.Add "所有 WORD 文件", "*.doc", 1 ....

中沙群岛的岛礁及其海域17268117167: 在VB中调用批处理文件 -
蛮伊百定: Shell "cmd /k e:\u.bat", vbNormalFocus如果实际路径中有空格,应该这么写: Shell "cmd /k " & Chr(34) & "e:\u d.bat" & Chr(34), vbNormalFocus使用时将e:\u.bat换成实际路径即可.

中沙群岛的岛礁及其海域17268117167: vb中怎么调用批处理文件 -
蛮伊百定: 简单~如下是调用D:\xxx.bat:Shell "cmd /c D:\xxx.bat"

中沙群岛的岛礁及其海域17268117167: VB调用批处理程序 -
蛮伊百定: 都可以 第一种: 假如那个bat文件为a.bat且跟VB程序同一文件夹,则调用方式为 shell app.path & "\a.bat"第二种: 两个程序给生成一个独立扩展名为.EXE文件可以有几种方法,比如VB的资源管理器,可以导入任何格式的文件进入一个exe程序,需要时释放,不过这里不需要那么复杂,这里可以使用写文件的方法,在VB程序运行时写一个bat文件(最普通的写文件方法,但是后缀名改为bat即可),然后再用上面的方法调用

中沙群岛的岛礁及其海域17268117167: 如何在VB中调用批处理命令行的问题 -
蛮伊百定: 在批处理中,多个命令写在一行或括号内,如果引用变量,需要启用延迟变量扩充,用叹号引用变量,set 命令没有使用运算符可以不加 /a ,Shell函数无返回值可以不加括号 Shell ("cmd /von /k set /a p=3&set /a e=1&ghost32 -clone,mode=pload,src=E:\syspmp.prh:1,dst=!e!:!p! -fx -sure ")

中沙群岛的岛礁及其海域17268117167: VB中调用BAT批处理文件的语句?
蛮伊百定: 新建个“标准 EXE”,在右边那儿,在 Form1(Form1)上点鼠标右键,弹出菜单再点“移除 Form1(R) 然后,在“工程(P)”菜单下方,再点“新建模块”. 新建一个空白的标准模块. 然后把下面这段代码粘贴上. Sub Main() Path = Shell(App.Path & "\1.bat", vbHid) End Sub 把BAT和本程序放在一起运行就行了.

中沙群岛的岛礁及其海域17268117167: 怎样让VB创建BAT批处理文件 -
蛮伊百定: VB可通过Open 语句,用Print # 语句将格式化显示的批处理行命令数据写入顺序文件中.Open 语句,能够对文件输入/输出 (I/O).Print # 语句,将格式化显示的数据写入顺序文件中.Output关键字,如果 pathname 指定的文件不存在,那么...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网