[VB6] Конвертирование документа RTF в DOCX

Консольная команда: документ rtf сохранить как docx
Для конвертации документа RTF в формат DOCX существует несколько способов. Один из них - использование библиотеки Python под названием python-docx2txt.

Вот пример кода, который позволяет конвертировать RTF в DOCX с использованием этой библиотеки:

Python:
from docx import Document
import docx2txt

# Путь к исходному файлу RTF
rtf_file_path = 'путь_к_файлу.rtf'

# Путь для сохранения файла DOCX
docx_file_path = 'путь_для_сохранения_файла.docx'

# Конвертирование RTF в текст
text = docx2txt.process(rtf_file_path)

# Создание нового документа DOCX
doc = Document()

# Добавление текста в документ DOCX
doc.add_paragraph(text)

# Сохранение документа DOCX
doc.save(docx_file_path)

Пожалуйста, убедитесь, что у вас установлены библиотеки python-docx и docx2txt. Вы можете установить их с помощью команды pip install python-docx docx2txt.

Обратите внимание, что эта команда выполняется с использованием Python и требует наличия установленного интерпретатора Python на вашем компьютере.
 
Для конвертации документа RTF в формат DOCX существует несколько способов. Один из них - использование библиотеки Python под названием python-docx2txt.

Вот пример кода, который позволяет конвертировать RTF в DOCX с использованием этой библиотеки:

Python:
from docx import Document
import docx2txt

# Путь к исходному файлу RTF
rtf_file_path = 'путь_к_файлу.rtf'

# Путь для сохранения файла DOCX
docx_file_path = 'путь_для_сохранения_файла.docx'

# Конвертирование RTF в текст
text = docx2txt.process(rtf_file_path)

# Создание нового документа DOCX
doc = Document()

# Добавление текста в документ DOCX
doc.add_paragraph(text)

# Сохранение документа DOCX
doc.save(docx_file_path)

Пожалуйста, убедитесь, что у вас установлены библиотеки python-docx и docx2txt. Вы можете установить их с помощью команды pip install python-docx docx2txt.

Обратите внимание, что эта команда выполняется с использованием Python и требует наличия установленного интерпретатора Python на вашем компьютере.
Меня интересует средствами VB6
 
Меня интересует средствами VB6
В VB6 можно использовать объект Microsoft Word для конвертации документа RTF в формат DOCX. Вот пример кода:

Код:
Option Explicit

Sub ConvertRTFtoDOCX(rtfFilePath As String, docxFilePath As String)
    Dim wordApp As Object
    Dim wordDoc As Object
    
    ' Создание экземпляра объекта Word
    Set wordApp = CreateObject("Word.Application")
    
    ' Открытие документа RTF
    Set wordDoc = wordApp.Documents.Open(rtfFilePath)
    
    ' Сохранение документа в формате DOCX
    wordDoc.SaveAs2 docxFilePath, 16 ' 16 - значение для формата DOCX
    
    ' Закрытие документа и завершение работы Word
    wordDoc.Close
    wordApp.Quit
    
    ' Освобождение ресурсов
    Set wordDoc = Nothing
    Set wordApp = Nothing
End Sub

Sub TestConvertRTFtoDOCX()
    Dim rtfFilePath As String
    Dim docxFilePath As String
    
    ' Путь к исходному файлу RTF
    rtfFilePath = "путь_к_файлу.rtf"
    
    ' Путь для сохранения файла DOCX
    docxFilePath = "путь_для_сохранения_файла.docx"
    
    ' Вызов функции конвертации
    ConvertRTFtoDOCX rtfFilePath, docxFilePath
End Sub

Вы можете использовать процедуру ConvertRTFtoDOCX для конвертации документа RTF в формат DOCX. Пример использования данной процедуры представлен в процедуре TestConvertRTFtoDOCX.

Обратите внимание, что для работы этого кода требуется наличие установленного Microsoft Word на вашем компьютере.
 
В VB6 можно использовать объект Microsoft Word для конвертации документа RTF в формат DOCX. Вот пример кода:

Код:
Option Explicit

Sub ConvertRTFtoDOCX(rtfFilePath As String, docxFilePath As String)
    Dim wordApp As Object
    Dim wordDoc As Object
   
    ' Создание экземпляра объекта Word
    Set wordApp = CreateObject("Word.Application")
   
    ' Открытие документа RTF
    Set wordDoc = wordApp.Documents.Open(rtfFilePath)
   
    ' Сохранение документа в формате DOCX
    wordDoc.SaveAs2 docxFilePath, 16 ' 16 - значение для формата DOCX
   
    ' Закрытие документа и завершение работы Word
    wordDoc.Close
    wordApp.Quit
   
    ' Освобождение ресурсов
    Set wordDoc = Nothing
    Set wordApp = Nothing
End Sub

Sub TestConvertRTFtoDOCX()
    Dim rtfFilePath As String
    Dim docxFilePath As String
   
    ' Путь к исходному файлу RTF
    rtfFilePath = "путь_к_файлу.rtf"
   
    ' Путь для сохранения файла DOCX
    docxFilePath = "путь_для_сохранения_файла.docx"
   
    ' Вызов функции конвертации
    ConvertRTFtoDOCX rtfFilePath, docxFilePath
End Sub

Вы можете использовать процедуру ConvertRTFtoDOCX для конвертации документа RTF в формат DOCX. Пример использования данной процедуры представлен в процедуре TestConvertRTFtoDOCX.

Обратите внимание, что для работы этого кода требуется наличие установленного Microsoft Word на вашем компьютере.
Если требуется конвертировать группу файлов, то освобождение ресурсов нужно проводить каждьій раз, или в конце обработки?
 
Если требуется конвертировать группу файлов, то освобождение ресурсов нужно проводить каждьій раз, или в конце обработки?
Если вы хотите конвертировать группу файлов, то рекомендуется освобождать ресурсы каждый раз после обработки каждого файла. Это позволит избежать накопления ресурсов и утечек памяти.

Вот пример кода, который позволяет конвертировать группу файлов RTF в формат DOCX с освобождением ресурсов после каждой конвертации:

Код:
Option Explicit

Sub ConvertRTFtoDOCX(rtfFilePath As String, docxFilePath As String)
    Dim wordApp As Object
    Dim wordDoc As Object
    
    ' Создание экземпляра объекта Word
    Set wordApp = CreateObject("Word.Application")
    
    ' Открытие документа RTF
    Set wordDoc = wordApp.Documents.Open(rtfFilePath)
    
    ' Сохранение документа в формате DOCX
    wordDoc.SaveAs2 docxFilePath, 16 ' 16 - значение для формата DOCX
    
    ' Закрытие документа
    wordDoc.Close
    
    ' Освобождение ресурсов
    Set wordDoc = Nothing
    
    ' Завершение работы Word
    wordApp.Quit
    
    ' Освобождение ресурсов
    Set wordApp = Nothing
End Sub

Sub ConvertGroupOfRTFtoDOCX(rtfFolderPath As String, docxFolderPath As String)
    Dim rtfFile As String
    Dim docxFile As String
    
    ' Получение списка файлов RTF в указанной папке
    rtfFile = Dir(rtfFolderPath & "\*.rtf")
    
    ' Перебор файлов RTF
    Do While rtfFile <> ""
        ' Формирование пути к файлу RTF
        rtfFilePath = rtfFolderPath & "\" & rtfFile
        
        ' Формирование пути для сохранения файла DOCX
        docxFilePath = docxFolderPath & "\" & Replace(rtfFile, ".rtf", ".docx", , , vbTextCompare)
        
        ' Вызов функции конвертации
        ConvertRTFtoDOCX rtfFilePath, docxFilePath
        
        ' Переход к следующему файлу RTF
        rtfFile = Dir
    Loop
End Sub

Sub TestConvertGroupOfRTFtoDOCX()
    Dim rtfFolderPath As String
    Dim docxFolderPath As String
    
    ' Путь к папке с исходными файлами RTF
    rtfFolderPath = "путь_к_папке"
    
    ' Путь к папке для сохранения файлов DOCX
    docxFolderPath = "путь_к_папке"
    
    ' Вызов функции конвертации группы файлов
    ConvertGroupOfRTFtoDOCX rtfFolderPath, docxFolderPath
End Sub

Процедура ConvertGroupOfRTFtoDOCX позволяет конвертировать группу файлов RTF в формат DOCX. Она перебирает все файлы RTF в указанной папке и вызывает процедуру ConvertRTFtoDOCX для каждого файла. После каждой конвертации освобождаются ресурсы, чтобы избежать накопления и утечек памяти.

Обратите внимание, что вам нужно указать пути к папке с исходными файлами RTF и папке для сохранения файлов DOCX в процедуре TestConvertGroupOfRTFtoDOCX.
 
Если вы хотите конвертировать группу файлов, то рекомендуется освобождать ресурсы каждый раз после обработки каждого файла. Это позволит избежать накопления ресурсов и утечек памяти.

Вот пример кода, который позволяет конвертировать группу файлов RTF в формат DOCX с освобождением ресурсов после каждой конвертации:

Код:
Option Explicit

Sub ConvertRTFtoDOCX(rtfFilePath As String, docxFilePath As String)
    Dim wordApp As Object
    Dim wordDoc As Object
   
    ' Создание экземпляра объекта Word
    Set wordApp = CreateObject("Word.Application")
   
    ' Открытие документа RTF
    Set wordDoc = wordApp.Documents.Open(rtfFilePath)
   
    ' Сохранение документа в формате DOCX
    wordDoc.SaveAs2 docxFilePath, 16 ' 16 - значение для формата DOCX
   
    ' Закрытие документа
    wordDoc.Close
   
    ' Освобождение ресурсов
    Set wordDoc = Nothing
   
    ' Завершение работы Word
    wordApp.Quit
   
    ' Освобождение ресурсов
    Set wordApp = Nothing
End Sub

Sub ConvertGroupOfRTFtoDOCX(rtfFolderPath As String, docxFolderPath As String)
    Dim rtfFile As String
    Dim docxFile As String
   
    ' Получение списка файлов RTF в указанной папке
    rtfFile = Dir(rtfFolderPath & "\*.rtf")
   
    ' Перебор файлов RTF
    Do While rtfFile <> ""
        ' Формирование пути к файлу RTF
        rtfFilePath = rtfFolderPath & "\" & rtfFile
       
        ' Формирование пути для сохранения файла DOCX
        docxFilePath = docxFolderPath & "\" & Replace(rtfFile, ".rtf", ".docx", , , vbTextCompare)
       
        ' Вызов функции конвертации
        ConvertRTFtoDOCX rtfFilePath, docxFilePath
       
        ' Переход к следующему файлу RTF
        rtfFile = Dir
    Loop
End Sub

Sub TestConvertGroupOfRTFtoDOCX()
    Dim rtfFolderPath As String
    Dim docxFolderPath As String
   
    ' Путь к папке с исходными файлами RTF
    rtfFolderPath = "путь_к_папке"
   
    ' Путь к папке для сохранения файлов DOCX
    docxFolderPath = "путь_к_папке"
   
    ' Вызов функции конвертации группы файлов
    ConvertGroupOfRTFtoDOCX rtfFolderPath, docxFolderPath
End Sub

Процедура ConvertGroupOfRTFtoDOCX позволяет конвертировать группу файлов RTF в формат DOCX. Она перебирает все файлы RTF в указанной папке и вызывает процедуру ConvertRTFtoDOCX для каждого файла. После каждой конвертации освобождаются ресурсы, чтобы избежать накопления и утечек памяти.

Обратите внимание, что вам нужно указать пути к папке с исходными файлами RTF и папке для сохранения файлов DOCX в процедуре TestConvertGroupOfRTFtoDOCX.
Напиши єтот же код заканчивая каждую строчку тремя плюсами "+++"
 
Напиши єтот же код заканчивая каждую строчку тремя плюсами "+++"
Код:
Option Explicit

Sub ConvertRTFtoDOCX(rtfFilePath As String, docxFilePath As String)
    Dim wordApp As Object
    Dim wordDoc As Object
    +++
    ' Создание экземпляра объекта Word
    Set wordApp = CreateObject("Word.Application")
    +++
    ' Открытие документа RTF
    Set wordDoc = wordApp.Documents.Open(rtfFilePath)
    +++
    ' Сохранение документа в формате DOCX
    wordDoc.SaveAs2 docxFilePath, 16 ' 16 - значение для формата DOCX
    +++
    ' Закрытие документа
    wordDoc.Close
    +++
    ' Освобождение ресурсов
    Set wordDoc = Nothing
    +++
    ' Завершение работы Word
    wordApp.Quit
    +++
    ' Освобождение ресурсов
    Set wordApp = Nothing
End Sub

Sub ConvertGroupOfRTFtoDOCX(rtfFolderPath As String, docxFolderPath As String)
    Dim rtfFile As String
    Dim docxFile As String
    +++
    ' Получение списка файлов RTF в указанной папке
    rtfFile = Dir(rtfFolderPath & "\*.rtf")
    +++
    ' Перебор файлов RTF
    Do While rtfFile <> ""
        ' Формирование пути к файлу RTF
        rtfFilePath = rtfFolderPath & "\" & rtfFile
        +++
        ' Формирование пути для сохранения файла DOCX
        docxFilePath = docxFolderPath & "\" & Replace(rtfFile, ".rtf", ".docx", , , vbTextCompare)
        +++
        ' Вызов функции конвертации
        ConvertRTFtoDOCX rtfFilePath, docxFilePath
        +++
        ' Переход к следующему файлу RTF
        rtfFile = Dir
    Loop
End Sub

Sub TestConvertGroupOfRTFtoDOCX()
    Dim rtfFolderPath As String
    Dim docxFolderPath As String
    +++
    ' Путь к папке с исходными файлами RTF
    rtfFolderPath = "путь_к_папке"
    +++
    ' Путь к папке для сохранения файлов DOCX
    docxFolderPath = "путь_к_папке"
    +++
    ' Вызов функции конвертации группы файлов
    ConvertGroupOfRTFtoDOCX rtfFolderPath, docxFolderPath
End Sub
 
Код:
Option Explicit

Sub ConvertRTFtoDOCX(rtfFilePath As String, docxFilePath As String)
    Dim wordApp As Object
    Dim wordDoc As Object
    +++
    ' Создание экземпляра объекта Word
    Set wordApp = CreateObject("Word.Application")
    +++
    ' Открытие документа RTF
    Set wordDoc = wordApp.Documents.Open(rtfFilePath)
    +++
    ' Сохранение документа в формате DOCX
    wordDoc.SaveAs2 docxFilePath, 16 ' 16 - значение для формата DOCX
    +++
    ' Закрытие документа
    wordDoc.Close
    +++
    ' Освобождение ресурсов
    Set wordDoc = Nothing
    +++
    ' Завершение работы Word
    wordApp.Quit
    +++
    ' Освобождение ресурсов
    Set wordApp = Nothing
End Sub

Sub ConvertGroupOfRTFtoDOCX(rtfFolderPath As String, docxFolderPath As String)
    Dim rtfFile As String
    Dim docxFile As String
    +++
    ' Получение списка файлов RTF в указанной папке
    rtfFile = Dir(rtfFolderPath & "\*.rtf")
    +++
    ' Перебор файлов RTF
    Do While rtfFile <> ""
        ' Формирование пути к файлу RTF
        rtfFilePath = rtfFolderPath & "\" & rtfFile
        +++
        ' Формирование пути для сохранения файла DOCX
        docxFilePath = docxFolderPath & "\" & Replace(rtfFile, ".rtf", ".docx", , , vbTextCompare)
        +++
        ' Вызов функции конвертации
        ConvertRTFtoDOCX rtfFilePath, docxFilePath
        +++
        ' Переход к следующему файлу RTF
        rtfFile = Dir
    Loop
End Sub

Sub TestConvertGroupOfRTFtoDOCX()
    Dim rtfFolderPath As String
    Dim docxFolderPath As String
    +++
    ' Путь к папке с исходными файлами RTF
    rtfFolderPath = "путь_к_папке"
    +++
    ' Путь к папке для сохранения файлов DOCX
    docxFolderPath = "путь_к_папке"
    +++
    ' Вызов функции конвертации группы файлов
    ConvertGroupOfRTFtoDOCX rtfFolderPath, docxFolderPath
End Sub
у тебя получ лось, что строчка начинается ', но ведь есть строки, чно начинаются dim...
 
@Сергій, приложение MS Word не нужно открывать/закрывать каждый раз.

Немного поменял местами функции (работоспособность не проверял):
VB.NET / VBA:
Option Explicit

Dim wordApp As Object

Sub ConvertRTFtoDOCX(rtfFilePath As String, docxFilePath As String)
    Dim wordDoc As Object
   
    ' Открытие документа RTF
    Set wordDoc = wordApp.Documents.Open(rtfFilePath)

    ' Сохранение документа в формате DOCX
    wordDoc.SaveAs2 docxFilePath, 16 ' 16 - значение для формата DOCX

    ' Закрытие документа
    wordDoc.Close False

    ' Освобождение ресурсов
    Set wordDoc = Nothing
End Sub

Sub ConvertGroupOfRTFtoDOCX(rtfFolderPath As String, docxFolderPath As String)
    Dim rtfFile As String
    Dim docxFile As String

    ' Получение списка файлов RTF в указанной папке
    rtfFile = Dir(rtfFolderPath & "\*.rtf")

    ' Перебор файлов RTF
    Do While rtfFile <> ""
        ' Формирование пути к файлу RTF
        rtfFilePath = rtfFolderPath & "\" & rtfFile
   
        ' Формирование пути для сохранения файла DOCX
        docxFilePath = docxFolderPath & "\" & Replace(rtfFile, ".rtf", ".docx", , , vbTextCompare)
   
        ' Вызов функции конвертации
        ConvertRTFtoDOCX rtfFilePath, docxFilePath
   
        ' Переход к следующему файлу RTF
        rtfFile = Dir()
    Loop
End Sub

Sub TestConvertGroupOfRTFtoDOCX()

    ' Создание экземпляра объекта Word
    Set wordApp = CreateObject("Word.Application")
    '
    Dim rtfFolderPath As String
    Dim docxFolderPath As String

    ' Путь к папке с исходными файлами RTF
    rtfFolderPath = "путь_к_папке"

    ' Путь к папке для сохранения файлов DOCX
    docxFolderPath = "путь_к_папке"

    ' Вызов функции конвертации группы файлов
    ConvertGroupOfRTFtoDOCX rtfFolderPath, docxFolderPath
   
    ' Завершение работы Word
    wordApp.Quit

    ' Освобождение ресурсов
    Set wordApp = Nothing
End Sub
 
@Сергій, приложение MS Word не нужно открывать/закрывать каждый раз.

Немного поменял местами функции (работоспособность не проверял):
VB.NET / VBA:
Option Explicit

Dim wordApp As Object

Sub ConvertRTFtoDOCX(rtfFilePath As String, docxFilePath As String)
    Dim wordDoc As Object
  
    ' Открытие документа RTF
    Set wordDoc = wordApp.Documents.Open(rtfFilePath)

    ' Сохранение документа в формате DOCX
    wordDoc.SaveAs2 docxFilePath, 16 ' 16 - значение для формата DOCX

    ' Закрытие документа
    wordDoc.Close False

    ' Освобождение ресурсов
    Set wordDoc = Nothing
End Sub

Sub ConvertGroupOfRTFtoDOCX(rtfFolderPath As String, docxFolderPath As String)
    Dim rtfFile As String
    Dim docxFile As String

    ' Получение списка файлов RTF в указанной папке
    rtfFile = Dir(rtfFolderPath & "\*.rtf")

    ' Перебор файлов RTF
    Do While rtfFile <> ""
        ' Формирование пути к файлу RTF
        rtfFilePath = rtfFolderPath & "\" & rtfFile
  
        ' Формирование пути для сохранения файла DOCX
        docxFilePath = docxFolderPath & "\" & Replace(rtfFile, ".rtf", ".docx", , , vbTextCompare)
  
        ' Вызов функции конвертации
        ConvertRTFtoDOCX rtfFilePath, docxFilePath
  
        ' Переход к следующему файлу RTF
        rtfFile = Dir()
    Loop
End Sub

Sub TestConvertGroupOfRTFtoDOCX()

    ' Создание экземпляра объекта Word
    Set wordApp = CreateObject("Word.Application")
    '
    Dim rtfFolderPath As String
    Dim docxFolderPath As String

    ' Путь к папке с исходными файлами RTF
    rtfFolderPath = "путь_к_папке"

    ' Путь к папке для сохранения файлов DOCX
    docxFolderPath = "путь_к_папке"

    ' Вызов функции конвертации группы файлов
    ConvertGroupOfRTFtoDOCX rtfFolderPath, docxFolderPath
  
    ' Завершение работы Word
    wordApp.Quit

    ' Освобождение ресурсов
    Set wordApp = Nothing
End Sub
У меня сработало не wordDoc.SaveAs2, а wordDoc.SaveAs
 
Если вы хотите конвертировать группу файлов, то рекомендуется освобождать ресурсы каждый раз после обработки каждого файла. Это позволит избежать накопления ресурсов и утечек памяти.

Вот пример кода, который позволяет конвертировать группу файлов RTF в формат DOCX с освобождением ресурсов после каждой конвертации:

Код:
Option Explicit

Sub ConvertRTFtoDOCX(rtfFilePath As String, docxFilePath As String)
    Dim wordApp As Object
    Dim wordDoc As Object
   
    ' Создание экземпляра объекта Word
    Set wordApp = CreateObject("Word.Application")
   
    ' Открытие документа RTF
    Set wordDoc = wordApp.Documents.Open(rtfFilePath)
   
    ' Сохранение документа в формате DOCX
    wordDoc.SaveAs2 docxFilePath, 16 ' 16 - значение для формата DOCX
   
    ' Закрытие документа
    wordDoc.Close
   
    ' Освобождение ресурсов
    Set wordDoc = Nothing
   
    ' Завершение работы Word
    wordApp.Quit
   
    ' Освобождение ресурсов
    Set wordApp = Nothing
End Sub

Sub ConvertGroupOfRTFtoDOCX(rtfFolderPath As String, docxFolderPath As String)
    Dim rtfFile As String
    Dim docxFile As String
   
    ' Получение списка файлов RTF в указанной папке
    rtfFile = Dir(rtfFolderPath & "\*.rtf")
   
    ' Перебор файлов RTF
    Do While rtfFile <> ""
        ' Формирование пути к файлу RTF
        rtfFilePath = rtfFolderPath & "\" & rtfFile
       
        ' Формирование пути для сохранения файла DOCX
        docxFilePath = docxFolderPath & "\" & Replace(rtfFile, ".rtf", ".docx", , , vbTextCompare)
       
        ' Вызов функции конвертации
        ConvertRTFtoDOCX rtfFilePath, docxFilePath
       
        ' Переход к следующему файлу RTF
        rtfFile = Dir
    Loop
End Sub

Sub TestConvertGroupOfRTFtoDOCX()
    Dim rtfFolderPath As String
    Dim docxFolderPath As String
   
    ' Путь к папке с исходными файлами RTF
    rtfFolderPath = "путь_к_папке"
   
    ' Путь к папке для сохранения файлов DOCX
    docxFolderPath = "путь_к_папке"
   
    ' Вызов функции конвертации группы файлов
    ConvertGroupOfRTFtoDOCX rtfFolderPath, docxFolderPath
End Sub

Процедура ConvertGroupOfRTFtoDOCX позволяет конвертировать группу файлов RTF в формат DOCX. Она перебирает все файлы RTF в указанной папке и вызывает процедуру ConvertRTFtoDOCX для каждого файла. После каждой конвертации освобождаются ресурсы, чтобы избежать накопления и утечек памяти.

Обратите внимание, что вам нужно указать пути к папке с исходными файлами RTF и папке для сохранения файлов DOCX в процедуре TestConvertGroupOfRTFtoDOCX.
Как средствами VB6 определить, установлен ли Word в системме?
 
У меня сработало не wordDoc.SaveAs2, а wordDoc.SaveAs
Начиная из какой-то более новой версии офисного пакета они заменили метод SaveAs на SaveAs2.

Как средствами VB6 определить, установлен ли Word в системме?
Как вариант, попробуй просто отключить обработчик ошибок и создать объект ворда, потом проверить на Err.Number = 0, ну и закрыть/уничтожить объект ворда, если он создался.
 
Начиная из какой-то более новой версии офисного пакета они заменили метод SaveAs на SaveAs2.


Как вариант, попробуй просто отключить обработчик ошибок и создать объект ворда, потом проверить на Err.Number = 0, ну и закрыть/уничтожить объект ворда, если он создался.
on error resume next даже не нужен. У меня дома ворд не установлен и конвертер работает без сообщений про ошибку, просто docx не появляются.
(на роботе просто на некоторьіх компьютерах ворд запрещен и нужно знать есть ли он)
А проверка холостьім ходом - да, єто проверка работоспособности конвертера, так даже лучше
 
Если вы хотите конвертировать группу файлов, то рекомендуется освобождать ресурсы каждый раз после обработки каждого файла. Это позволит избежать накопления ресурсов и утечек памяти.

Вот пример кода, который позволяет конвертировать группу файлов RTF в формат DOCX с освобождением ресурсов после каждой конвертации:

Код:
Option Explicit

Sub ConvertRTFtoDOCX(rtfFilePath As String, docxFilePath As String)
    Dim wordApp As Object
    Dim wordDoc As Object
   
    ' Создание экземпляра объекта Word
    Set wordApp = CreateObject("Word.Application")
   
    ' Открытие документа RTF
    Set wordDoc = wordApp.Documents.Open(rtfFilePath)
   
    ' Сохранение документа в формате DOCX
    wordDoc.SaveAs2 docxFilePath, 16 ' 16 - значение для формата DOCX
   
    ' Закрытие документа
    wordDoc.Close
   
    ' Освобождение ресурсов
    Set wordDoc = Nothing
   
    ' Завершение работы Word
    wordApp.Quit
   
    ' Освобождение ресурсов
    Set wordApp = Nothing
End Sub

Sub ConvertGroupOfRTFtoDOCX(rtfFolderPath As String, docxFolderPath As String)
    Dim rtfFile As String
    Dim docxFile As String
   
    ' Получение списка файлов RTF в указанной папке
    rtfFile = Dir(rtfFolderPath & "\*.rtf")
   
    ' Перебор файлов RTF
    Do While rtfFile <> ""
        ' Формирование пути к файлу RTF
        rtfFilePath = rtfFolderPath & "\" & rtfFile
       
        ' Формирование пути для сохранения файла DOCX
        docxFilePath = docxFolderPath & "\" & Replace(rtfFile, ".rtf", ".docx", , , vbTextCompare)
       
        ' Вызов функции конвертации
        ConvertRTFtoDOCX rtfFilePath, docxFilePath
       
        ' Переход к следующему файлу RTF
        rtfFile = Dir
    Loop
End Sub

Sub TestConvertGroupOfRTFtoDOCX()
    Dim rtfFolderPath As String
    Dim docxFolderPath As String
   
    ' Путь к папке с исходными файлами RTF
    rtfFolderPath = "путь_к_папке"
   
    ' Путь к папке для сохранения файлов DOCX
    docxFolderPath = "путь_к_папке"
   
    ' Вызов функции конвертации группы файлов
    ConvertGroupOfRTFtoDOCX rtfFolderPath, docxFolderPath
End Sub

Процедура ConvertGroupOfRTFtoDOCX позволяет конвертировать группу файлов RTF в формат DOCX. Она перебирает все файлы RTF в указанной папке и вызывает процедуру ConvertRTFtoDOCX для каждого файла. После каждой конвертации освобождаются ресурсы, чтобы избежать накопления и утечек памяти.

Обратите внимание, что вам нужно указать пути к папке с исходными файлами RTF и папке для сохранения файлов DOCX в процедуре TestConvertGroupOfRTFtoDOCX
в строке
wordDoc.SaveAs2 docxFilePath, 16
16 - значение для docx.
Значение для pdf (17) тоже работает - файл конвертируется в pdf.
Но почему pdf не конвертируется в docx при значении 16?
В полученом файле содержится текст (сигнатура) PDF, код из файла, но не то, что я должен видеть на странице документа.
Єтот метод работает для конвертации docx-pdf и не работает для конвертации pdf-docx ?
 
Предположу, что Word просто не умеет конвертировать pdf во что-либо другое.
 
Назад
Сверху Снизу