我在VBA中使用了大量的QueryTables.Add,它有大量的
下面是實作這種情況的類:
Option Explicit
'注意,所有的輸入都是正確的,所以不需要鑄造。
Public URLStr As String
Public WSNameStr As String
Public BackgroundQuery As Boolean
Private Sub Class_Initialize()
'根據需要設定默認值。
URLStr = "默認值"。
WSNameStr = "默認值"/span>
BackgroundQuery = True[/span]。
End Sub
uj5u.com熱心網友回復:
擁有如此多的引數是完全沒有意義的。你的設計顯然有問題。
選項1 :你為什么不創建一個類?而不是傳遞大量的引數,你只傳遞一個類的實體,在這個類中你將擁有所有你需要的東西。
選項2 :你為什么不把你的引數放在一個字典里?你將只向你的方法傳遞一個引數,其中包括幾個值。
選項3 :你為什么不簡單地使用一個陣列?
uj5u.com熱心網友回復:
這是我能想到的最好的方法,允許我使用默認值和添加引數,而不需要真的調整代碼,只是呼叫子程式。
示例類名為clsQueryTables
Private Const xlAllTables = 2 ' All tables
Private Const xlEntirePage = 1 ' 整個頁面。
Private Const xlSpecifiedTables = 3 ' 指定的表格。
Public WebSelectionType As Integer
Private Sub Class_Initialize()
WebSelectionType = xlAllTables
結束 Sub
模塊:
Public QueryArgs As New clsQueryTables
Sub Testing()
Dim URLStr As String, WSNameStr As String
URLStr = "http"/span>
WSNameStr = "Test"/span>
QueryArgs.WebSelectionType = xlAllTables
Debug.Print "From Caller Sub QueryArgs.WebSelectionType = " & QueryArgs.WebSelectionType
Call Query_Web_URL(URLStr, WSNameStr)
QueryArgs.WebSelectionType = xlEntirePage
Debug.Print "From Caller Sub QueryArgs.WebSelectionType = "/span> & QueryArgs.WebSelectionType
Call Query_Web_URL(URLStr, WSNameStr)
結束 子
Sub TestTwo()
Dim URLStr As String, WSNameStr As String
URLStr = "http"/span>
WSNameStr = "Test"/span>
Call Query_Web_URL(URLStr, WSNameStr)
End Sub
Public Sub Query_Web_URL(URLStr As String, WSNameStr As String)
Dim WS As 作業表
Call WorksheetCreateDelIfExists(WSNameStr)
Set WS = Worksheets(WSNameStr)
With WS.querytables.Add(Connection:="URL;"/span> & URLStr, Destination:=Range("$A$1"/span>)
.名稱 = URLStr
.FieldNames = TrueFalse[/span]。
.FillAdjacentFormulas = False
.PreserveFormatting = False[/span
.RefreshOnFileOpen = False[/span
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False[/span
.SaveData = TrueTrue True
.RefreshPeriod = 0True
.WebConsecutiveDelimitersAsOne = True[/span]。
.WebSingleBlockTextImport = False[/span
.WebDisableDateRecognition = False[/span
.WebDisableRedirections = False[/span
.Refresh BackgroundQuery:=False
結束 與
Debug.Print "From Sub QueryArgs.WebSelectionType = " & QueryArgs.WebSelectionType
End Sub
除錯結果:
From Caller Sub QueryArgs.WebSelectionType = 2
From Sub QueryArgs.WebSelectionType = 2
From Caller Sub QueryArgs.WebSelectionType = 1
From Sub QueryArgs.WebSelectionType = 1
From Sub QueryArgs.WebSelectionType = 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/307521.html
標籤:
下一篇:用HTML替換文本的Regex
