このコードは、ディレクトリ内のファイルをループし、OLEDB接続文字列とテキストを修正します。特定のフォルダ内のExcelファイルを再帰的に移動し、ファイル内のすべてのワークブック接続インスタンスを更新する方法
Sub LoopThroughFiles()
FolderName = "C:\Files\"
If Right(FolderName, 1) <> Application.PathSeparator Then FolderName = FolderName & Application.PathSeparator
Fname = Dir(FolderName & "*.xls")
'loop through the files
Do While Len(Fname)
With Workbooks.Open(FolderName & Fname)
With ActiveWorkbook.Connections("MYCONNECTION").OLEDBConnection
.CommandText = Array("NEWNAME")
.CommandType = xlCmdCube
.Connection = Array(_
"OLEDB;Provider=MSOLAP.5;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=MyCube;Data Source=server.domain.net\OLAP;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error;Update Isolation Level=2" _
)
.RefreshOnFileOpen = True
.SavePassword = False
.SourceConnectionFile = ""
.MaxDrillthroughRecords = 1000
.ServerCredentialsMethod = xlCredentialsMethodIntegrated
.AlwaysUseConnectionFile = False
.RetrieveInOfficeUILang = True
End With
With ActiveWorkbook.Connections("MYCONNECTION")
.Name = "MYCONNECTION"
.Description = ""
End With
ActiveWorkbook.Close SaveChanges:=True
End With
' go to the next file in the folder
Fname = Dir
Loop
End Sub
私はそれを再帰的に指定されたディレクトリをスキャンしても、サブディレクトリで見つかったすべての.xlsファイルを修正なるように、これをアップグレードしたいと思います。
さらに、多くのファイルに接続(例:MYCONNECTION、MYCONNECTION1、MYCONNECTION2、MYCONNECTION3、...)のインスタンスが多数あり、同じOLEDB文字列を修正する必要があるため、ワークブック接続のすべてのインスタンスにテキスト名を入力します。
ご協力いただければ幸いです。 :)
FileSystemObjectを見てください。 –