Umwandler erweitern (doc. zu docx.)

DrMinzlauer

New Member
Joined
May 26, 2023
Messages
13
Platform
  1. Windows
Hallo Zusammen,
da unsere Firme leider noch sehr viele alte Worddateien im einsatz hat, welche aber oft nicht richtig Laden etc.
Es funktioniert in Excel teoretisch genauso, weshalb ich hoffe ihr könnt mir helfen.
habe folgendes Macro erstellt um doc. in docx. umzuwandeln. Dieses Macro funktioniert auch super, allerdings werden Inhalte oft verschoben. Nun habe ich die Lösung für das Problem, weiß allerdings nicht genau wie ich diese Lösung ins Macro bringe.

Wenn ich ein doc. als docx. über speichern unter abspeichern möchte, kann man einen Hacken bei "Kompatibilität mit früheren Versionen von Word beibehalten" setzen. Wenn dieser Hacken gesetzt ist, werden die Inhalte bei der Umwandlung nicht verschoben.

Nun meine Frage, wie kann ich in mein makro einarbeiten, dass beim Speichern immer dieser Hacken gesetzt ist?

Speichern unter.png


Code:
Sub ConvertDocsToDocx()
    Dim sourceFolder As String
    Dim targetFolder As String
    Dim fileName As String
    Dim sourceDoc As Document
    Dim targetDoc As Document

    ' Setze den Quell- und Zielordner
    sourceFolder = "C:\Users\sbutz\Desktop\Test docx\"
    targetFolder = "C:\Users\sbutz\Desktop\Test docx neu\"

    ' Überprüfe, ob der Quellordner existiert
    If Dir(sourceFolder, vbDirectory) = "" Then
        MsgBox "Der Quellordner existiert nicht.", vbExclamation
        Exit Sub
    End If

    ' Überprüfe, ob der Zielordner existiert, falls nicht, erstelle ihn
    If Dir(targetFolder, vbDirectory) = "" Then
        MkDir targetFolder
    End If

    ' Schleife durch alle .doc-Dateien im Quellordner
    fileName = Dir(sourceFolder & "*.doc")
    Do While fileName <> ""
        ' Öffne das Quelldokument
        Set sourceDoc = Documents.Open(sourceFolder & fileName)

        ' Konvertiere das Dokument in das .docx-Format
        sourceDoc.Convert
        sourceDoc.SaveAs2 targetFolder & Replace(fileName, ".doc", ".docx"), WdSaveFormat.wdFormatXMLDocument

        ' Schließe das Quelldokument
        sourceDoc.Close

        ' Gehe zum nächsten Dokument
        fileName = Dir
    Loop

    MsgBox "Die Konvertierung wurde abgeschlossen.", vbInformation
End Sub
 

Excel Facts

Whats the difference between CONCAT and CONCATENATE?
The newer CONCAT function can reference a range of cells. =CONCATENATE(A1,A2,A3,A4,A5) becomes =CONCAT(A1:A5)
VBA Code:
Sub ConvertDocToDocx()
Application.ScreenUpdating = False
Dim SrcFldr As String, TgtFldr As String, DocSrc As Document, StrNm As String
' Zu einem Ordner navigieren
SrcFldr = GetFolder: If SrcFldr = "" Then Exit Sub: TgtFldr = SrcFldr & " neu\"
' Überprüfe, ob der Zielordner existiert, falls nicht, erstelle ihn
If Dir(TgtFldr, vbDirectory) = "" Then MkDir TgtFldr
' Schleife durch alle .doc-Dateien im Quellordner
StrNm = Dir(StrPth & "\*.doc", vbNormal)
While StrNm <> ""
  ' Öffne das Quelldokument
  Set DocSrc = Documents.Open(fileName:=StrPth & StrNm, AddToRecentFiles:=False, Visible:=False)
  With DocSrc
    If .HasVBProject Then
    ' Konvertiere das Dokument in das .docm-Format
    .SaveAs2 fileName:=TgtFldr & .Name & "m", Fileformat:=wdFormatXMLDocumentMacroEnabled, _
      CompatabilityMode:=wdWord2003, AddToRecentFiles:=False
  Else
    ' Konvertiere das Dokument in das .docx-Format
    .SaveAs2 fileName:=TgtFldr & .Name & "x", Fileformat:=wdFormatXMLDocument, _
      CompatabilityMode:=wdWord2003, AddToRecentFiles:=False
  End If
    ' Schließe das Quelldokument
    .Close False
  End With
  ' Gehe zum nächsten Dokument
  StrNm = Dir()
Wend
Application.ScreenUpdating = True
MsgBox "Die Konvertierung wurde abgeschlossen.", vbInformation
End Sub

Function GetFolder() As String
Dim oFolder As Object
GetFolder = ""
Set oFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Wählen Sie einen Ordner", 0)
If (Not oFolder Is Nothing) Then GetFolder = oFolder.Items.Item.Path
Set oFolder = Nothing
End Function
 
Upvote 0
Ich danke dir schonmal für deine Hilfe.
Eine kurze Erklärung wäre nett. Wo genau füge ich den Link zu den Ordnern ein?
Ich möchte den Ziel Ordner und den Endordner wie in meinem macro definieren.
 
Upvote 0
Mit dem von mir geposteten VBA müssen Quell- oder Zielordner nicht definiert werden; es ermöglicht die Auswahl eines beliebigen Quellordners und erstellt darunter automatisch einen neuen Ordner für die Ausgabe, sofern noch keiner vorhanden ist (TgtFldr = SrcFldr & " neu\").
 
Upvote 0
Ja das hab ich soweit verstanden.
Bei Funktion GetFolder() muss ich bei "Wählen Sie einen Ordner" den Link zu meinem Ordner einfügen.

Dann kommt allerdings "Fehler beim Kompilieren: Benanntes Argument nicht gefunden"
an der Stelle CompatabilityMode:=
 
Upvote 0
Nein, Sie fügen überhaupt keinen Link ein. Sie führen lediglich das Makro wie codiert aus und wählen den Quellordner aus.
 
Upvote 0
Okey auch verstanden, es sollte nach start des Markos ein Fenster aufgehen, in dem ich den Ordner auswähle.

Bei Start des Markos kommt allerdings "Fehler beim Kompilieren: Benanntes Argument nicht gefunden"
an der Stelle CompatabilityMode:=
 
Upvote 0
Sorry aber mit so halben Sätzen kann ich nicht viel Anfangen, da ich kein VBA Profi bin...

Wenn ich Typo: davor einfüge kommt Syntaxfehler
 
Upvote 0

Forum statistics

Threads
1,226,281
Messages
6,190,044
Members
453,589
Latest member
frdranger25401

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top