Страницы: 1
RSS
bat файл для пересохранения типа файла из xlsb в xlsx
 
Всем привет!

Суть проблемы, есть большое количество файлов с расширение xlsb при том весят они не мало, хотелось бы найти решение не прибегать к надстройкам, как вариант возможно создать bat для переименования файлов в формат xlsx, может кто пытался решить данный вопрос?
 
Цитата
Adamm написал:
для переименования файлов в формат xlsx
это ничего не даст. Чтобы сменить формат файла Excel его надо будет открыть. И не важно, bat это будет или какой-то макрос.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Adamm написал:
Суть проблемы, есть большое количество файлов с расширение xlsb при том весят они не мало,
так xlsx будут еще больше весить. Зачем это упражнение? Какова цель? Убить в них макросы?
По вопросам из тем форума, личку не читаю.
 
Цитата
написал:
Зачем это упражнение?
Создать запрос в PQ, xlsb с этим форматом не особо дружит, да есть примочки типо Binary.Buffer, но это решение ооочень дологое). Значит VBA
 
Код
Sub Test()
    Dim oFD As FileDialog, oFSO As Object, sFolderPath As String, Counter As Long
    Dim oFolder As Object, oFile As Object, tempWB As Workbook
    Dim NewFolderName As String, sFileNameWithoutExt As String
    
    If MsgBox("Пересохранить XLSB файлы в XLSX ?", vbQuestion + vbYesNo, "Вопрос") = vbNo Then Exit Sub
    
    NewFolderName = "Файлы XLSX" 'название папки, куда сохраним новые файлы
    
    Set oFD = Application.FileDialog(msoFileDialogFolderPicker)
    With oFD
        .AllowMultiSelect = False
        .Title = "Укажите папку с файлами"
        .ButtonName = "Выбрать папку"
        If .Show = False Then Exit Sub Else sFolderPath = .SelectedItems(1) & Application.PathSeparator
    End With
    Set oFD = Nothing
    
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.GetFolder(sFolderPath)
    If Not oFSO.folderexists(sFolderPath & NewFolderName) Then
        oFSO.CreateFolder (sFolderPath & NewFolderName)
    End If
    
    Application.ScreenUpdating = False
    For Each oFile In oFolder.Files
        If Not oFile.Name Like "*" & ThisWorkbook.Name & "*" Then
            If LCase(oFSO.GetExtensionName(oFile.Name)) = "xlsb" Then
                Counter = Counter + 1
                sFileNameWithoutExt = Mid(oFile.Name, 1, InStrRev(oFile.Name, ".") - 1)
                Set tempWB = Workbooks.Open(sFolderPath & oFile.Name, UpdateLinks:=False, ReadOnly:=True)
                tempWB.SaveAs sFolderPath & NewFolderName & Application.PathSeparator & sFileNameWithoutExt & ".xlsx", xlOpenXMLWorkbook '51
                tempWB.Close (False)
            End If
        End If
    Next oFile
    Application.ScreenUpdating = True
    MsgBox "Сохранено " & Counter & " файлов" & vbNewLine & "Файлы сохранены в " & sFolderPath & NewFolderName, vbInformation, "Конец"
End Sub
 
ну то есть нужно сделать их в формате для источника - тогда понятно. вроде питону можно поручить этим заняться, но тоже сделает и VB(S/A)  , PowerShell (PS1) но время на открыть и записать потребуется одинаковое.
Изменено: БМВ - 09.12.2021 13:18:23
По вопросам из тем форума, личку не читаю.
 
БМВ, ок, спасибо!
Изменено: Adamm - 09.12.2021 14:04:04
 
Как сменить формат сразу для нескольких файлов Excel
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх