回答:
Office Migration Planning Managerをご覧ください。
このツールキットにはOffice File Converter(OFC)も含まれており、バイナリからOpenXML形式へのドキュメントの一括変換が可能です。(Technet)
Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint File FormatsOFCを動作させるためにもが必要になることに注意してください。
どちらのツールも実際にはサポートされていないようです。
マクロを使用してフォルダー内のファイルを処理し、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 "変換が終了しました"
注:パスの間にスペースがある場合は、パスを引用符で囲んでください。