简体   繁体   中英

how to import data using .odc file in Excel 2013 VBA

I am trying to write some VBA that will import some data into a query table using a .odc file that is stored in a SharePoint data connection library. I used the macro recorder to record the process where I add the connection, then go to the existing connections and import the data into a table in the current worksheet(which worked when I did it manually).

The recorder spit out the following code (I removed the command text since it contains some sensitive info, but it was a big string of SharePoint related stuff like the list and view GUID):

Sub RecordedImportMacro()

    Workbooks("MyWorkbook.xlsm").Connections.AddFromFile _
        "http://path/to/my/odcfile/on/sharepoint.odc"
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Office.List.OLEDB.2.0;Data Source="""";ApplicationName=Excel;Version=12.0.0.0" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandType = 5
        .CommandText = "some command text here"
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .SourceConnectionFile = "http://path/to/my/odcfile/on/sharepoint.odc"
        .ListObject.DisplayName = "My_Table"
    End With
End Sub

However, when I run the macro to seemingly perform the exact same task that worked before I get the following error: Run time error 1004. I googled and it didn't really find anything that pertained to my use case

when I debug the following line is highlighted: .CommandType = 5

Any ideas on how to get this working?

I was able to get it working using code found here

Below is the code:

Sub ThisWorks()

    With ActiveSheet.QueryTables.Add(Connection:= _
        "FINDER;http://path/to/my/odcfile/on/sharepoint.odc" _
        , Destination:=Range("$A$1"))
        .RefreshStyle = xlInsertDeleteCells
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .RefreshOnFileOpen = True
        .HasAutoFormat = True
        .BackgroundQuery = True
        .TablesOnlyFromHTML = True
        .Refresh BackgroundQuery:=False
        .SavePassword = False
        .SaveData = True
    End With

End Sub

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM