ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3294|回复: 13

[分享] 近期在VBA中使用FTP心得分享

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-11-25 10:07 | 显示全部楼层 |阅读模式
最近用VBA做一个销售系统,因为客户端都是远程的,图片文件传输只能用FTP,在论坛也浏览了不少帖子,实践过程中踩了不少坑,分享出来希望对大家有帮助。

VBA里的FTP三种方法,basp21,winInet和shell
shell不足太多,我根本没用,主要说说另两种方式

1、basp21
     最初用的basp21,测试都ok,但是到客户端运行的时候各种报错
     坑一:不支持64位excel,这个无解,因为只有32位的,所以当时只能建议客户端都用wps
     坑二:无法被动模式,所以受客户端防火墙影响,要不全关,要不就得给wps的et加通过
图片1.png
     总之各种问题层出不穷,受不了了就换winInet

2、winInet
     不用安装插件就方便了不少
     不过调用winInet依旧是32位的,后来在网上查到,Private Declare PtrSafe Function这么写可以兼容32和64,解决版本问题
     防火墙问题同上,lFlags参数据说是设置被动非被动,不过前辈的帖子里只有0是非被动,自己试了半天无果,最后在网上找了很久终于找到值
     &H8000000是被动模式,解决防火墙问题,yeah

总结,还是winInet更好一些,basp21我没能找到设置被动模式的方法,32和64位问题更是无解

补充:都改好后一直稳定无问题,新增的用户点也都正常,只有一个例外,PtrSafe 在一个用户的07里是不支持的,去掉才可以,考虑到如今还用07的几乎没有了,我也不打算在为了这一个半个的去改了



TA的精华主题

TA的得分主题

发表于 2020-11-25 10:27 | 显示全部楼层
ptrsafe是version>=2010以后才出现的。07版和03都一样是只有32位的。

TA的精华主题

TA的得分主题

发表于 2020-11-25 10:38 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-11-25 10:41 | 显示全部楼层
根据系统32位还是64位引用的方法官方有提供解决方案的,#if一下就好了
#If VBA7 Then
'64位api
#Else
'去PtrSafe的32位api#End If

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-25 10:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
MOY838840554 发表于 2020-11-25 10:41
根据系统32位还是64位引用的方法官方有提供解决方案的,#if一下就好了
#If VBA7 Then
'64位api

原来还可以这样,受教了

TA的精华主题

TA的得分主题

发表于 2020-11-25 12:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
期待楼主出写代码模拟一下

TA的精华主题

TA的得分主题

发表于 2020-11-25 12:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
其實要用vba最好裝32位office
office 64太多坑, 現在留下的api和控件全是32位的

TA的精华主题

TA的得分主题

发表于 2020-11-26 08:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
膜拜大佬


TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-27 14:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
chis3 发表于 2020-11-25 12:47
其實要用vba最好裝32位office
office 64太多坑, 現在留下的api和控件全是32位的

自己的肯定是32的,但是做成了销售系统部到各个客户端就控制不住了,用啥版本的都有

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-27 16:58 | 显示全部楼层
f8b1987 发表于 2020-11-25 12:04
期待楼主出写代码模拟一下

其实相关代码,论坛里有两位前辈的帖子都很详细了,我用的也是他们写好的,根据自己实际操作改一些而已,没啥特别创新的
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-21 21:48 , Processed in 0.047483 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表