1

サーバーでホストされている Excel ファイルをワークブックにインポートするマクロを作成しようとしています。これは私がこれまでに持っているコードです。

Sub ranker()
'
' ranker macro
'

'
    Range("Ranker!A10:Ranker!Z100").ClearContents
    URL = Range("url!F2" & i).Text
    With ActiveSheet.QueryTables.Add(Connection:= _
        "FINDER;" & URL _
        , Destination:=Range("Ranker!$A$1:$Z$100"))
        .Name = "ranker"
        .CommandType = xlCmdTable
        .CommandText = Array("'MTD SAR$'")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

私が持っている唯一の問題は、次のダイアログ ボックスが表示されることです。

ダイアログボックス

毎回「MTD SAR$」オプションを選択する必要があります。ダイアログ ボックスを回避するために、VBA コード内でこのオプションを選択できますか? どんな助けでも大歓迎です。

4

1 に答える 1

0

querytable欲しいシートを指定できる方法を覚えていません。私はOLEDBを使用してこれを回避しました。次に例を示します。

Sub Excel_QueryTable()

    Dim oCn As ADODB.Connection
    Dim oRS As ADODB.Recordset
    Dim ConnString As String
    Dim SQL As String

    Dim qt As QueryTable

    ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\SubFile.xls;Extended Properties=Excel 8.0;Persist Security Info=False"
    Set oCn = New ADODB.Connection
    oCn.ConnectionString = ConnString
    oCn.Open

    SQL = "Select * from ['MTD SAR$']"

    Set oRS = New ADODB.Recordset
    oRS.Source = SQL
    oRS.ActiveConnection = oCn
    oRS.Open

    Set qt = Worksheets(1).QueryTables.Add(Connection:=oRS, _
Destination:=Range("Ranker!$A$1"))

    qt.Refresh

    If oRS.State <> adStateClosed Then
        oRS.Close
    End If


    If Not oRS Is Nothing Then Set oRS = Nothing
    If Not oCn Is Nothing Then Set oCn = Nothing

End Sub

これは私が使用したものですが、もちろん微調整しました:データソースとしてExcelを使用したクエリテーブル

于 2013-02-17T04:33:29.787 に答える