Board logo

標題: [發問] [發問]如何更改連結網址成變數? [打印本頁]

作者: 水元素    時間: 2013-1-22 17:35     標題: [發問]如何更改連結網址成變數?

各位前輩,希望不吝賜教!!謝謝

說明
利用表單連結到指定網址
擷取所有內容後加以計算。

資料為
http://www.google.com/finance/historical?q=TPE%3A1101&start=0&num=200

疑問點
1.如何將網址裡的1101更改成變數,可以由儲存格來更動??
2.亦或此網址無法做變數更動,要另外方法來擷取表單??

原始碼
  1. Sub Stock_Data()

  2. Dim STK_NO As String

  3. STK_NO = 1101   'Sheets("Result").Cells(3, "B")

  4. If STK_NO = "" Then Exit Sub

  5. Const url As String = "http://www.google.com/finance/historical?q=TPE%3A&STK_NO&start=0&num=200"

  6. Cells.Clear
  7.    
  8. Application.DisplayStatusBar = True

  9. Application.ScreenUpdating = False
  10.    
  11. Set ie = CreateObject("internetexplorer.application")

  12. With ie
  13.    
  14.     .Visible = False
  15.    
  16.     .Navigate url
  17.         
  18.     Do While .ReadyState <> 4
  19.         
  20.         DoEvents
  21.    
  22.     Loop
  23.    
  24.     .ExecWB 17, 2
  25.    
  26.     .ExecWB 12, 2
  27.    
  28.     Sheets("Data").Range("B7").Activate
  29.    
  30.     ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
  31.             False, NoHTMLFormatting:=True

  32. End With

  33. Range("B7:G51,B252:G275").delete Shift:=xlUp
  34.    
  35. ie.Quit
  36.    
  37. End Sub
複製代碼

作者: oobird    時間: 2013-1-22 21:12

  1. Sub Stock_Data()
  2.     Dim STK_NO As String, url As String
  3.     STK_NO = Sheets("Result").Cells(3, "B")
  4.     If STK_NO = "" Then Exit Sub
  5.     url = "http://www.google.com/finance/historical?q=TPE%3A" & STK_NO & "&start=0&num=200"
  6.     'Cells.Clear
  7.     Application.DisplayStatusBar = True
  8.     Application.ScreenUpdating = False
  9.     Set ie = CreateObject("internetexplorer.application")
  10.     With ie
  11.         .Visible = False
  12.         .Navigate url
  13.         Do While .ReadyState <> 4
  14.             DoEvents
  15.         Loop
  16.         .ExecWB 17, 2
  17.         .ExecWB 12, 2
  18.         Application.Goto Sheets("Data").Range("B7")
  19.         ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
  20.                                                                              False, NoHTMLFormatting:=True
  21.     End With
  22.     Range("B7:G51,B252:G275").Delete Shift:=xlUp
  23.     ie.Quit
  24. End Sub
複製代碼

作者: 水元素    時間: 2013-1-23 10:22

回復 2# oobird
謝謝大大的幫忙,目前問題已解決。
小的核對程式上的差別還有一些問題想請教,希望不吝賜教!!!謝謝

1.將連結網址部分改成" & STK_NO & ",小的昨天有嘗試過,卻只得到很少部分又不完整網頁資訊,
   核對了程式上的差別,發現大大有定義 url As String,
   請問為何增加這定義即可擷取完整資訊??又為何在別的網頁不需定義也可以使用??

2. Application.Goto Sheets("Sheet2").Range("B7") 這段跟我原先的 Sheets("Sheet2").Range("B7"). Activate
    差別在哪裡??我有去查F1說明不太了解,可否解釋一下。.
作者: oobird    時間: 2013-1-23 13:33

1.你是用"Const url As String ="方式宣告url為字符型態,這適合用在常量宣告,不能用在變量。
2.原先的 Sheets("Sheet2").Range("B7"). Activate必須在當前工作表為"Sheet2"時才能有效的到range("b7"), 若不在這個表就必須寫兩行,先到sheet2, 再到b7. 改為Application.Goto Sheets("Sheet2").Range("B7")是為了一行到位。
作者: oobird    時間: 2013-1-23 13:33

1.你是用"Const url As String ="方式宣告url為字符型態,這適合用在常量宣告,不能用在變量。
2.原先的 Sheets("Sheet2").Range("B7"). Activate必須在當前工作表為"Sheet2"時才能有效的到range("b7"), 若不在這個表就必須寫兩行,先到sheet2, 再到b7. 改為Application.Goto Sheets("Sheet2").Range("B7")是為了一行到位。
作者: 水元素    時間: 2013-1-23 14:38

回復 5# oobird
真的非常感謝大大~
讓我清楚明白錯誤點!!!!:)
有恍然大悟的感覺~謝謝




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)