Board logo

標題: 產生多餘的名稱 [打印本頁]

作者: ddhh4053    時間: 2013-1-15 02:01     標題: 產生多餘的名稱

請問各位大大
     我執行底下這兩段程式,會定義多餘的名稱"2012_F3_1_10_1101.php?STK_NO=1101&myear=2012",且一直重覆定義,要如何讓他不用自動定義名稱
With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.twse.com.tw/ch/trading/exchange/FMSRFK/genpage/Report" & year1 & "01/" & year1 & "_F3_1_10_" & stock_id & ".php?STK_NO=" & stock_id & "&myear=" & year1 & "" _
        , Destination:=Range("A6"))
        .Name = "2012_F3_1_10_1101.php?STK_NO=1101&myear=2012"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = False
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = False
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "8"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
..........................
...........................
..............................
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Address = [B2].Address Then
        With Sheets("test")
            If WorksheetFunction.CountIf(Sheets("Sheet3").Range("A2:A1425"), .[B2]) = 1 Then
             Call test
             Else
             Call test3
            End If
        End With
    End If
    Application.EnableEvents = True
End Sub

謝謝幫忙
作者: Hsieh    時間: 2013-1-15 09:23

回復 1# ddhh4053
WEB查詢的定義名稱是必需的
若沒有給它定義名稱,則無法做資料更新,也就是EXCEL將會移除此查詢
同理,若你只需查詢一次並不需要日後作資料更新
那麼在With ActiveSheet.QueryTables.Add的區段敘述結束前加入.Delete
將查詢刪除即可
作者: ddhh4053    時間: 2013-1-15 10:26

請問 我試著將.Delete加在.Refresh BackgroundQuery:=False前後面:
.Delete
.Refresh BackgroundQuery:=False

.Refresh BackgroundQuery:=False
.Delete
結果加在前面出現此處須要物件
加在後面沒有效果,
有沒有其他方法
謝謝指導
作者: Hsieh    時間: 2013-1-15 11:26

回復 3# ddhh4053

        .Refresh BackgroundQuery:=False
        .Delete
     End With
    這樣應該就在名稱內沒有新增一個名稱了
作者: ddhh4053    時間: 2013-1-15 13:28

我試過還是會一直累積參照的名稱 看來只能新增temp工作表
作者: Hsieh    時間: 2013-1-15 13:55

回復 5# ddhh4053

[attach]13944[/attach]
作者: GBKEE    時間: 2013-1-15 15:54

回復 5# ddhh4053
先執行Ex
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Q As QueryTable
  4.     With ActiveSheet
  5.         For Each Q In .QueryTables
  6.             Q.Delete
  7.         Next
  8.     End With
  9. End Sub
複製代碼
然後在 ActiveSheet.QueryTables.Add 中 加上.Delete 看看
  1. .Refresh BackgroundQuery:=False
  2.         .Delete
  3.      End With
複製代碼

作者: ddhh4053    時間: 2013-1-15 18:37

謝謝兩位大大的幫忙
  我也很納悶為什麼我加了那一行卻不行
.Refresh BackgroundQuery:=False
        .Delete
     End With
而你的確可以 完全一樣的東西




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