XLSファイルのみをエクスポートできる古いアプリケーションを使用する必要があり、XLSXファイルの読み取りのみが可能なEPPlusライブラリを使用して.Netでプログラムを作成します。
XLSからXLSXにバッチ変換する最も簡単な方法は何ですか?
Office Migration Planning Managerをご覧ください。
ツールキットにはOffice File Converter(OFC)も含まれており、バイナリからOpenXML形式へのドキュメントの一括変換が可能です。 ( テクネット )
OFCを機能させるには、Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint File Formats
も必要です。
どちらのツールも実際にはサポートされていないようです。
マクロを使用してフォルダー内のファイルを処理し、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形式に変換するときにマクロが削除されます。
そこで、単純なVBScriptを記述して、.xlsファイルをサイレント方式で.xlsxに変換しました。
./ convert-xls-xlsx.vbs {.xlsファイルを含むフォルダへのパス}
convert-xls-xlsx.vbs:
Set 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") Set objFolder = objFso.GetFolder(strPath) objFolder.Files の各objFileに対してfileName = objFile.Path If(objFso.GetExtensionName(objFile.Path)= "xls")次に、 objWorkbook = objExcel.Workbooks.Open(fileName) saveFileName = Replace(fileName、 "。xls"、 "。xlsx") objWorkbook.SaveAs saveFileName、51 objWorkbook.Close() objExcel.Application.DisplayAlerts = True End If Next MsgBox "Finished conversion"
注:パスの間にスペースがある場合は、パスを引用符で囲んで、フォルダーパスにスペースがないか確認してください。
Sub SaveAllAsXLSX() Dim strFilename As String Dim strDocName As String Dim strPath As String Dim wbk As Workbook Dim fDialog As FileDialog Dim intPos As Integer Dim strPassword As String Dim strWritePassword As String Dim varA As String Dim varB As String Dim colFiles As New Collection Dim vFile As Variant Set fDialog = Application.FileDialog(msoFileDialogFolderPicker) With fDialog .Title = "フォルダーを選択[OK]をクリックします。 .AllowMultiSelect = True .InitialView = msoFileDialogViewList If .Show -1 Then MsgBox "Cancelled By User"、、 "List Folder Contents " Exit Sub End If strPath = fDialog.SelectedItems.Item(1) If Right(strPath、1)"\"Then strPath = strPath + "\" End With If Left(strPath、1)= Chr(34)Then strPath = Mid(strPath、2、Len(strPath)-2) End If Set obj = CreateObject( "Scripting.FileSystemObject") RecursiveDir colFiles、strPath、 "* .xls"、True for for vFile In colFiles Debug.Print vFile strFilename = vFile varA = Right(strFilename、3) If(varA = "xls" Or varA = "XLSX")Then Set wbk = Workbooks.Open(Filename:= strFilename) If wbk.HasVBProject Then wbk.SaveAs Filename:= strFilename& "m"、FileFormat:= xlOpenXMLWorkbookMacroEnabled Else wbk.SaveAs Filename:= strFilename& "x"、FileFormat:= xlOpenXMLWorkbook End If wbk.Close SaveChanges:= False obj.DeleteFile(strFilename ) End If Next 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 Dim vFolderName As Variant 'ファイルを追加strFileSpecをcolFiles に一致させるstrFolder内strFolder = TrailingSlash(strFolder) strTemp = Dir(strFolder&strFileSpec) Do While strTemp vbNullString colFiles.Add strFolder&strTemp strTemp = Dir Loop If bIncludeSubfolders Then 'colFoldersにstrFolderのサブディレクトリのリストを入力します strTemp = Dir( strFolder、vbDirectory) Do While strTemp vbNullString If(strTemp "。")And(strTemp "..")Then If(GetAttr(strFolder&strTemp)And vbDirectory) 0 Then colFolders.Add strTemp End If End If strTemp = Dir Loop 'colFolders内の各サブフォルダーに対してRecursiveDirを呼び出します colFolders内の各vFolderNameについて。]次のvFolderName End If End Function Public Function TrailingSlash(strFolder As String)As String If Len(strFolder)> 0 Then If Right(strFolder、1)= "\" Then TrailingSlash = strFolder Else TrailingSlash = strFolder& "\" End If End If End Function
MsOfficeがインストールされている場合は、このツールをダウンロードして、すぐに修正できます。
http://www.softinterface.com/Convert-XLS/Features/Convert-XLS-To-XLSX.htm
フォルダーを選択して変換されたxlsファイルを表示するときは、MS Officeを使用して、独自のコンバーターではなく、変換ツールオプションにチェックマークを付けてください。
独自のコンバーターを使用すると、セルの色が失われ、1枚のシートが出てきます。 MsOfficeをコンバーターとして使用すると、うまく機能するようです。迅速な修正に適したツール。