【问题标题】:vba download and save in C:\user [closed]vba 下载并保存在 C:\user [关闭]
【发布时间】:2012-11-03 11:20:56
【问题描述】:

我想要使用 VBA 的 excel 从 Internet 下载文件。该文件是一个包含员工列表信息的数据库。我希望文件保存在 C:\Users\"name of user"\FCMMIS\

这是我想要实现的分步过程:

  1. Excel 使用 VBA,从指定网址下载文件。
  2. *下载的文件保存在C:\Users\"用户名"\FCMMIS*
  3. Excel 通过 VBA 与下载的数据库链接,以获取可能需要的数据。

另外,有问题的 excel 文件将被不同的人使用笔记本电脑。我不确定是否可以将文件保存在“用户”文件夹中,或者是否需要授予权限才能允许保存。

我知道有更好的解决方案,例如编写完整的应用程序,但由于需求,我坚持使用 excel 和 VBA。

编辑(与第 3 部分一起完成):

3.1:下载数据库后,excel文件从员工表中获取记录,并将它们打印到同一个excel文件的新工作表中。

3.2:打印的数据随后用于工作表中的各种功能。

但是,我正在争论仅操作数据库本身中的数据还是让它从创建的工作表中工作是否更有效。

【问题讨论】:

  • a) 到目前为止您尝试过什么? b) 您认为我们可以在第 3 部分提供哪些帮助 - 没有范围?
  • 感谢 brettdj 的回复。我对第 3 部分要做什么有一个基本的想法: 3.1:下载数据库后,excel 文件会从员工表中获取记录,并将它们打印到同一个 excel 文件中的新工作表中。 3.2:打印的数据然后用于工作表中的各种功能。但是,我正在争论仅操作数据库本身中的数据还是让它从创建的工作表中工作是否更有效。

标签: excel vba download


【解决方案1】:

以下代码来源于an article by Matt Vidas

等待您对第 3 点的回答,没有范围?

Function Download_File(ByVal vWebFile As String, ByVal vLocalFile As String) As Boolean
    Dim oXMLHTTP As Object, i As Long, vFF As Long, oResp() As Byte

    'You can also set a ref. to Microsoft XML, and Dim oXMLHTTP as MSXML2.XMLHTTP
    Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
    oXMLHTTP.Open "GET", vWebFile, False 'Open socket to get the website
    oXMLHTTP.Send 'send request

    'Wait for request to finish
    Do While oXMLHTTP.readyState <> 4
    DoEvents
    Loop

    oResp = oXMLHTTP.responseBody 'Returns the results as a byte array

    'Create local file and save results to it
    vFF = FreeFile
    If Dir(vLocalFile) <> "" Then Kill vLocalFile
    Open vLocalFile For Binary As #vFF
    Put #vFF, , oResp
    Close #vFF

    'Clear memory
    Set oXMLHTTP = Nothing
End Function



Sub Testing()
    Download_File "http://example.org/yourDataBaseFile", "C:\Users\" & Environ("username") & "\yourDataBaseFile"
End Sub

【讨论】:

  • 感谢 Larry 和 brettdj 关于第 3 部分的提醒。由于一些主管可能会在安装了 Office 97-2003 的 Windows XP 机器上运行 excel 文件。将使用他们的个人电脑,而不是公司提供的电脑。让我担心的是 MSXML2.XMLHTTP 对象。这是本机还是仅包含在 Office 2010 安装中?
  • @SanchoAlmeda 对我的底层来说,只要用户有 IE6 或更高版本,MSXML2.XMLHTTP 对象就会出现。对于第 3 点,假设您的表格大小不是那么大,那么也许您可以将某些表格导出为 csv 文件或 excel 文件。然后您可以轻松下载并将它们加载到 Excel 电子表格中
【解决方案2】:

如果有问题的文件是 工作簿,您可以这样做:

With Workbooks.Open("http://example.org/yourfile.xls")
    .SaveAs "C:\Users\example\yourfile.xls"
    .Close
End With

【讨论】:

  • 嗨,我想你可以把第二行改成 .SaveAs "C:\Users\" & environ("username") & "\yourfile.xls"
  • 感谢 tyomitch 的建议和 Larry 对保存路径的跟进。这可能是我将考虑的替代方案,因为它可以完成相同的输出。但由于我需要的信息可能太多,而且这些信息是由另一个系统存储到数据库中的,所以我相信目前获取数据库文件会是一个不错的选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-07
  • 2020-06-21
  • 2016-03-18
  • 2013-08-25
  • 1970-01-01
相关资源
最近更新 更多