ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] Wininet 在Excel64位获取FTP目录时出现乱码

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-8-25 21:06 | 显示全部楼层
nblhj 发表于 2022-8-25 20:30
从显示信息看,文件名均少了前面4个字节。
原因是win32_find_data数据定义与64位系统编译时字节对齐规则不 ...

感谢指导  此问题的解决办法见下面代码
能帮忙看看   删除文件夹 的问题么

  1.         Rem 第一个文件或文件夹的名称
  2.         #If VBA7 And Win64 Then
  3.             StrTemp = Mid(pData.cFileName, 5, InStr(5, pData.cFileName, String(1, 0), vbBinaryCompare) - 5)
  4.         #Else
  5.             StrTemp = Left(pData.cFileName, InStr(1, pData.cFileName, Chr(0), vbBinaryCompare) - 1)
  6.         #End If
复制代码

TA的精华主题

TA的得分主题

发表于 2024-6-21 20:33 | 显示全部楼层
首先非常感谢你提供的例子。
不知道你删除文件夹的问题解决了没有。刚刚我试了下,应该是路径出问题了。
就是相对路径与绝对路径的问题。
用SetFTPDirectory设置的相对路径,此路径中如果存在文件夹(里面无文件、无子文件夹)就可删除。
用绝对路径就不要用SetFTPDirectory,不然会找不到路径。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-6-21 20:33 | 显示全部楼层
Sub FTP_删除文件夹()
   
    Dim PathPC  As String
    Dim PathFTP As String
   
    PathFTP = "A/123/" & Format(Date, "yyyyMMdd")      '这里放你想从FTP下载的文件名
   
    PathFTP = "A/123/3/"
   
    Set C_FTP = New ClassFTP
    C_FTP.SetModePassive
   
    Call A_GONGGONG
    BL = C_FTP.OpenConnection(Pub_Server, Pub_User, Pub_PWD)
    If BL = True Then
'       BLA = C_FTP.SetFTPDirectory(PathFTP)
        BLA = C_FTP.SetFTPDirectory("A/123/")
    End If
    If BLA = True Then
        BL = C_FTP.RemoveFTPDirectory("3/")
    End If
   
   
   
    '     BL = C_FTP.RemoveFTPDirectory(PathFtp)
    C_FTP.CloseConnection
   
    Rem 如果出错
    If BL = False Then
        MsgBox C_FTP.GetLastErrorMessage
        MsgBox "删除失败"
    Else
        If BLA = False Then
            MsgBox "不存在"
        Else
            MsgBox "删除成功"
        End If
    End If
   
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-21 21:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 opiona 于 2024-6-21 21:02 编辑

测试未成功  在类模块中调用的下图函数
显然 他没弄明白 路径
1.png

2.png

TA的精华主题

TA的得分主题

发表于 2024-6-22 08:34 | 显示全部楼层
Public Function RemoveFTPDirectory(ByVal StrServer As String, ByVal StrUser As String, ByVal StrPWD As String, ByVal strPathFTP As String, Optional ByVal BoolErr As Boolean = False) As Boolean
    Rem 删除FTP文件夹  不存在的也认为是被删除了
    Rem StrServer   FTP服务器地址
    Rem StrUser      登录用户名
    Rem StrPWD     用户密码
    Rem StrPathFTP  Ftp文件夹名  "A/123/"
    Rem BoolErr     是否显示出错信息, 默认=false 不显示
    Rem 代码整理:   北极狐工作室QQ: 14885553
   
    Dim BL As Boolean, BLA As Boolean
    Dim C_FTP As New ClassFTP
   
    Dim strPathFTPParent As String
   
    Set C_FTP = New ClassFTP    '//创建一个类
    C_FTP.SetModePassive
    Rem 登录FTP服务器
    BL = C_FTP.OpenConnection(StrServer:=StrServer, StrUser:=StrUser, StrPWD:=StrPWD)
    If BL = True Then
        Rem 登陆后开始判断
        
'        strPathFTPParent = Left(strPathFTP, InStrRev(strPathFTP, "/") - 1)           '如果最有边有"/",去除最右边的"/"符
'        strPathFTPParent = Left(strPathFTPParent, InStrRev(strPathFTPParent, "/"))   '获得上级路径
        
        strPathFTPParent = Left(strPathFTP, InStrRev(strPathFTP, "/"))                '如果最右边无"/"符
        
        If strPathFTPParent <> "" Then                                          '如果当前不是根目录
            BLA = C_FTP.SetFTPDirectory(strPathFTPParent)
        
        Else
            BLA = True
        End If
        
        If BL = True Then
            Rem 登陆后开始删除
            
            strPathFTP = Replace(strPathFTP, strPathFTPParent, "")                         '当前路径中的文件夹
            
            
            BL = C_FTP.RemoveFTPDirectory(strPathFTP:=strPathFTP)
        Else
            BL = True '//不存在认为是删除了
        End If
    End If
    C_FTP.CloseConnection  '//关闭链接
   
    If Len("" & C_FTP.GetLastErrorMessage) > 0 Then  '//如果出错
        Rem  是否显示错误信息
        If BoolErr = True Then
            MsgBox "RemoveFTPDirectory出错" & vbCrLf & C_FTP.GetLastErrorMessage, vbInformation, "北极狐工作室QQ: 14885553"
        End If
    End If
   
    RemoveFTPDirectory = BL
End Function

TA的精华主题

TA的得分主题

发表于 2024-6-22 08:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我这试了可以删除文件夹

TA的精华主题

TA的得分主题

发表于 2024-6-22 08:50 | 显示全部楼层
漏了句:On Error Resume Next ,防止根目录,路径中没有“/” 时InStrRev(strPathFTP, "/")会报错。

PathFTP = "A/123/3/中国"    ,strPathFTPParent = Left(strPathFTP, InStrRev(strPathFTP, "/"))
strPathFTPParent  = "A/123/3/"

strPathFTP = Replace(strPathFTP, strPathFTPParent, "")
PathFTP = "中国"

TA的精华主题

TA的得分主题

发表于 2024-6-22 08:53 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-22 10:32 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-7-13 18:29 | 显示全部楼层
老朋友,能分享給我用用吗
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-27 09:24 , Processed in 0.042388 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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