Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 73292 Skopiuj do schowka Otwieranie kolejnych plików i zmiana rozszerzenia
Autor Wiadomość
Drwall 
Świeżak


Wersja: Win Office 365
Posty: 3
Wysłany: 29-08-2022, 14:06   Otwieranie kolejnych plików i zmiana rozszerzenia

Witam,
potrzebowałbym makro, który otworzy wszystkie pliki, które znajdują się w danym folderze i zapisze je z rozszerzeniem xlsx, a następnie zamknie. Pliki najczęściej są w formacie .ods, niestety ich nazwy nie mają jakiegoś konkretnego schematu. Folder, w którym pojawiałaby się pliki do zamiany byłby cały czas ten sam.

Próbowałem takim makrem ale niestety nie działa i nie wiem co mógłbym poprawić:
Kod:

Sub test_loop()
'

'
'
     Dim MyFolder As String
     Dim MyFile As String
     MyFolder = "C:\Users\...........\Desktop\Nowy folder"
     MyFile = Dir(MyFolder & "*.ods")
     Do While MyFile <> ""
     Workbooks.Open Filename:=MyFolder & MyFile
     
     
    ActiveWorkbook.SaveAs FileFormat:=xlOpenXMLWorkbook
     
     ActiveWorkbook.Close
     MyFile = Dir
     
     Loop
End Sub
ID posta: 420104 Skopiuj do schowka
 
 
Maciej Gonet 
Excel Expert


Wersja: Win Office 365
Pomógł: 2828 razy
Posty: 8516
Wysłany: 29-08-2022, 14:29   

Między MyFolder a MyFile chyba brakuje \.
ID posta: 420106 Skopiuj do schowka
 
 
Tajan


Pomógł: 5091 razy
Posty: 11145
Wysłany: 29-08-2022, 17:10   

Proponuję w taki sposób:
Kod:
Sub test_loop()
    Dim FSO As Object
    Dim MyFile As Object
    Dim MyFolder As String
    Dim MyODSname As String
    Dim MyXLSname As String
     
    MyFolder = "C:\Users\...........\Desktop\Nowy folder"

     
    Set FSO = CreateObject("Scripting.FileSystemObject")
     
    For Each MyFile In FSO.GetFolder(MyFolder).Files
        MyODSname = MyFile.Path
        If LCase(FSO.GetExtensionName(MyODSname)) = "ods" Then
            MyXLSname = MyFolder & "\" & FSO.GetBaseName(MyODSname) & ".xlsx"
            If Dir(MyXLSname) = "" Then
                With Workbooks.Open(MyODSname)
                    .SaveAs MyXLSname, FileFormat:=xlOpenXMLWorkbook
                    .Close
                End With
            End If
        End If
    Next

End Sub
ID posta: 420107 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe