Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PowerBuilder Новый топик    Ответить
 Black Savage как можно с вами связатся??  [new]
DIGITALPRO
Member

Откуда: РК, г.Сыктывкар
Сообщений: 348
Black Savage как можно с вами связатся???

На самом деле просто нужна Ваша помощь по поводу слияния в WORD
Не понятен один момент
27 сен 04, 09:28    [988338]     Ответить | Цитировать Сообщить модератору
 Re: Black Savage как можно с вами связатся??  [new]
Black Savage
Member

Откуда:
Сообщений: 736
Ну вот он я...
Спрашивай, отвечу здесь.
27 сен 04, 11:17    [988687]     Ответить | Цитировать Сообщить модератору
 Re: Black Savage как можно с вами связатся??  [new]
DIGITALPRO
Member

Откуда: РК, г.Сыктывкар
Сообщений: 348
Задача:
в текстовом файле есть некое кол-во записей, все записи с этого файла надо выкатить в документ Word. (с помошью слияния)

В принципе до файла я добрался и вывел на экран 1 запись (строку), а как сделать, что б все записи из файла шли друг за другом (столбцом в таблице) (команду NEXT в конце последнего поля т.е. в конце строки добавлял НЕПОМОГЛО))
Запрос может выдавать разное кол-во записей

заранее спасибо
27 сен 04, 11:26    [988723]     Ответить | Цитировать Сообщить модератору
 Re: Black Savage как можно с вами связатся??  [new]
Black Savage
Member

Откуда:
Сообщений: 736
У нас при выгрузке в текстовый файл получается вот что:
1. Первая строка - заголовок (используется для названий полей при делании слияния)
2. Идут строки данных, данные могут разделятся разными символами (выведено в интерфейс это для простоты)
3. При слиянии с Word, у вас получится, что для каждой строки данных из текстового файла будет "свой набор страниц Word -а". Т.е. сделали вы вордовский документ на двух страницах, тогда при слиянии будет для первой строки данных из текстового файла, две страницы вордового документа, для второй - теже самые страницы, но с другими данными. Это фича слияния.

Если вам надо выводить данные из текстового файла, выгруженного из программы в виде таблицы, то лучше всего это делать не в верде, а в экселе.
У нас при выгрузке данных можно задать в какой файл их грузить (обычно это текстовый файл) и каким файлом "запускать". Т.е. мы легко можем выгрузить данные из текстового файла либо в ворд либо в эксель, либо куда нужно.

Примерно так.
27 сен 04, 12:03    [988853]     Ответить | Цитировать Сообщить модератору
 Re: Black Savage как можно с вами связатся??  [new]
DIGITALPRO
Member

Откуда: РК, г.Сыктывкар
Сообщений: 348
При слиянии с Word, у вас получится, что для каждой строки данных из текстового файла будет "свой набор страниц Word -а". 

Я так понял что нельзя слить данные в одну таблицу на одной странице, тогда оч. жаль, мне нужен именно такой вариант
Клиент хочет видеть несколько запросов в виде нескольких таблиц (каждый запрос, отдельная таблица, идущая одна за другой) и именно в Word'e

Спасибо!!!

===============================
PB 9.0.1 (7236) ASA 9.0.0 (1312)
27 сен 04, 12:26    [988959]     Ответить | Цитировать Сообщить модератору
 Re: Black Savage как можно с вами связатся??  [new]
Black Savage
Member

Откуда:
Сообщений: 736
DIGITALPRO
Я так понял что нельзя слить данные в одну таблицу на одной странице

Да это верно. А что Excel не катит? Есть одна идея. Мы делали в Excel такую фичу: вешали на открытие документа макрос, который обрабатывал данные из текстового файла, заливал их в нужные клетки. Может быть, можно сделать также и с Word? Хотя спросил нашего чувака об этом, он говорит, что не знает точно можно ли такое сделать, ибо "навигация у ворда плохая"...
27 сен 04, 12:47    [989097]     Ответить | Цитировать Сообщить модератору
 Re: Black Savage как можно с вами связатся??  [new]
DIGITALPRO
Member

Откуда: РК, г.Сыктывкар
Сообщений: 348
Жаль конечно, но ....


Спасибо что откликнулись!!

P.S. Тема закрыта
27 сен 04, 14:10    [989530]     Ответить | Цитировать Сообщить модератору
 Re: Black Savage как можно с вами связатся??  [new]
PL99
Member

Откуда: Moscow
Сообщений: 1367
DIGITALPRO
Я так понял что нельзя слить данные в одну таблицу на одной странице, тогда оч. жаль, мне нужен именно такой вариант

ActiveDocument.MailMerge.MainDocumentType = 3 //wdCatalog
В этом случае вы получите таблицу, содержащую данные из источника
27 сен 04, 14:30    [989664]     Ответить | Цитировать Сообщить модератору
 Re: Black Savage как можно с вами связатся??  [new]
DIGITALPRO
Member

Откуда: РК, г.Сыктывкар
Сообщений: 348
FOR PL99

ActiveDocument.MailMerge.MainDocumentType = 3 //wdCatalog

Извините, а где такое настроить или прописать???
27 сен 04, 14:48    [989763]     Ответить | Цитировать Сообщить модератору
 Re: Black Savage как можно с вами связатся??  [new]
PL99
Member

Откуда: Moscow
Сообщений: 1367
DIGITALPRO
FOR PL99

ActiveDocument.MailMerge.MainDocumentType = 3 //wdCatalog

Извините, а где такое настроить или прописать???
Меню Tools->Mail merge->Окно Mail Merge Helper->Create->Envelopes
27 сен 04, 15:04    [989869]     Ответить | Цитировать Сообщить модератору
 Re: Black Savage как можно с вами связатся??  [new]
185
Member

Откуда:
Сообщений: 28
Прошу прощения, про
"Меню Tools->Mail merge->Окно Mail Merge Helper->Create->Envelopes"
не нашел, искал в Office XP.
Как понял из экспериментов, может и не правильно :(, сколько строчек в таблице сделаешь, столько записей(из источника) и отобразится.
Есть документ, в нем таблица, в ней 2 строки: первая заголовок, вторая данные. Делаем макрос autoopen, там считаем строчки в источнике и смотрим что есть в таблице, можно оставить что есть, можно загрузить новые данные.
строчку с данными используем как шаблон, для этого к ней пририсовываем NEXT, и копируем столько раз, сколько записей.


Sub autoopen()
Documents.Open FileName:="c:\src.txt", ConfirmConversions:=False, ReadOnly _
:=True, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _
:="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _
, Format:=wdOpenFormatAuto, Encoding:=1251
', Visible:=False на экране мелькает, а если оставить то все документы - невидимые, почему - не понял пока

ParagraphCount = ActiveDocument.Paragraphs.Count

ActiveDocument.Close

n1 = ActiveDocument.Tables(1).Rows.Count
If n1 > 2 Then
r1 = MsgBox("В таблице есть данные. Загрузить новые (OK), оставить старые (Cancel)", vbOKCancel, "Загрузка.")
If r1 = 1 Then
For i1 = n1 To 3 Step -1
ActiveDocument.Tables(1).Rows(i1).Delete ' удаляем имеющиеся данные
Next i1
Call mk_table(ParagraphCount - 1)
End If
Else
Call mk_table(ParagraphCount - 1)
End If
End Sub

Sub mk_table(ParagraphCount)

If ParagraphCount > 1 Then
Selection.HomeKey Unit:=wdStory
Selection.Find.Execute
Selection.Find.ClearFormatting
With Selection.Find ' по слову "операция" находим заголовок таблички
.Text = "операция"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.MoveDown Unit:=wdLine, Count:=1

' берем вторую строку, копируем, вставляем, добавляем Next, размножаем сколько надо раз
Selection.SelectRow
Selection.Copy
Selection.Paste
ActiveDocument.MailMerge.Fields.AddNext Range:=Selection.Range 'next
Selection.SelectRow
Selection.Copy
For i = 2 To ParagraphCount - 1
'Selection.MoveDown Unit:=wdLine, Count:=1
Selection.Paste
Next i
End If
End Sub

В пианиста не стрелять - играет как умеет. ;)
18 окт 04, 12:09    [1041143]     Ответить | Цитировать Сообщить модератору
Все форумы / PowerBuilder Ответить