Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2009, 00:05   #11
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

вот еще вариант.
макросов нет, все сделано стандартными средствами офис - сделан документ слияния связанный с базой в экселе.
на диске с: создайте папку dogovor. в нее рапакуйте содержимое вложений (собствено, файл эксел не обязательно распаковывать можете воспользоваться вашим, я в исходном ничего не менял, но в папке c:\dogovor\ он должен присутствовать обязательно).
Открывайте файл WORD, должен появится вопрос "выполнить SQL...", соглашайтесь.
Открывайте ленту "Рассылки", перебирайте записи 1, 2, 3, смотрите как меняются данные в договоре. Если в договоре видны не данные, а коды полей - щелкните по кнопке "просмотр результатов" в группе "просмотр результатов".
В группе "завершить" с помощью кнопки "найти и обьединить" можете вывести определенные или все договора сразу на печать.
Вложения
Тип файла: rar dogovor_text_тест.rar (18.4 Кб, 82 просмотров)
Тип файла: rar dogovor_тест.rar (10.0 Кб, 110 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 15.10.2009, 07:33   #12
mistx
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 104
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
вот еще вариант.
макросов нет, все сделано стандартными средствами офис - сделан документ слияния связанный с базой в экселе.
на диске с: создайте папку dogovor. в нее рапакуйте содержимое вложений (собствено, файл эксел не обязательно распаковывать можете воспользоваться вашим, я в исходном ничего не менял, но в папке c:\dogovor\ он должен присутствовать обязательно).
Открывайте файл WORD, должен появится вопрос "выполнить SQL...", соглашайтесь.
Открывайте ленту "Рассылки", перебирайте записи 1, 2, 3, смотрите как меняются данные в договоре. Если в договоре видны не данные, а коды полей - щелкните по кнопке "просмотр результатов" в группе "просмотр результатов".
В группе "завершить" с помощью кнопки "найти и обьединить" можете вывести определенные или все договора сразу на печать.
Спасибо. это тоже вариант. Первоначально я так и делал с помощью панели "слияние". Но возникла проблема с тем, что пользователи постоянно нарушали структуру документа (удаляли поля слияния, либо нарушали источник данных, перемещали саму базу куда попало)
В таком варианте есть способ защиты от изменений? при этом пользователи должны иметь полный доступ к базе, в которую они вносят изменения.
mistx вне форума Ответить с цитированием
Старый 16.10.2009, 17:28   #13
mistx
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 104
По умолчанию

Teslenko_EA

Еще вопросик появился. Не до конца понял как реализована функция funOutWord. Хочу сделать еще вариант создания договора по данным только последней строки.
Как в одном модуле выделить последнюю строку
и создать договор сразу?

так я могу выделить строку полностью?
ActiveSheet.Rows(ActiveSheet.Cells. SpecialCells(xlLastCell).Row & ":" & ActiveSheet.Cells.SpecialCells(xlLa stCell).Row).Select
mistx вне форума Ответить с цитированием
Старый 16.10.2009, 18:09   #14
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте mistx.
совершенно не обязательно "выделять" последнюю строку, при использовании формы это делается только для наглядности, достаточно узнать её номер и передать его вместе с содержимым из ячейки второй колонки в функцию
Код:
Sub lastReport()
Dim iRow&
    With ActiveSheet
        iR = .UsedRange.Rows.Count + .UsedRange.Row
    End With
 funOutWord iRow, Cells(iR, 2)
End Sub
рекомендую не оставлять без внимания и изучить метод "Слияние" (Word меню Сервис / Писма и рассылки) который предложил IgorGO.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 16.10.2009, 19:11   #15
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Rows(Cells.SpecialCells(xlLastCell) .Row).Select
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.10.2009, 20:06   #16
mistx
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 104
По умолчанию

Цитата:
Сообщение от Teslenko_EA Посмотреть сообщение
рекомендую не оставлять без внимания и изучить метод "Слияние" (Word меню Сервис / Писма и рассылки) который предложил IgorGO.
Евгений.
Дело в том, что все старые договоры я делал путем слияния, выше я писал, что необходимость перейти на макросы была вызвана неумением менеджеров работать с договорами(постоянно удаляли поля слияния, вбивая данные вручную, перезаписывали документы, особенно были проблемы, когда уразных пользователей были разные версии офисных приложений).

Teslenko_EA
IgorGO

спасибо огромное за помощь!

p.s.
Teslenko_EA


а почему именно из ячейки 2 колонки? то есть по номеру договора?

Последний раз редактировалось mistx; 16.10.2009 в 20:48.
mistx вне форума Ответить с цитированием
Старый 16.10.2009, 22:55   #17
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте mistx.
"почему именно ..." - не знаю просто так "придумалось" сохранять документы (.doc) с именем содержащим номер договора, но если Вам эта идея не нравится, подкорректируйте функцию, "авторских" претензий не будет обещаю.
Евгений.
P.S.
на всякий случай, вдуг захотите еще ко мне обратиться, Teslenko_EA это не имя, меня зовут Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 17.10.2009, 19:52   #18
mistx
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 104
По умолчанию

Цитата:
Сообщение от Teslenko_EA Посмотреть сообщение
на всякий случай, вдуг захотите еще ко мне обратиться, Teslenko_EA это не имя, меня зовут Евгений.
извеняюсь.

Цитата:
Сообщение от Teslenko_EA Посмотреть сообщение
но если Вам эта идея не нравится, подкорректируйте функцию, "авторских" претензий не будет обещаю.
Евгений.
благодарю.

Евгений, еще такой вопрос.
сделал отдельный модуль с кодом
Цитата:
Sub lastReport()
Dim iRow&
With ActiveSheet
iR = .UsedRange.Rows.Count + .UsedRange.Row
End With
funOutWord iRow, Cells(iR, 2)
End Sub
Открывается только шаблон без импорта данных.
Что-то неправильно делаю?
mistx вне форума Ответить с цитированием
Старый 17.10.2009, 20:12   #19
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте mistx.
простите но в коде присутствует очепятка,
в качестве первого аргумента функции применена переменная iRow, она объявлена, но ей ничего не присвоено, соответственно iRow = 0 и работоспособность конструкции тоже становится = 0.
исправьте :
Код:
Dim iRow&
With ActiveSheet
iRow = .UsedRange.Rows.Count + .UsedRange.Row
End With
funOutWord iRow, Cells(iRow, 2)
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 17.10.2009, 23:41   #20
mistx
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 104
По умолчанию

Цитата:
Сообщение от Teslenko_EA Посмотреть сообщение
Здравствуйте mistx.
в качестве первого аргумента функции применена переменная iRow, она объявлена, но ей ничего не присвоено, соответственно iRow = 0 и работоспособность конструкции тоже становится = 0.
исправьте :
Код:
Dim iRow&
With ActiveSheet
iRow = .UsedRange.Rows.Count + .UsedRange.Row
End With
funOutWord iRow, Cells(iRow, 2)
Евгений.
большущее спасибо за разъяснения. все работает.
св-ва .UsedRange.Rows.Count + .UsedRange.Row - находят строку следующую за последней
сделал
.UsedRange.Rows.Count + .UsedRange.Row-1
mistx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вставить в таблицу Excel данные из текстового файла Диагностик Microsoft Office Excel 8 13.12.2009 13:50
Как из текстового файла перенести данные в excel файл hunter05 Microsoft Office Excel 1 08.09.2009 06:30
Импорт из текстового файла в Excel (DBF) Slava БД в Delphi 3 22.07.2009 20:28
Открытие файла и создание графика на основе чисел из файла Simon..14 Общие вопросы C/C++ 8 09.06.2009 10:18
Генерация файла с расширением CPP Solan Общие вопросы C/C++ 8 28.09.2007 10:01