powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вставка данных в таблицу Word с объединенными ячейками
16 сообщений из 16, страница 1 из 1
Вставка данных в таблицу Word с объединенными ячейками
    #34649395
AlexanderYu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, возник вопрос: можно ли программно вставить данные из Access в таблицу Word, если в таблице есть объединенные ячейки?
Под объединенными ячейками я понимаю таблицу вот такого вида:
_______________________________________________
__________|____________|____________|___________| 1 заголовок
__________|____________|______|_____.|___________| 2 заголовок
.......................|............................|..............|.............|..........................| область данных
.......................|............................|..............|.............|..........................|
.......................|............................|..............|.............|..........................|
где "объединенными" называются ячейки соответствующие 3 столбцу первого заголовка и 3 и 4 столбцам второго заголовка.

Так вот, проблема заключается в следующем, если в таблице нет первого заголовка, то вставка в третий столбец происходит успешно. При этом использую следующий код:
Код: plaintext
objWord.ActiveDocument.Tables.Item(numTable).Rows(i).Cells( 3 ).Range.Text = aRs.fields("Мои данные")

Если же таблица имеет вид, представленный на рисунке, то в этой строке кода возникает ошибка:
Код: plaintext
"Cannot access individual rows in this collection because the table has vertically merged cells"
...
Рейтинг: 0 / 0
Вставка данных в таблицу Word с объединенными ячейками
    #34652323
AlexanderYu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
up
...
Рейтинг: 0 / 0
Вставка данных в таблицу Word с объединенными ячейками
    #34652555
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно , но я использую дополнение к Office (DLL'ку) , которая при запуске Word'ского документа
заливает в него данные, примерно так :
Код: plaintext
1.
2.
3.
4.
Private Sub Document_Open()
SetCurrentDocument ActiveDocument
nySourceFieldFill ' Заполнить отджельные бланковые поля
nySourceTableFill "Ассорт", , , , True ' заполнить таблицу с шапкой, в которой произвольные слитые ячейки
End Sub
А из Access
Сам документ какой , можно в приложении глянуть , а DDL' ку, если хочешь, вышлю отдельно.

А это пример того, как запускаются из Access эти документы (но можно открывать их и прямо с диска):
Код: plaintext
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.
Function BlankToWord(fpMode) ' fpMode - ТипПотока

Dim DocPath As String, DocName As String

On Error GoTo Err_

DocPath = NameFile(Application.CurrentDb.Name, "P") ' путь - из текущего каталога
Select Case gfpMode
Case gfpToStock
 DocName = "Накладная.doc"
Case gfpFromStock
 DocName = "Требование.doc"
Case Else
 Exit Function
End Select
ProcExec QueryType:="Stored", ProcName:="ТекНакладная" ' сама удалит INTO таблицу
ProcExec QueryType:="Stored", ProcName:="ТекАссортимент"

OpenWordDoc DocName, DocPath ' открытие Word'ского документа
Exit_:
Exit Function

Err_:
i = Err.Number
MsgBox i & " | " & Err.Description
Resume Exit_
End Function ' -->>
...
Рейтинг: 0 / 0
Вставка данных в таблицу Word с объединенными ячейками
    #34653132
AlexanderYu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
За предложение с dll-кой спасибо! Так же как и за ответ!
Но пока такой вариант мне не совсем подходит :) в том плане, что если все таки можно как-то вставить данные без ее использования, то хотелось бы это именно так и сделать или по крайней мере получить обоснованный ответ, что сделать это нельзя, или что "овчинка выделки не стоит".
...
Рейтинг: 0 / 0
Вставка данных в таблицу Word с объединенными ячейками
    #34654654
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 AlexanderYu >
А что смущает? Бери и используй это дополнение - какие проблемы в этом? Там уже все готово , - просто и красиво, по сути почти готовый репортер (правда пока сделано только возможность заполнения простых Word'ских таблиц и полей для бланкового вида, в перспективе будет полнофункциональный репортер, более развитый , чем в Access и удобней в использовании - ведь, как правило, Word'ские документы УЖЕ обыкновенно бывают готовы у самого пользователя (в отличие от рипорта в Access ) в смысле - создан вид документа и он отформатирован, а программисту при использованиии этого дополнения остается только проставить нужные поля в нужных местах - все! ), решены также проблемы , кроме объединенных ячеек в шапке, - сдвиг шапки или строки таблицы, если она попадает на границу страниц, дублирование шапки при желании на каждой странице. Куча всяких других не связанных с этой задачей фишек по автоматизации Excel,Word,Access...
Зачем повторять то, что уже сделано ?;) Разве только , если хочешь все это VBA-программирование освоить, но вот я так не хочу делать то, что уже сделано, поэтому использую эту библиотеку.
...
Рейтинг: 0 / 0
Вставка данных в таблицу Word с объединенными ячейками
    #34654758
Karfaqen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexanderYЕсли же таблица имеет вид, представленный на рисунке, то в этой строке кода возникает ошибка:
"Cannot access individual rows in this collection because the table has vertically merged cells"А вы уверены, что эта ошибка возникает для ситуации, которую вы обрисовали выше?

Данный вопрос возник, поскольку 1) в сообщении речь идет о ячейках объединенных по вертикали, в то время как вы у себя используете горизонтальное объединение и 2) с заполнением ячеек для вашей картинки никаких проблем - заполняет 3-ю ячейку во всех строках в обоих случаях без ошибок (mso2000).
...
Рейтинг: 0 / 0
Вставка данных в таблицу Word с объединенными ячейками
    #34655545
AlexanderYu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to yuniki:
Если я правильно понимаю, использование dll требует, чтобы на каждом компьютере, на котором будет выполняться построение отчета, необходимо будет подключить в Word'e эту dll? Если это так, то такой вариант мне не подходит потому, что разрабатываемое приложение будет использоваться на разных машинах. И мне кажется, что будут некоторые трудности с тем, чтобы пользователи, которые будут строить отчеты, смогли правильно подключить её. :)

to Karfaqen:
Вы правы. Я немного ошибся в структуре таблицы. Должна быть вот такая:
...
Рейтинг: 0 / 0
Вставка данных в таблицу Word с объединенными ячейками
    #34655567
AlexanderYu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И, раз пошла такая пьянка :), хотелось бы вставить данные в таблицу вот такого вида:
...
Рейтинг: 0 / 0
Вставка данных в таблицу Word с объединенными ячейками
    #34655797
Karfaqen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так вот все-такиДолжна быть вот такаяили жехотелось бы вставить данные в таблицу вот такого видаибо разница меж ними. Последний вариант - объединяет строки и НЕ объединяет столбцы, посему в ней возможно обращение к ячейкам в цикле по столбцам. А в предыдущем есть объединение и строк и столбцов. В такой таблице возможно обращение к конкретным ячейкам.

Вобщем, программные средства для безошибочного доступа к нужным Range имеются для любого варианта. Все остальное - вопрос организации алгоритма заполнения.
...
Рейтинг: 0 / 0
Вставка данных в таблицу Word с объединенными ячейками
    #34655859
AlexanderYu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нужны оба варианта.
Просто я вначале хотел разобраться с первым, а потом уже смотреть второй.
Не подскажете, как можно модифицировать для первого варианта строку
Код: plaintext
objWord.ActiveDocument.Tables.Item(numTable).Rows(i).Cells( 3 ).Range.Text = aRs.fields("Мои данные")
чтобы вставка происходила корректно? (А еще лучше зашлите меня куда-нибудь почитать:) ).
...
Рейтинг: 0 / 0
Вставка данных в таблицу Word с объединенными ячейками
    #34655908
AlexanderYu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался.

Всем огромное спасибо! Читать надо help. :)
...
Рейтинг: 0 / 0
Вставка данных в таблицу Word с объединенными ячейками
    #34655927
AlexanderYu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для будущих поколений, привожу примеры готовых ответов:

вставка по строкам:
Код: plaintext
objWord.ActiveDocument.Tables.Item(numTable).Rows(i).Cells( 2 ).Range.Text = aRs.fields("Данные")

вставка по столбцам:
Код: plaintext
objWord.ActiveDocument.Tables.Item(numTable).Columns(i).Cells( 2 ).Range.Text = aRs.fields("Данные")

вставка в ячейки (по строкаи и столбцам):
Код: plaintext
objWord.ActiveDocument.Tables.Item(numTable).Cell(Row:= 1 , Column:= 2 ) = aRs.fields("Данные")
...
Рейтинг: 0 / 0
Вставка данных в таблицу Word с объединенными ячейками
    #34656256
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexanderYuto yuniki:
Если я правильно понимаю, использование dll требует, чтобы на каждом компьютере, на котором будет выполняться построение отчета, необходимо будет подключить в Word'e эту dll?
Да, но не совсем "да". Т.к. :
1) Это по идее забота отдельного специалиста - сисадмина. Уж он обязан знать , как это сделать централизрованно и автоматизированно.
2) Можно и, у нас так и сделано , автоматизировать процесс регистрации и подключения DLL.
3) Держать DLL можно, на сервере, У нас в LAN, например, именно так.
4) Если требуется использование DLL в каждом Word'ском файле, то подключать DLL к каждому не требуется, достаточно подключить к normal.dot в который вставить спец модуль интерфейсных вызовов функций этой DLL - тогда функции этой DLL становятся доступны всем Word'ским документам на данном PC.
Короче , это как и для любого Office'ного дополнения, задача его распространения.


AlexanderYuРазобрался.
Ну раз уж разобрался, то молодец, я бы только посоветовал всегда использовать третий вариант (т.е. строки/столбцы целиком не адресовать) - уменьшатся проблемы с объединенными ячейками, хотя проблемы эти все-равно останутся и будут проявляться при решении разных вопросов в Word'ской таблице.
...
Рейтинг: 0 / 0
Вставка данных в таблицу Word с объединенными ячейками
    #34656297
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, я обещанный Word'ский файл-то с примером так и не прикрепил. Прикрепляю.
(PS Если забыли как смотреть все поля : можно Ctrl-A и Коды/Значения полей )
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Вставка данных в таблицу Word с объединенными ячейками
    #38244342
zaybert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я просто оторвал основную таблицу от шапки с объединенными ячейками и заполнил ее. А потом убрал разрыв.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Вставка данных в таблицу Word с объединенными ячейками
    #39655176
Sergey-2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zaybertЯ просто оторвал основную таблицу от шапки с объединенными ячейками и заполнил ее. А потом убрал разрыв.

У меня тоже была такая идея, но что будет если, пользователь, поменяет местами колонки в шапке?...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вставка данных в таблицу Word с объединенными ячейками
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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