2009-10-26 42 views
0

我想从读取网站中的文本文件(如www.site.com/example.txt)中读取,并相应地更新Excel表格中的选项卡。是否有可能使用Excel VBA?你能提供一些例子吗?EXCEL VBA - 从网站打开文本文件

你能否建议我需要通读以便我能达到目标。是否有一些onlien教程或材料可用。请帮助

下面的网站有一个如何在JAVA中的例子。有没有人有VBA的例子?

http://www.daniweb.com/forums/thread143010.html#

回答

0

是的,你可以使用e.g HTTP客户端库来获取从网页。

也有工具可用或此类任务 http://www.iopus.com/iMacros/excel.htm?ref=rg8excel1HB&gclid=CLWbrNef2p0CFUtp4wodBnx8sQ

如果你想自己做,你必须参考 “Microsoft Internet Transfer”Active X控件。

例如,你可能会 BUF = HTTPControl.OpenURL(page_you_like_to_fetch,icByteArray)抓取网页 你再可以只用通常的“嫌疑人”打开它就像打开 或者可以注册文件作为ODBC数据源,并获取它与 SQL类似的语句。

当然你也可以手工做。打开文件,在一个文件之后访问另一个文件并将其放入适当的Execl单元中。

0

我喜欢弗里德里希的建议,但是如果你想做到这一点你可以使用shell命令的另一种方式从内部VBA来启动这个进程:

Windows Implementation of the Linux WGet command

这是Linux的一个端口命令,该命令从命令行获取网站(URL)的内容到文件,然后可以打开已在本地创建的VBA代码中的文件并相应地处理它。

(还可有此命令的其它实现,我只是链接到的第一个,我在谷歌找到)

5

看看在Workbooks.OpenText method。 filename参数将接受一个http URL。该方法允许您在一个步骤中打开并解析它(假设它是一个分隔文件)。

Application.Workbooks.OpenText("http://somewebsite.com/test.txt", _ 
    StartRow:=3, _ 
    DataType:=Excel.XlTextParsingType.xlDelimited, _ 
    TextQualifier:=Excel.XlTextQualifier.xlTextQualifierNone, _ 
    Comma:=True) 
7

下面是如何下载文本文件的示例。

要求微软WinHTTPServices参考

Sub Test_DownloadTextFile() 
    Dim text As String 
    text = DownloadTextFile("http://stackoverflow.com/") 

    'At this point you can process you file how you wish. 
    Debug.Print text 
End Sub 

'Tool.References... Add a reference to Microsoft WinHTTPServices 
Public Function DownloadTextFile(url As String) As String 
    Dim oHTTP As WinHttp.WinHttpRequest 
    Set oHTTP = New WinHttp.WinHttpRequest 
    oHTTP.Open Method:="GET", url:=url, async:=False 
    oHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" 
    oHTTP.setRequestHeader "Content-Type", "multipart/form-data; " 
    oHTTP.Option(WinHttpRequestOption_EnableRedirects) = True 
    oHTTP.send 

    Dim success As Boolean 
    success = oHTTP.waitForResponse() 
    If Not success Then 
     Debug.Print "DOWNLOAD FAILED!" 
     Exit Function 
    End If 

    Dim responseText As String 
    responseText = oHTTP.responseText 

    Set oHTTP = Nothing 

    DownloadTextFile = responseText 
End Function