Mass update Excel file connection string

2019-04-28 13:21发布

问题:

We have recently changed our SQL Database server and i was wondering if there would be a script or an easier method of updating all the Excel file connection strings?

It would of been alot easier if they used a connection file but unfortunately they were all set manually and we have about 600 reports...

Any help is much appreciated.

Thanks

Nick

回答1:

Yes you can... you make a program in c# or vb.net that loops throu all of your 600 documents and opens the documents and by using

    oModule = oBook.VBProject.VBComponents.Add(VBIDE.vbext_ComponentType.vbext_ct_StdModule)
    oModule.CodeModule.AddFromString(sCode)

and depending on your setup in the sCode variable you have a macro that loops through Excel.Connections or

    For Each wks In ActiveWorkbook.Worksheets
      For Each qt In wks.QueryTables
        With qt
          .Connection ="myconnstring" 
        End With
      Next qt
    Next wks


回答2:

I wanted to do the exact same thing and came accross this tool called XLODCTool from here.

File link here.

Allos you to bulk change values inside of a connection string e.g.

DSN From SERVERA to SERVERB



回答3:

Based on Archlight solution, the macro is the following :

Sub UpdateConnectionsString_Click()
   For Each wks In ActiveWorkbook.Worksheets
      For Each qt In wks.QueryTables
          With qt
           'Debug.Print .Connection
           .Connection = Replace(.Connection, "bla.com", "localhost")
          End With
      Next qt
    Next wks
End Sub