Название темы должно отражать суть задачи.
Темы типа "ПОМОГИТЕ!!!", "Срочно!" и т.п. будут удаляться без объяснения причин
Цитата: Sammus от 10.04.2026, 22:52:53Что-то не работает.логично. Это потому, что файлы сразу не выкладываете и помогающим надо все самим выдумывать.
objTxtFile.LineSeparator = -1надо "-1" заменить на 10. Тогда все заработает.Цитата: Дмитрий Щербаков(The_Prist) от 10.04.2026, 13:15:58Не очень понимаю такой лени, честно.
Цитата: Sammus от 09.04.2026, 04:25:39Заранее благодарюэм...Ну очень странно выглядит "просьба"...
)Цитата: Sammus от 09.04.2026, 15:24:00Проблема с цифрами. Что-то похожее с SRT видел. Но там пользовали Excel IsNumericв VBA тоже это есть. Поэтому все равно не понимаю сложностей.
Sub ConvertUTF8SrtToRTF()
Dim x
Dim objTxtFile As Object
Dim sNewText$, sNewFN$, st$, lf&
Dim oDoc As Document
Dim IsAdd As Boolean
'диалог выбора текстовых файлов. Подробнее:
' https://www.excel-vba.ru/chto-umeet-excel/dialogovoe-okno-vybora-fajlovpapki/
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.Title = "Выбрать файлы srt"
.Filters.Clear
.Filters.Add "SRT files", "*.srt*", 1
.FilterIndex = 1
.InitialFileName = ActiveDocument.Path
.InitialView = msoFileDialogViewDetails
If .Show = 0 Then Exit Sub
For lf = 1 To .SelectedItems.Count
x = .SelectedItems(lf) '
sNewFN = Replace(x, ".srt", ".") & "rtf"
sNewText = Empty
Set objTxtFile = CreateObject("ADODB.Stream")
objTxtFile.Type = 2
objTxtFile.Charset = "utf-8"
objTxtFile.LineSeparator = -1
objTxtFile.Open
objTxtFile.LoadFromFile x
objTxtFile.Position = 0
Do Until objTxtFile.EOS
st = objTxtFile.ReadText(-2)
IsAdd = True
If Len(st) = 0 Then
IsAdd = False
End If
If IsNumeric(st) Then
IsAdd = False
End If
If InStr(1, st, "-->", 1) > 0 Then
IsAdd = False
End If
If IsAdd Then
If Len(sNewText) Then
sNewText = sNewText & chr(13) & st
Else
sNewText = st
End If
End If
Loop
'закрываем текстовый файл
objTxtFile.Close
'создаем новый файл rtf
Set oDoc = Application.Documents.Add
oDoc.Range.Text = sNewText
oDoc.SaveAs2 sNewFN, wdFormatRTF
oDoc.Close 0
Next
End With
Set objTxtFile = Nothing
MsgBox "Данные всех файлов обработаны", vbInformation, "www.excel-vba.ru"
End Subс плюшками вроде отключения обновления экрана и т.п. уже сами.Set myWord = CreateObject("Word.Application")
....
myWord.Documents("Паспорт " & "Опоры.docx").Close SaveChanges:=wdSaveChanges
При таком варианте файл благополучно закрылся, но само приложение Word осталось открытым. Его закрывать нужно в случае необходимости отдельной командой {переменная с объектом "Word.Application"}.Quit