2013-02-17 4 views
1

Я пытаюсь написать макрос для импорта файла excel, размещенного на сервере, в книгу. Это код, который у меня есть до сих пор.Импорт файла excel на сервер в другой файл 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 

Единственная проблема, с которой я сталкиваюсь, заключается в том, что она вызывает следующее диалоговое окно.

dialog box

нужно выбрать опцию 'MTD SAR $' каждый раз. Могу ли я выбрать эту опцию в коде vba, чтобы избежать диалогового окна? Любая помощь будет принята с благодарностью.

ответ

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 

Это то, что я использовал, отлажены конечно: Query table with Excel as Data Source