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

Слёзно прошу поскорее помочь разобраться как прально из под акса с вордом общаться
Из интернетов и поисков по форуму скомпоновал такую конструкцию:
Код: 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
25.07.2018, 15:04
    #39678985
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Письмо в Word / замена текста
Кстати, эти строчки ваапще не понял, написал потому что так было написано, но работает

Код: 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
25.07.2018, 15:50
    #39679041
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Письмо в Word / замена текста
Недостающий для счастья кусочек кода
Код: 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
25.07.2018, 16:47
    #39679121
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Письмо в Word / замена текста
А ещё

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

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

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

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


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

Продолжаю принимать ЦУ
...
Рейтинг: 0 / 0
26.07.2018, 08:55
    #39679393
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Письмо в Word / замена текста
Код: 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
26.07.2018, 09:12
    #39679401
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Письмо в Word / замена текста
Посмотри вот это. Несколько советов по созданию документов в Word из Access Вот это Вам пригодится
...
Рейтинг: 0 / 0
26.07.2018, 09:29
    #39679409
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Письмо в Word / замена текста
JossПосмотри вот это. Несколько советов по созданию документов в Word из Access Вот это Вам пригодится

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


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