powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Письмо в Word / замена текста
11 сообщений из 11, страница 1 из 1
Письмо в Word / замена текста
    #39678982
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, Уважаемые форумчане!

Слёзно прошу поскорее помочь разобраться как прально из под акса с вордом общаться
Из интернетов и поисков по форуму скомпоновал такую конструкцию:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
Sub imprtMl(mail As Long)
Dim Fname, FnameTmp, sql, list As String
Dim rs_ml, rs_pl, rs_auth As DAO.Recordset
Dim objWord As Object 'Word.Application
    On Error Resume Next
    Set objWord = GetObject(, "Word.Application")
    If objWord Is Nothing Then
        Set objWord = CreateObject("Word.Application")
        If objWord Is Nothing Then
            MsgBox "MS Word is not installed on your computer"
        End If
    End If
    objWord.Visible = True

sql = "Select * from pln_mail "
Set rs_ml = CurrentDb.OpenRecordset(pln_sql)
Set rs_pl = CurrentDb.OpenRecordset("list_for_mail")
Set rs_auth = CurrentDb.OpenRecordset("Property Auth")
rs_pl.FindFirst "pln_main.ml = " & mail
rs_ml.FindFirst "ID = " & mail
rs_auth.FindFirst "id = " & rs_ml!reg

Do While rs_pl.NoMatch = False
        list = list & rs_pl!IDobj & rs_pl!type_obj & rs_pl!shortname & _
             rs_pl!yr & rs_pl!type_work & rs_pl!type_kpp & _
             rs_pl!namemn & rs_pl!KM & rs_pl!type_line & vbCrLf
        rs_pl.FindNext "pln_main.ml = " & mail
Loop

FnameTmp = "\\CPS01-FSDFS-01\Files\Documents\Ml_Remarks_01.docx"
Fname = "C:\Users\Desktop\testdoc.docx"
    objWord.Open FnameTmp
    objWord.Documents.Add (FnameTmp)
    
    
    objWord.ActiveDocument.SaveAs Fname


With objWord.Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Wrap = objWord.wdFindContinue
    .Forward = True
    .Text = "%SPEC%"
    Do While .Execute = True
        .Parent.HomeKey Unit:=objWord.wdLine
        .Parent.MoveDown Unit:=objWord.wdLine, Count:=2, Extend:=objWord.wdMove
    Loop
    .InsertAfter rs_auth!ToSpec
End With
'///////////дальше вдохновение кончилось//////////

Set rs_pl = Nothing
Set rs_ml = Nothing
Set rs_auth = Nothing
End Sub



Таким образом у меня следующая картинка маслом:
1. Открыть приложение
2. Открыть файл-шаблон
3. Найти заменяемые слова
//////я сейчас тут///////////
4. Заменить их на рабочие строки
5. PROFIT

Помогите пожалуйста закончить эту штуку и подскажите как правильно рукой водить синеньким из под красненького!

PS: огрехи кода типа бессмысленной переменной sql вижу, просто переписывать буду потом

____
vk.com/taenfox
...
Рейтинг: 0 / 0
Письмо в Word / замена текста
    #39678985
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, эти строчки ваапще не понял, написал потому что так было написано, но работает

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
With objWord.Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Wrap = objWord.wdFindContinue
    .Forward = True
    .Text = "%SPEC%"
    Do While .Execute = True
        .Parent.HomeKey Unit:=objWord.wdLine
        .Parent.MoveDown Unit:=objWord.wdLine, Count:=2, Extend:=objWord.wdMove
    Loop
    .InsertAfter rs_auth!ToSpec
End With
...
Рейтинг: 0 / 0
Письмо в Word / замена текста
    #39679041
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Недостающий для счастья кусочек кода
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
With objWord.Selection.Find
    .ClearFormatting
    .Text = "%SPEC%"
    .Replacement.Text = rs_auth!ToSpec
    .Forward = True
    .Wrap = 1
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    .Execute Replace:=2
End With
...
Рейтинг: 0 / 0
Письмо в Word / замена текста
    #39679121
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А ещё

Почему string, в которую я натолкал vbcrlf и chr(10) в ворд попадает одной строкой с символом квадрата
...
Рейтинг: 0 / 0
Письмо в Word / замена текста
    #39679267
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MokeevPА ещё

Почему string, в которую я натолкал vbcrlf и chr(10) в ворд попадает одной строкой с символом квадрата
не претендую на истину.....но вроде chr(10) надо бы вместе с chr(13) пихать.... а vbcrlf тут имхо не по теме....
...
Рейтинг: 0 / 0
Письмо в Word / замена текста
    #39679388
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Serg197311MokeevPА ещё

Почему string, в которую я натолкал vbcrlf и chr(10) в ворд попадает одной строкой с символом квадрата
не претендую на истину.....но вроде chr(10) надо бы вместе с chr(13) пихать.... а vbcrlf тут имхо не по теме....

Не знаю как там с истиной дела, но работает, спасибо!
Код: vbnet
1.
& Chr(10) & Chr(13)


А почему vbCrLf не по теме?

Продолжаю принимать ЦУ
...
Рейтинг: 0 / 0
Письмо в Word / замена текста
    #39679393
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
& Chr(10) & Chr(13)


Если набираю полную строку и заменяю ей тэг то список, который я хотел сделать, остаётся только на первой строке
А также chr(10) подмешивает свой квадрат и его не нужно использовать (написал всё ок, потому что в старом коде уже есть перенос строки и получалась дополнительная строка)

в итоге решение получилось таким:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Do While rs_pl.NoMatch = False
        With objWord.Selection.Find
            .ClearFormatting
            .Replacement.ClearFormatting
            .Wrap = objWord.wdFindContinue
            .Forward = True
            .Text = "%LIST%"
            Do While .Execute = True
                .Parent.HomeKey Unit:=objWord.wdLine
                .Parent.MoveDown Unit:=objWord.wdLine, Count:=2, Extend:=objWord.wdMove
            Loop
        End With
        Call repInWd(objWord, "%LIST%", "")
        objWord.Selection.typetext rs_pl!IDobj & rs_pl!type_obj & rs_pl!shortname & _
             rs_pl!yr & rs_pl!type_work & rs_pl!type_kpp & _
             rs_pl!namemn & rs_pl!KM & rs_pl!type_line
        rs_pl.FindNext "pln_main.ml = " & mail
        If rs_pl.NoMatch = False Then objWord.Selection.typetext Chr(10)
Loop



и при таком использовании chr(10) не даёт дурной символ
...
Рейтинг: 0 / 0
Письмо в Word / замена текста
    #39679401
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри вот это. Несколько советов по созданию документов в Word из Access Вот это Вам пригодится
...
Рейтинг: 0 / 0
Письмо в Word / замена текста
    #39679409
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JossПосмотри вот это. Несколько советов по созданию документов в Word из Access Вот это Вам пригодится

Спасибо, я это уже распечатал и использую, но опыта для всеобъемлющего понимания не хватает
...
Рейтинг: 0 / 0
Письмо в Word / замена текста
    #39679430
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опыт придёт со временем. А пример смотрели?
...
Рейтинг: 0 / 0
Письмо в Word / замена текста
    #39679526
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Joss, посмотрел, но тоже как то туго в голову входит
Как то с таблицами всё понятнее, вжух и влетает, а ворд - одна сплошная беда для меня (в плане VBA, так то норм)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Письмо в Word / замена текста
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]