Foxtable(狐表)用户栏目专家坐堂 → 以下代码Foxtable中有替代方法吗?


  共有2299人关注过本帖树形打印复制链接

主题:以下代码Foxtable中有替代方法吗?

帅哥哟,离线,有人找我吗?
jspta
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
以下代码Foxtable中有替代方法吗?  发帖心情 Post By:2015/12/9 15:10:00 [只看该作者]

这个是VBA中借QueryTable功能进行查询,Foxtable中有没有类似的方法?
该功能主要是访问网站时,网站返回一个csv文件,我需要自动下载该文件,读取内容或者保存。

Sub test()
Dim myQuery As QueryTable
Dim sht_Data As Worksheet, sht_URL As Worksheet, wb As Workbook
Dim rng As Range
Set sht_URL = ThisWorkbook.Worksheets("Sheet1") ' 定义网址列表所在工作表
Set wb = Workbooks.Add  ' 新建临时工作簿
Set sht_Data = wb.Worksheets(1) ' 定义数据工作表
sht_Data.Activate      ' 显示数据工作表
   
    ' 添加一个外部查询定义
Set myQuery = ActiveSheet.QueryTables _
    .Add(Connection:="URL;" & sht_URL.[A1], _
    Destination:=sht_Data.[A1])
myQuery.BackgroundQuery = False ' 禁止后台更新查询
Application.DisplayAlerts = False   ' 关闭提示窗口,防止保存文件时要求覆盖确认搜索
With sht_URL
    For Each rng In .Range(.Range("A1"), .Range("A65536").End(xlUp))    ' 遍历所有网址
        If UCase(Left(rng, 7)) = "HTTP://" Then ' 仅处理网址数据
            sht_Data.Cells.ClearContents    ' 清除原有数据
            myQuery.C & rng   ' 定义新的外部数据源
            myQuery.Refresh ' 更新获取数据
            
            ' 保存为CSV格式的文件
            sht_Data.SaveAs Filename:=Trim(Mid(rng, InStr(rng, "s=") + 2, 99)) & ".xls", FileFormat:=xlExcel8
         
        End If
    Next rng
End With
wb.Close savechanges:=False ' 关闭临时工作簿
Application.DisplayAlerts = True    ' 恢复提示窗口
End Sub

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/9 15:22:00 [只看该作者]

汗,你直接用webbrowser读取网页,或者用get、post请求,都行。


 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2015/12/9 15:40:00 [只看该作者]

用get、post请求,都行。这个要怎么做?

代码中的这部分挺方便的,Foxtable中能否实现类似功能
sht_Data.Cells.ClearContents    ' 清除原有数据
            myQuery.C & rng   ' 定义新的外部数据源
            myQuery.Refresh
这样我就能够避免下载文件后打开了,我只需要读取文件内容,不需要保存文件。


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/9 15:42:00 [只看该作者]

要下载什么啊?网址啊,你要做什么功能啊?


 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2015/12/9 15:47:00 [只看该作者]

http://table.finance.yahoo.com/table.csv?s=000001.sz 
下载这个网址上数据导入数据库。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/9 16:01:00 [只看该作者]

呃,直接下载不行?

 

Network.DownloadFile("http://table.finance.yahoo.com/table.csv?s=000001.sz", "d:\temp.csv","" ,"" ,True, 100000, True)

 

直接读取也可以啊

 

Dim rqst As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create("http://table.finance.yahoo.com/table.csv?s=000001.sz")
Dim rsps As System.Net.HttpWebResponse = rqst.GetResponse
Dim stm As System.IO.Stream = rsps.GetResponseStream()
Dim reader As New System.IO.StreamReader(stm)
Dim str As String
Do
    str = reader.ReadLine
    output.show(str)
Loop While str > Nothing
stm.Dispose()
reader.close

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2015/12/9 16:27:00 [只看该作者]

晕死,原来测试怎么没办法读取,谢了。

 回到顶部