web-dev-qa-db-ja.com

XLSからXLSXへのバッチ変換

XLSファイルのみをエクスポートできる古いアプリケーションを使用する必要があり、XLSXファイルの読み取りのみが可能なEPPlusライブラリを使用して.Netでプログラムを作成します。

XLSからXLSXにバッチ変換する最も簡単な方法は何ですか?

12
Origin

Office Migration Planning Managerをご覧ください。

ツールキットにはOffice File Converter(OFC)も含まれており、バイナリからOpenXML形式へのドキュメントの一括変換が可能です。 ( テクネット

Technetの概要

ダウンロードリンク

OFCを機能させるには、Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint File Formatsも必要です。
どちらのツールも実際にはサポートされていないようです。

6
ChrisN

マクロを使用してフォルダー内のファイルを処理し、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形式に変換するときにマクロが削除されます。

3
Nick Perkins

そこで、単純な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" 

注:パスの間にスペースがある場合は、パスを引用符で囲んで、フォルダーパスにスペースがないか確認してください。

0
revosftw
 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 
 
0
pratap

MsOfficeがインストールされている場合は、このツールをダウンロードして、すぐに修正できます。

http://www.softinterface.com/Convert-XLS/Features/Convert-XLS-To-XLSX.htm

フォルダーを選択して変換されたxlsファイルを表示するときは、MS Officeを使用して、独自のコンバーターではなく、変換ツールオプションにチェックマークを付けてください。

独自のコンバーターを使用すると、セルの色が失われ、1枚のシートが出てきます。 MsOfficeをコンバーターとして使用すると、うまく機能するようです。迅速な修正に適したツール。

0
99Sono