回答:
Office Migration Planning Managerをご覧ください。
このツールキットにはOffice File Converter(OFC)も含まれており、バイナリからOpenXML形式へのドキュメントの一括変換が可能です。(Technet)
Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint File Formats
OFCを動作させるためにもが必要になることに注意してください。
どちらのツールも実際にはサポートされていないようです。
マクロを使用してフォルダー内のファイルを処理し、xlsからxlsxに変換することをお勧めします。このコードは、ファイルがすべて1つのフォルダー内にあり、すべてのxlsファイルを変換する必要があることを前提としていますが、個々のファイルを選択する場合は、このコードを更新できます。
このコードは、Excel 2007以降のブックから実行する必要があります。
Option Explicit
' Convert all xls files in selected folder to xlsx
Public Sub convertXLStoXLSX()
Dim FSO As Scripting.FileSystemObject
Dim strConversionPath As String
Dim fFile As File
Dim fFolder As Folder
Dim wkbConvert As Workbook
' Open dialog and select folder
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.Show
On Error Resume Next ' Prevent debug mode if user cancels selection
strConversionPath = .SelectedItems(1)
On Error GoTo 0 ' Re-enable default error handling
End With
Set FSO = New Scripting.FileSystemObject
' Check if the folder exists
If FSO.FolderExists(strConversionPath) Then
Set fFolder = FSO.GetFolder(strConversionPath)
' Disable confirmation dialogs (to prevent "unsaved changes" dialog popping up)
' and screen updates (to speed up conversion)
Application.DisplayAlerts = False
Application.ScreenUpdating = False
' Loop through files, find the .xls files
For Each fFile In fFolder.Files
If LCase$(Right(fFile.Name, 4)) = ".xls" Then
' Open temporary workbook
Set wkbConvert = Workbooks.Open(fFile.Path)
' Save as OpenXML workbook - if your .xls files contain macros
' then change to FileFormat:=xlOpenXMLWorkbookMacroEnabled
wkbConvert.SaveAs FSO.BuildPath(fFile.ParentFolder, _
Left(fFile.Name, Len(fFile.Name) - 4)) & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook
wkbConvert.Close SaveChanges:=False
' Delete original file
fFile.Delete Force:=True
End If
Next fFile
' Re-enable confirmation dialogs and screen updates
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End If
End Sub
注:変換するファイルにマクロが含まれている場合は、
FileFormat:=xlOpenXMLWorkbook
を読み取るように更新する必要がありますFileFormat:=xlOpenXMLWorkbookMacroEnabled
。または、変換されたファイルのマクロコードが不要な場合は、そのままにしておくと、マクロをxlsx形式に変換するときにマクロが削除されます。
Sub SaveAllAsXLSX() strFilename As Stringを暗くする Dim strDocName As String strPath As String ワークブックとしてDim wbk Dim fDialog As FileDialog Dim intPos As Integer Dim strPassword As String Dim strWritePassword As String Dim varA As String 文字列としてDim varB Dim colFiles As New Collection バリアントとしてDim vFile fDialog = Application.FileDialog(msoFileDialogFolderPicker)を設定します。 fDialogを使用 .Title = "フォルダーを選択して[OK]をクリックします" .AllowMultiSelect = True .InitialView = msoFileDialogViewList もし.Show -1 Then MsgBox「ユーザーによるキャンセル」、「フォルダの内容のリスト」 サブを終了 終了する場合 strPath = fDialog.SelectedItems.Item(1) If Right(strPath、1) "\" Then strPath = strPath + "\" で終わる If Left(strPath、1)= Chr(34)Then strPath = Mid(strPath、2、Len(strPath)-2) 終了する場合 Set obj = CreateObject( "Scripting.FileSystemObject") RecursiveDir colFiles、strPath、 "*。xls"、True colFilesの各vFile Debug.Print vFile strFilename = vFile varA = Right(strFilename、3) (varA = "xls"またはvarA = "XLSX")の場合 セットwbk = Workbooks.Open(Filename:= strFilename) もしwbk.HasVBProjectなら wbk.SaveAs Filename:= strFilename& "m"、FileFormat:= xlOpenXMLWorkbookMacroEnabled そうしないと wbk.SaveAs Filename:= strFilename& "x"、FileFormat:= xlOpenXMLWorkbook 終了する場合 wbk.Close SaveChanges:= False obj.DeleteFile(strFilename) 終了する場合 次のvFile End Sub Public Function RecursiveDir(colFiles As Collection、_ strFolder As String、_ strFileSpec As String、_ bIncludeSubfolders As Boolean) Dim strTemp As String Dim colFolders As New Collection vFolderNameをバリアントとして無効にする 'strFileSpecに一致するstrFolderのファイルをcolFilesに追加します strFolder = TrailingSlash(strFolder) strTemp = Dir(strFolder&strFileSpec) strTemp vbNullStringの実行中 colFiles.Add strFolder&strTemp strTemp = Dir ループ もしbIncludeSubfolders Then 'colFoldersにstrFolderのサブディレクトリのリストを入力します strTemp = Dir(strFolder、vbDirectory) strTemp vbNullStringの実行中 If(strTemp "。")And(strTemp "..")Then If(GetAttr(strFolder&strTemp)And vbDirectory)0 Then colFolders.Add strTemp 終了する場合 終了する場合 strTemp = Dir ループ 'colFoldersのサブフォルダーごとにRecursiveDirを呼び出します colFoldersの各vFolderName RecursiveDir(colFiles、strFolder&vFolderName、strFileSpec、True)を呼び出す 次のvFolderName 終了する場合 終了機能 パブリック関数TrailingSlash(strFolder As String)As String Len(strFolder)> 0の場合 If Right(strFolder、1)= "\" Then TrailingSlash = strFolder そうしないと TrailingSlash = strFolder& "\" 終了する場合 終了する場合 終了機能
MsOfficeがインストールされている場合は、このツールをダウンロードして、すばやく修正できます。
http://www.softinterface.com/Convert-XLS/Features/Convert-XLS-To-XLSX.htm
フォルダーを選択して、変換されたxlsファイルを表示するときは、MS Officeを使用して、独自のコンバーターではなく、変換ツールオプションにチェックマークを付けてください。
独自のコンバーターを使用すると、セルの色が失われ、1枚のシートが出てきます。MsOfficeをコンバータとして使用すると、うまく機能するようです。迅速な修正に適したツール。
そこで、.xlsファイルを.xlsxにサイレントに変換する単純なVBScriptを作成しました。
./convert-xls-xlsx.vbs {.xlsファイルを含むフォルダーへのパス}
convert-xls-xlsx.vbs:
args = WScript.Argumentsを設定します。 strPath = args(0) strPath = CreateObject( "Scripting.FileSystemObject")。GetAbsolutePathName(strPath) Set objExcel = CreateObject( "Excel.Application") objExcel.Visible = False objExcel.DisplayAlerts = False Set objFso = CreateObject( "Scripting.FileSystemObject") objFolder = objFso.GetFolder(strPath)を設定します。 objFolder.Filesの各objFileについて fileName = objFile.Path If(objFso.GetExtensionName(objFile.Path)= "xls")Then セットobjWorkbook = objExcel.Workbooks.Open(fileName) saveFileName = Replace(fileName、 "。xls"、 "。xlsx") objWorkbook.SaveAs saveFileName、51 objWorkbook.Close() objExcel.Application.DisplayAlerts = True 終了する場合 次 MsgBox "変換が終了しました"
注:パスの間にスペースがある場合は、パスを引用符で囲んでください。