Excel vba编程实现ftp下载并打开自动运行

0x00 背景

最近因为疫情的原因憋在家实在无聊,搞了一下excel的宏编程

excel使用vba语言实现宏,虽然没学过 但是大致的代码可以看懂 就搞了一个打开excel自动运行宏 在ftp服务器上下载文件到本地的小脚本

0x01 配置

首先需要打开excel的宏,在excel的  开始-》选项-》信任中心 -》宏设置 -》启用所有宏 如下图

配置好宏以后,就可以开始宏编程了。 

在开发工具选项中 选择Visual Basic进入宏编程界面

进入编程界面后双击左侧的 Thisbook,进入到当前工作表的编程模块

最后设置宏的自动启动,在该excel打开时,自动运行宏。 在右侧的选项卡中 选择open

至此,excel的设置完成。

0x02 vba实现ftp下载 

在网上搜了好久才找到。一开始打算采用访问dos的方式,然后逐步传递命令。但发现excel不是单纯的将字符串传递到dos中运行,而是直接调用dos运行,这就导致无法传递单个字符到dos中。如果运行aaa命令会直接返回“无效命令”。

但还是记录下调用命令行的方法,万一以后有用呢=。=

Sub main()
   Shell "cmd /k ping 127.0.0.1", 1
End Sub

代码很简单,直接调用内置的接口函数即可。 前面表示字符串命令 后面1代表运行dos的黑窗口 0代表不运行(这个好!)

但是 这种方式不支持在dos中可以用 命令1 && 命令2 的方式  不知道为什么。

下面是我找到的方法。

Sub main()
    Dim env_addr, env_user, env_passwd, localftp, ftpfile, cfgfile As String
    env_addr = "192.168.230.129"
    env_user = "用户名"
    env_passwd = "密码"
    localftp = "D:\"
    ftpfile = "/123.txt"
    cfgfile = "D:\1123.txt"
    If Dir(ftpfile) <> Empty Then
        MsgBox "文件已成功下载"
        Exit Sub
    End If
    Open cfgfile For Output As #1
    Print #1, "open " & env_addr
    Print #1, env_user
    Print #1, env_passwd
    Print #1, "lcd " & localftp
    Print #1, "bin"
    Print #1, "prompt"
    Print #1, "get " & ftpfile
    Print #1, "bye"
    Close #1
    Shell "ftp -s:" & cfgfile, 1
End Sub

其中前三个参数不用多说

localftp 是本地的存储目录

ftpfile 是要获取的ftp服务器上的路径及文件名

cfgfile 为当前的配置文件 即要进行的一系列命令集

下面的open既是创建命令集的过程

最后通过Shell的形式运行命令。

 

  • 1
    点赞
  • 0
    评论
  • 4
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值