VBA Excel:通过 WinINet FTP GetFile

2023-12-23

我正在尝试使用 VBA Excel 进行 FTP 下载操作(在 Excel 2013 x64、Windows 7 SP1 x64 上)。我找到了一些映射到 WinInet API 的代码,我可以成功upload文件使用PutFile功能,但我希望得到一个GetFile功能也能正常工作。

为了开始工作到目前为止,我使用了以下内容:第二个答案在这里 https://stackoverflow.com/questions/3026308/how-can-i-upload-data-using-ftp-http-or-a-socket-from-a-spreadsheet-with-vba-f, 和这个。我主要使用 SO 的第二个答案来让 PutFile 正常工作。我必须对原始代码进行一些更改,使其兼容 32 位和 64 位系统。

你可以看到我的进步here https://dpaste.de/4Axe.

我想做的是创建一个易于使用的 Sub 来调用此声明:

Private Declare Function FtpGetFile Lib "WinInet" Alias "FtpGetFileA" (ByVal hFtp As Long, ByVal lpszRemoteFile As String, ByVal lpszNewFile As String, ByVal fFailIfExists As Long, ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long

IE。像这样的子:

Public Sub GetFile(RemoteFilename As String, LocalFilename As String)
    If FtpGetFile(' what arguments do I put here ') = 0 Then
        Err.Raise vbObjectError + 1, , LastError
    End If
End Sub

我很挣扎,因为我对 WinInet API 不太熟悉,并且很难解析所需的参数以及为这些参数传递的适当变量是什么。


根据提供的示例,这应该可以帮助您走上正确的道路。

在你的班级模块中:

Public Sub GetFile(RemoteFilename As String, NewFilename As String)
    If FtpGetFile(m_hFtp, RemoteFilename, NewFilename, False, 0, FTP_TRANSFER_TYPE_BINARY, 0) = 0 Then
        Err.Raise vbObjectError + 1, , LastError
    End If
End Sub

如何调用它:

Sub DownloadFile()
    Dim ftp As New CFtp
    ftp.Connect "serverAddress", "username", "password"
    ftp.GetFile "nameOfFileOnServer.txt", "C:\SomePath\nameOfNewFile.txt"
    ftp.Disconnect
End Sub

这些参数指定一些与下载的文件关联的属性。例如,fFailIfExists is a Boolean描述如果尝试覆盖已存在的本地文件是否抛出异常。其他标志指定附加到它创建的文件的属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VBA Excel:通过 WinINet FTP GetFile 的相关文章

  • 用户窗体上的类对象 TextBox 可用方法

    我注意到 当我为文本框创建类模块并在表单上使用它时 通过在表单 init 事件中通过 VBA 添加 Enter 或 Exit 方法都不可用 当然 如果我只是在表单中添加一个文本框 我可以让 DblClick 方法正常工作 因此我的类设置正确
  • VBA 激活 Internet Explorer 窗口

    我正在制作一个宏 用于打开 Internet Explorer 导航并登录网站 一切正常 但我需要将 IE 窗口放在前面并激活它 这样我就可以使用SendKeys在上面 我发现网站和视频在名为的命令上有不同的方法AppActivate我已经
  • 将最后几个功能添加到我的调度模板生成器中

    感谢 StackOverflow 上的一些出色的人 我几乎完成了调度模板生成器的代码 我还想补充三件事 但我遇到了一些麻烦 当前细分 我有两张表 2 员工列表 和 X 模板 员工列表中的值是从单元格 D9 开始的一列员工姓名 然后将员工值转
  • excel 2010刷新BackgroundQuery中运行时错误1004

    我正在尝试用 vba 编写一个脚本 用于将多个文本文件导入 Excel 一张纸 然后将它们绘制在一张图表上 我面临一个问题刷新后台查询命令并出现 1004 运行时错误 我怎样才能解决它 谢谢 埃亚勒 这是我的代码 Sub fring1 Di
  • Excel 工作簿 - 从 C# 读取速度非常慢?

    正在尝试读取 Excel 工作簿 发现读取 3560 行 7 列的工作表需要很长时间 大约需要 1 分 17 秒 我所做的就是循环遍历整个工作表并将值存储在列表中 这是正常现象 还是我做错了什么 static void Main strin
  • VBA Shell 并等待退出代码

    我正在打包一个办公应用程序 VBA 它调用 C 控制台应用程序来执行应用程序 大型模拟程序 的一些繁重工作 我希望能够让 VBA 应用程序等待控制台应用程序完成并从控制台应用程序检索退出代码 我已经能够做到前者 但尚未能够从应用程序中检索退
  • 如何让VLOOKUP在VBA中选择到最低行?

    希望自动在单元格中插入 VLOOKUP 公式 录制宏时 我指示它使用相同的公式填充下面的列 效果很好 但是 当 VLOOKUP 搜索的表发生变化 更多或更少的行 时 就会出现问题 在记录时 VLOOKUP 下降到表中的最后一行 273 但是
  • VBA 中的多线程

    这里有人知道如何让VBA运行多线程吗 我正在使用 Excel 无法用 VBA 本地完成 VBA 构建在单线程单元中 获得多个线程的唯一方法是使用 VBA 之外的其他具有 COM 接口的东西构建 DLL 并从 VBA 调用它 信息 OLE 线
  • 如何在 Linux 上通过 FTP 递归下载文件夹 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案
  • 导出到excel时如何显示前导零?

    我正在通过更改内容类型来创建 Excel 报告 Response ContentType application vnd ms excel 我有包含前导零的值 问题是导出到 Excel 时缺少前导零 e g 000123 gt 123 我知
  • Excel FILTER() 对于空白单元格返回 0

    我怀疑以前有人问过这个问题 但我找不到 FILTER 即使指定了返回字符串 通常也会为空白行返回 0 Using filter 我经常收到空单元格的 0 返回值 假设 A 列中有 6 行数据 abc xyz abc xyz abc If I
  • VBA 有没有办法了解未使用的变量?

    标准 VBA 编辑器中是否有工具 方法或设置来警告已被修改的变量Dim med 但没有被使用 MZ Tools http www mztools com index aspx将搜索您的代码并告诉您哪些内容未被使用 VBA的版本可以找到her
  • 将包含宏的工作簿复制到不带宏的工作簿

    我能够复制工作簿 复制到所需位置 其中在后台包含宏 该副本还包含相同的宏 我的问题是我不希望这个重复的工作簿包含宏 谁能告诉怎么做吗 先感谢您 将您的工作簿保存为无宏 即简单地保存为 Excel 工作簿 对于我的 Excel 2007 这是
  • VBA 中 AND 函数如何工作?

    如果这是一个愚蠢的问题 我很抱歉 但是 Excel VBA AND 函数是否检查其中的每个条件然后继续 或者在第一个 FALSE 条件处停止而不检查其他条件 我想知道出于优化目的 但到目前为止在网上没有找到任何相关信息 提前致谢 示例 如果
  • 如何在Power Query中对N列求和

    我的数据每月都会更新 因此我尝试创建一个强大的查询表 该表将显示我创建的枢转 N 列的总和 但我似乎不知道如何在强大的查询中执行此操作 我目前有这个代码 旋转后 创建要求和的列的列表 添加索引列以限制每行 添加一列 该列对该行的列进行求和
  • 两个日期之间的小时数在 Excel 中不起作用

    根据要求 我提供了一张简化的屏幕截图来说明该问题 如您所见 我减去了两个日期并将其格式化为 h mm ss 为什么这不能提供两个日期之间经过的总小时数 有一个更好的方法吗 下面有一个很好的答案 但我试图弄清楚为什么按照此屏幕截图中所示的方式
  • 标志状态的 VBA 替换

    根据文档 Outlook 中的 MailItem FlagStatus 属性是已弃用 https msdn microsoft com en us library microsoft office interop outlook maili
  • 使用输入作为显示日期的基础

    我需要一种方法来使用用户窗体上的输入来确定将在输出上显示的日期 这是我的代码 If StatusBox Value lt 23 59 And ShiftCode Value AP Then Cells emptyRow 8 Value Da
  • 我如何以更好的方式编码而不是像这样的VBA编码

    我正在 Excel 中创建一个仪表板 但是我想知道是否有比这更好的编码方式 我想对其进行模块化 而不是这样做以使其更加整洁 Private Sub Afford If af Value True Then af afr Value Shee
  • 检查未绑定控件是否具有值的正确方法

    简单场景 一个表单和一个文本框 未绑定 Text1 If lt gt Text1 Then MsgBox Not Empty End If 上面的代码有效 表达方式 lt gt Text1如果文本框包含字符 则计算结果为 True 无论文本

随机推荐

  • 如何将 ASP.NET MVC 视图呈现为字符串?

    我想输出两个不同的视图 一个作为字符串 将作为电子邮件发送 另一个是向用户显示的页面 这在 ASP NET MVC beta 中可能吗 我尝试过多个例子 1 ASP NET MVC Beta 中的 RenderPartial 为字符串 ht
  • OverflowError:MongoDB 只能处理最多 8 字节的整数?

    过去 12 个小时我一直在网上搜索 我完全迷失了 请帮助 我正在尝试从 API 端点提取数据并将其放入 MongoDB 中 数据如下 links self href https us api battle net data sc2 ladd
  • 好的 Javascript 组合框可以替代包含大量元素的组合框吗?

    我有一个页面 其中我的组合框有数百个元素 这使得很难选择我想要的一项 有没有一个好的 Javascript 替代品可以比
  • kafka flink timestamp 事件时间和水印

    我正在阅读 使用 Apache Flink 进行流处理 一书 其中指出 从版本 0 10 0 开始 Kafka 支持消息时间戳 当从 Kafka 0 10 或更高版本读取时 如果应用程序在事件时间模式下运行 消费者将自动提取消息时间戳作为事
  • 首次登录 WordPress 后重定向用户?

    此代码检查用户是否是首次登录 即注册后 如果是的话 我想将他重定向到自定义页面 否则 将他重定向到主页或管理页面 function mylogin redirect global user ID if user ID user info g
  • 电报机器人可以访问有关用户的哪些信息?

    我是电报机器人的新手 我想知道当我们将电报机器人添加到群组时 它可以访问有关群组成员的任何信息吗 我知道隐私模式 无论是打开还是关闭 机器人是否可以访问发送机器人可以读取的消息的用户的任何信息 机器人可以访问 用户的唯一标识符 用户id 用
  • 组织 PHP 项目

    这是什么 这是我到目前为止所做的 core 控制器 包含应用程序使用的控制器 models 包含应用程序使用的模型 views 包含应用程序使用的视图 基本控制器 php 控制器每隔一段延伸 基本模型 php 模型每隔一段延伸 vendor
  • 为什么我会看到 JavaScript 变量以 $ 为前缀?

    这是一个元问题 我在 SO 上看到的许多 JavaScript 片段都以美元符号前缀命名 例如 id在所示片段的第二行this https stackoverflow com questions 2189537 javascript win
  • 重用图表,并多次使用它

    我正在考虑风格转移 一个重要的部分是重用现有模型 目前我像这样导入 vgg 图 net vgg16 get vgg model name layer conv2 2 conv2 2 0 feature transformed image t
  • 是否可以编辑 NLTK 的维德情感词典?

    我想添加的话vader lexicon txt指定单词的极性分数 这样做的正确方法是什么 我在中看到了这个文件AppData Roaming nltk data sentiment vader lexicon 该文件由单词 其极性 强度以及
  • 从 Cortana 语音命令结果中获取任何值

    是否可以从 Cortana 语音命令中读取任何值 例如 当我说 在我的图书馆中搜索 something 我想从我的应用中的 something 获取结果 我找到了如何与短语表 and 短语主题 但就我而言 可以是任何单词 而不是某些声明的项
  • 抽象工厂模式和属性

    我对设计模式有点陌生 这是我在 stackoverflow 上的第一篇文章 所以希望这个问题有意义 我创建了一个抽象工厂来处理为不同图表供应商 dundas flash 等 生成 xml 字符串 下面是我工厂的代码大纲 如果有帮助的话 我可
  • 如何确保我的默认 C/C++ 编译器是 GCC

    我正在尝试在 macOS 上从源代码安装 Riak https docs riak com riak kv 2 2 3 setup installing mac osx 1 html installing from source https
  • Malloc和Realloc的关系,当内存中没有所需空间时如何处理[重复]

    这个问题在这里已经有答案了 可能的重复 realloc 和 malloc 函数 https stackoverflow com questions 12119724 realloc and malloc functions include
  • python 中每次使用时在函数外部递增值

    我有一个想要多次使用的函数 每次使用时我都希望函数外部的变量递增 沿着 def funtion1 mylists x row 1 for elm in mylists ws write row x elm row 1 x 1 col 0 f
  • 如何从 GCS 获取文件元数据

    我想获取存储在 Google Cloud Storage 中的文件的文件元数据 实际上 我们需要文件的媒体链接 以便可以下载文件或将 url 添加到下载页面 Blob blob storage get gcp public data nex
  • 如何编写非贪婪匹配的正则表达式? [复制]

    这个问题在这里已经有答案了 我需要有关正则表达式与非贪婪选项匹配的帮助 匹配模式为
  • 用 css 修复渐变背景

    我希望我的页面有一个从上到下流动的渐变背景 我希望背景像固定图像一样 渐变从当前浏览器视口的顶部延伸到底部 并且当您上下滚动页面时看起来相同 换句话说 当您滚动时它不会重复 它保持固定在原位 所以我想要的是这样的 and after scr
  • 具有 IPv6 IP 地址的 RewriteRule 不起作用

    我在代理 IPv6 地址内的请求时遇到问题 在 htaccess apache2 conf 上 我有它 RewriteRule http 18 4 15 8 80 path 1 P L 它工作正常 因为它是 IPv4 地址 但是 它不起作用
  • VBA Excel:通过 WinINet FTP GetFile

    我正在尝试使用 VBA Excel 进行 FTP 下载操作 在 Excel 2013 x64 Windows 7 SP1 x64 上 我找到了一些映射到 WinInet API 的代码 我可以成功upload文件使用PutFile功能 但我