作者oneil (百年孤寂)
看板Visual_Basic
标题Re: [VBA ] windows().activate的问题
时间Sat Aug 25 12:21:53 2007
※ 引述《fumizuki (蒙面加菲狮)》之铭言:
: ※ 引述《oneil (百年孤寂)》之铭言:
: : 请问一下各位大大
: : 小弟刚接触vba不久,遇到一个奇怪的问题
: : 在使用windows().activate时
: : 我从网页上开启一个excel file (a档案)的超连结
: : 然後要用另外一个EXCEL FILE (b档案) 把 a 里面的资料要复制到b
: : 我使用window("a.xls").activate要把档案a active起来以便选取复制
: : 但是却出现"超出索引范围"的错误讯息。如果我把a存档在开启,之後执行我的程式
: : 就没有这个问题,好像是vba没办法抓到a档案。请问一下有没有解决的方法呢?
: : 谢谢大家!
: IE中的工作表不知道如何抓里面的资料,
: 所以只能用下载後再用excel开启的方式抓资料了
: 提供一个下载档案的程式码给你参考:
: Dim WithEvents ix As Inet
: Public Sub test()
: Set ix = New Inet
: ix.RemoteHost = "127.0.0.1" '此处填入该网站的ip位址
: ix.RemotePort = 80 '网站预设都是80 port
: ix.Execute "http://127.0.0.1/xxx.xls", "GET" '下载连结中的档案
: End Sub
: Private Sub ix_StateChanged(ByVal State As Integer)
: '状态为 12,代表资料已接收完成...
: '其他状态请选取StateChanged然後按F1取得详细说明
: If State = 12 Then
: Dim xx() As Byte
: Open "c:\temp\xxx.xls" For Binary As #1
: Do
: xx = ix.GetChunk(1024, icByteArray) '指定每一次回圈读取1024bytes
: If UBound(xx) < 0 Then Exit Do '到达档案结尾时会得到空的阵列
: Put #1, , xx '写入至本机档案,档案路径由 open 後的字串决定
: Loop
: Close #1
: Readxls() '读取xxx.xls的内容
: End If
: End Sub
: Private Sub Readxls()
: Dim wb As Workbook
: Set wb = Workbooks.Open("c:\temp\xxx.xls")
: Set ws = wb.Worksheets(1)
: MsgBox ws.Range("A1").Value
: wb.Close
: Kill "c:\temp\xxx.xls" '删除刚才建立的暂存档
: End Sub
多谢fumizuki大大的回答,
我想进一步请教如果a档案不是在web上开启,而是在Lotus notes上开启,
该如何设定呢?不知道会不会有存取的限制,
所以我有一个比较简单的想法,
就是先把a档案开启,开启a档案时,
理论上会存到一个internet暂存资料夹,如果我可以抓到暂存资料夹的档案
这样一来我就可以把复制贴上的动作自动化了,我刚才试了一可以抓到该档案的路径
C:\Documents and Settings\ciberlace\Local Settings\Temporary Internet
Files\Content.IE5\AJRUGDHU
a档案也可以打开,但是我用windows("上述路径").activate但是还是出现
"阵列索引超出范围"的错误讯息,不知道这是什麽原因?档案应该已经存在电脑了啊
还是说有什麽设定上面的问题,我看了一下暂存档案资料夹属性,是隐藏的资料夹
不知道抓不到跟这个有没有关系?
这是我在web上测试的结果,如果换成在notes上不知道会不会有另外的问题,
不知道各位大大有没有什麽好方法呢?
谢谢大家
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.131.74.131
1F:推 fumizuki:windows的索引值只能指定excel开启的视窗啦 08/25 13:38
2F:推 fumizuki:任何一个ie可以开启的网址都可以用inet取得其内容 08/25 13:39
3F:→ fumizuki:用inet就不需要经过ie或其他任何软体了 08/25 13:40