在 VBA 中使用 FTP

2023-12-09

我编写了 VBA 代码,该代码根据 Excel 数据(Websphere MQ Define Job)为 IBM 主机创建一个包含作业代码的 .txt 文件。

如果能够通过 FTP 自动将此文件传输到主机,那就太酷了。此时我通过以下方式手动执行此操作:

(注释:LPAR = 主机名)

ftp <LPAR>
'user'
'password'
put 'dateiname'

它工作得很好。但我不知道如何将其转移到VBA代码中。我在这里发现了类似的问题,并发布了该解决方案:

Public Sub FtpSend()

    Dim vPath As String
    Dim vFile As String
    Dim vFTPServ As String
    Dim fNum As Long

    vPath = ThisWorkbook.path
    vFile = "path"
    vFTPServ = "<LPAR>"

    'Mounting file command for ftp.exe
    fNum = FreeFile()
    Open vPath & "\FtpComm.txt" For Output As #fNum
    Print #1, "user *******" ' your login and password"
    'Print #1, "cd TargetDir" 'change to dir on server
    Print #1, "bin" ' bin or ascii file type to send
    Print #1, "put " & vPath & "\" & vFile & " " & vFile ' upload local filename to     server     file
    Print #1, "close" ' close connection
    Print #1, "quit" ' Quit ftp program Close

    Shell "ftp -n -i -g -s:" & vPath & "\FtpComm.txt " & vFTPServ, vbNormalNoFocus

    SetAttr vPath & "\FtpComm.txt", vbNormal
    Kill vPath & "\FtpComm.txt"

End Sub

我不确定我是否完全理解代码。我想我创建一个虚拟文件 FtpComm.txt,其中包含用户数据和内容,并使用该文件打开连接并发送数据。

它以某种方式起作用,直到这一点

*SetAttr vPath & "\FtpComm.txt", vbNormal*

我得到了错误

运行时错误:55 - 文件已打开。

此时已设置与 LPAR 的连接。但是“SetAttr...”有什么作用呢?这是输入完成的地方吗?我应该怎么办?


两件事情。

首先,您要在文件号下打开一个文件#fNum从...获取fNum = FreeFile(),然后假设这将返回 1,如Print #1 etc.:

Open vPath & "\FtpComm.txt" For Output As #fNum
Print #1, "user *******" ' your login and password"

改变你的一切Print #1 to Print #fNum.

其次,打开文件进行 I/O,但永远不要关闭它。因此,当然,当您尝试修改其属性或删除它时,系统会抱怨它已经打开并正在使用。解决方案是关闭文件——在完成对文件的写入/读取后,您应该立即关闭该文件。

Close #fNum ' add this line
' Can now manipulate the file without risking conflict

Shell "ftp -n -i -g -s:" & vPath & "\FtpComm.txt " & vFTPServ, vbNormalNoFocus

SetAttr vPath & "\FtpComm.txt", vbNormal
Kill vPath & "\FtpComm.txt"

至于你的代码在高层做什么:如果你输入ftp -help在命令行中,您将看到那些-n -i -g -s标志的意思。所以是的,您正在将 FTP 命令写入文件FtpComm.txt,然后将该文件提供给ftp通过-s flag.

-s:filename    Specifies a text file containing FTP commands; the
               commands will automatically run after FTP starts.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 VBA 中使用 FTP 的相关文章

  • 获取给定日期的周数

    例子 DD MM YYYY 1 1 2009 should give 1 31 1 2009 should give 5 1 2 2009 should also give 5 Format 1 2 2009 ww 回报6 那么 怎样才能得
  • 如何从另一个 Excel 实例引用工作簿

    我相信我的问题相当简单 我有一个工作簿 我正在使用它从另一个软件 SAP 获取一些数据 当我从软件导出数据时 它会自动打开一个 xlsx 文件 然后我需要做的是从该文件复制一些数据 粘贴到我的原始工作簿上 然后关闭该文件 我的代码中给我带来
  • 二维数组作为字典的项目

    我想用一个项目的几个属性填充字典 例子 我正在考虑拥有Item 1 and Item 2 as Dictionary键与array这将保留其属性 我需要能够单独访问项目的每个属性 因此将它们连接为一个字符串不是一种选择 我正在考虑类似下面的
  • 为什么 SFTP 的默认端口号是 22? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 为什么 SFTP 的默认端口号是 22 这有什么具体原因吗 这是默认的SSH http en wikipedia org wiki Sec
  • 根据其他列中的条件对列中的唯一值求和

    A B 1 Total 1 900 2 Product A 700 3 Product A 700 4 Product B 300
  • VBA全局类变量

    我的障碍是试图让多个子程序识别类变量 当我尝试全局声明它们时 出现编译错误 无效的外部过程 然后 当我运行公共函数或子函数来声明变量时 它们在其他子函数中保持未定义状态 我希望多个子程序能够识别变量 因为它们的值应该通过用户窗体进行更改 然
  • 强制刷新工作表的“最后一个”单元格

    Pressing Ctrl End in Excel takes you to the bottom right most cell of the worksheet 如果删除最后的行或列并保存工作簿 最后一个单元格以及滚动条都会更新 我记
  • 当存储在集合中时,如何更改类属性的值

    我想将一个类存储在集合中 并且能够更改该类的属性 而不必删除集合项并再次将其添加回来 我的研究表明 如果不进行删除 替换操作 则无法更改项目本身 但是项目的属性又如何呢 下面的代码展示了如何执行此操作 当您运行宏时 调试窗口将显示存储对象的
  • 从VBA中的数组批量插入到sql中

    我正在尝试在 Excel 中构建一个按钮 将所选区域上传到 SQL Server 中的表中 第一行将自动视为列标题 这件事该怎么继续下去呢 我想要的是简单和超快的上传 这是我的想法 我将选择选定的区域 然后将其保存为 txt 文件 然后对其
  • 使用ftp协议连接密码包含“@”符号的服务器

    我正在尝试使用java中的FTP协议从服务器下载文件 通过使用以下 URL 我可以连接到服务器并下载文件 URL url new URL ftp user password host remoteFile type i 但是当我的密码包含
  • 消除多个 Elseif 语句

    我试图保持我的代码干净 特别是在用户表单中使用组合框 可能会有很多 if Elseif 语句 应该有一种更简单的方法 让一个组合框不再需要多页代码 是吗 现在如何完成的示例 Sub Example Dim Variable as Strin
  • 使用 C# 在 Excel 中查找和替换文本

    我想使用 C 在 Excel 中查找并替换一组文本 而且我希望此替换仅发生在第一行中的文本 我已经使用Google并找到了一些付费资源 例如Aspose API Spire Xls等 但我正在寻找开源资源或任何其他有效的方法来实现这一目标
  • 向用户显示多条验证消息

    在 MS Access 中 如何将从 SELECT 语句检索到的行存储在数组中 并在一个消息框中显示多行 Dim rSEL rSUM rDes As DAO Recordset Dim vItem id vQnty vSum As Inte
  • Excel ISNUMBER 函数与 IF 语句

    我有一个正在使用的 Excel 文件 有一个列包含数字和文本 有时只是其中之一 我正在尝试编写一个函数来扫描单元格的最左侧部分以查看它是否以数字开头 我以为我拥有它 但显然没有 这就是我所拥有的 IF ISNUMBER LEFT E8 1
  • 使用 FileSystemObject 读取和写入 csv 文件

    是否可以使用 VBA 中的 FileSystemObject 读取和写入 csv 文件 必然是 基本语法如 Set objFSO CreateObject scripting filesystemobject create a csv fi
  • 查找最后一列并按最后一列排序

    我需要 Excel 来检测我拥有的最后一列并对该列进行排序 我有一个宏 每次使用它时都会生成一个新列 因此我无法使用常量 Sub sortyness Dim sortdata A1 Cells LastRow LastColumn As R
  • 用于导出到 CSV/Excel 的数据 URI(无服务器端请求):浏览器支持/限制?

    以下问题 Javascript 或 Flash 导出至 CSV Excel https stackoverflow com questions 8150516 javascript or flash export to csv excel
  • 以独立于区域设置的方式读取 Excel 文件

    我使用以下代码从各种 Excel 文件读取数据 IMEX 1 to force strings on mixed data HDR NO to process all the available data Locale 1033 is en
  • 自动计算Excel VBA UDF与单元格属性相关

    我编写了一个 UDF 来计算特定颜色和特定线条样式的单元格 我发布了整个函数 Function CountTime rData As Range cellRefColor As Range As Variant Dim indRefColo
  • 以编程方式将参数传递到访问报告中

    我有一个现有的 Access MDB 我正在向运行现有报表的现有表单添加一个命令按钮 所做的更改是 此按钮需要传入一个包含正在报告的记录 ID 的参数 当前报告在 MDB 中的每条记录上运行 我已经更改了报告运行的查询 以使用 ID 值参数

随机推荐

  • WPF:仅使用通过“AddFontMemResourceEx”安装的字体进行处理

    在WPF中我们想使用ttf字体作为嵌入式资源 无需将它们复制或安装到系统中 也无需实际将它们写入磁盘 没有内存泄漏问题 没有详细说明的解决方案 如何在 WPF 应用程序中包含外部字体而不安装它 由于 WPF 内存泄漏 在这种情况下可用 使用
  • 如何用单词“and”替换最后一次出现的 , ?

    如何用单词 and 替换最后一次出现的 你能给我一个主意吗 我有 3 个复选框 1 个富文本框 显示输出 1 个按钮 阿帕里 或 卡马拉努伊根 或 拉洛 卡加延 阿帕里 卡马拉努伊甘 或卡加延 阿帕里 卡马拉努伊甘 拉洛 我希望输出如下 C
  • Python正则表达式匹配列表中的多个单词

    我有一个单词列表和一个字符串 并且想从原始列表中取回在字符串中找到的单词列表 Ex import re lof terms car car manufacturer popular str content This is a very po
  • 使用GPS(LocationManager)如何获取当前时间?

    我正在开发一款 GPS 应用程序 它将每隔一小时向服务器发送一次位置数据 在此我使用以下代码 location getLatitude location getLongitude location getTime 使用此代码 我可以正确获取
  • 多线程状态相关问题

    我得到了以下代码片段 public class ThreadTest private static class Thread01 extends Thread private Thread02 th2 public int foo 0 pu
  • 可以带参数运行吗?

    我需要一个 接受参数的可运行程序 尽管我知道这样的可运行程序并不真正存在 这可能表明我的应用程序设计存在根本缺陷和 或我疲惫的大脑中的精神障碍 所以我希望在这里找到一些关于如何完成类似以下事情的建议 without违反基本的面向对象原则 p
  • 如何将位图旋转 90 度

    android中有一个声明canvas drawBitmap visiblePage 0 0 paint 当我添加canvas rotate 90 没有效果 但如果我写 canvas rotate 90 canvas drawBitmap
  • 如何使用 java spring 进行encodeURI/decodeURI?

    我有一个用 java spring 制作的简单 api 它接收文本并将其保存在数据库中 以及一个 javascript 中的应用程序 用于格式化文本并将其发送到 api 我有多种语言的文本 中文 日文 并且我遇到了特殊字符的问题 所以我在
  • 如何使用win32com在python中打开写入保留的excel文件?

    我正在尝试使用 python 中的 win32com 打开写保护的 ms excel 2007 文件 我知道密码 我可以通过用户在 Excel 对话框中输入密码来打开它 我希望能够在没有任何用户交互的情况下打开该文件 我已经尝试了以下方法
  • 加密 as3 flash .swf

    我正在尝试保护我的 as3 swf flash 文件代码免遭反编译 但我不能在商业编译器上花费 如何免费加密我的 swf 我残酷诚实的回答 甚至不要尝试 如果某人有能力使用您的应用程序中的资源或代码 那么他们将具备反编译您的 SWF 并获得
  • 在 Windows 10 中使用 JDK 16 在 Netbeans 12.4 中安装 C/C++ 插件时出错

    我想在 Windows 10 中使用 JDK 16 在 Netbeans 12 4 中安装 C C 插件 我在安装 C C 插件期间遇到错误 窗户 10网豆 12 4JDK 16 0 1 我附上照片 您遇到此问题是因为 NetBeans 正
  • wpf 进度条在上次 ProgressChanged 时未更新

    我制作了一些 UI 其中有 ProgressBar 使用MVVM模式 XAML
  • 更改 C++ 中 const 变量的值[重复]

    这个问题在这里已经有答案了 我正在尝试更改定义为 int const 的变量的值 如下所示 const int w 10 int wp const cast
  • 如何在C#中将XML转换为Html?

    这是将xml转换为html的最佳方法 目前我正在使用Xpathnavigator和xpathnodeiterator来查询和遍历xml 这工作正常 但我需要将此 xml 转换为 html 并在浏览器中显示它和一些表格 这是实现此目的的最佳方
  • DocuSign REST api 取消分组选项卡

    我需要取消在 草稿 状态下创建的信封中的选项卡的分组 这样 如果我在一页上移动一个 SignHere 选项卡位置 所有其他 SignHere 都不会移动 我执行了 GET 请求来获取选项卡 然后执行 PUT 请求来更新选项卡 通信成功 但选
  • 单击鼠标获取matplotlib绘图python的坐标

    我一直在尝试根据 matplotlib 绘图比例而不是像素获取鼠标 x y 坐标到变量 但它只返回整数分量 例如 0 0 或 1 0 我想返回准确的数字 例如 0 1245 这是我的代码 import matplotlib import T
  • 类似 Instagram 的导航栏 (iOS 7)

    我试图产生同样的效果 就像 Instagram 的标题中那样 我怎样才能做到这一点 我尝试了很多解决方案 Best https github com andreamazz AMScrollingNavbar 但它有一个大问题 它使用 uip
  • Python 中的 MemoryError 钩子?

    有没有一种方法可以全局捕获 MemoryError 异常 以便库可以清除缓存而不是让用户代码看到 MemoryError 我正在用 Python 开发一个内存缓存库 它存储非常大的对象 以至于用户通常希望使用所有可用的 RAM 来简化脚本和
  • 子类化 SimpleCursorAdapter 以包含 ConvertView 以节省内存

    我一直在搜索示例和教程 但我似乎无法理解如何在子类 SimpleCursorAdapter 中处理回收 我知道 对于常规 ArrayAdapter 您可以检查 ConvertView 是否为 null 如果为 null 则从 xml 中膨胀
  • 在 VBA 中使用 FTP

    我编写了 VBA 代码 该代码根据 Excel 数据 Websphere MQ Define Job 为 IBM 主机创建一个包含作业代码的 txt 文件 如果能够通过 FTP 自动将此文件传输到主机 那就太酷了 此时我通过以下方式手动执行