多数の .xlsx ワークブックを .xls にバッチ変換するためにこのコードを作成しました (2003 を使用しているエンド ユーザーが多数います)。それは仕事をしますが、非常に遅いです.20個のワークブックでこれをテストしましたが、それぞれのサイズは約30kbで、ローカルで実行するのに9.78秒かかりました. 私のシェアポイント サーバーでは 262 秒かかりましたが、シェアポイントの信じられないほど遅い速度は別の問題だと思います。
コード
Option Explicit
Sub Convert_to972003()
Dim orgwb As Workbook
Dim mypath As String, strfilename As String
Dim nname As String
'--> Error Handling
On Error GoTo WhatHappened
'--> Disable Alerts
With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With
'--> Specify location of workbooks
mypath = "C:\xxx"
strfilename = Dir(mypath & "\*.xlsx", vbNormal)
'--> Check the specified folder contains files
If Len(strfilename) = 0 Then Exit Sub
'--> Start Loop, end when last file reached
Do Until strfilename = ""
'--> Open a workbook
Set orgwb = Application.Workbooks.Open _
(mypath & "\" & strfilename)
'--> Create new Filename, Save in new File Format and Close
nname = Replace(strfilename, ".xlsx", ".xls")
orgwb.SaveAs mypath & "\" & nname, FileFormat:=xlExcel8
orgwb.Close
strfilename = Dir()
Loop
'--> Enable Alerts
With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With
Exit Sub
WhatHappened: MsgBox Err.Description
End Sub
質問
フォルダー/開く/保存/閉じるをループするよりも、ファイル形式を変換するためのより速い方法はありますか?