Страницы: 1
RSS
Создание автозаполняемой формы для документов
 
Проблема такая: Есть очень много похожих документов, которые заполняются схожим образом. Я хочу их закинуть в exсel, и менять те части документов которые меняются а всё остальное переносить по новой. Почему именно таким образом? Потому что документов много, и в них могут быть ошибки, а в таком случае, надо переделывать всё, что собиралось за ними (а это иногда за 100 доков переходит). Возникла такая идея. запустить два макроса, один на создание предварительного списка, а другой на создание этих документов. (потому что документы могут быть 4 различных типов и в разном порядке). Во втором макросе я подумал создать оператор цикла, который сканировал бы ячейки на наличие в них чего либо, и в связи с этим запускал создание листа. Но в таком случае необходимы переменные в координатах, но макрос не принимает подобное. Подскажите, есть ли решение данной проблемы, и если есть, то какое. Так же интересны другие предложения относительно данной программы
Заранее благодарен
 
Цитата
Apoctol написал: ...потому что документы могут быть 4 различных типов...
Создайте 4 разных бланка этих документов и заполняйте их, при необходимости, из единой базы данных
Заполнение бланков данными из таблицы
Согласие есть продукт при полном непротивлении сторон
 
Я думал об этом, но там довольно много бланков, и каждый надо отправлять на печать отдельно. Я думал собрать нечто, что будет формировать эти документы не по одному, а целой стопкой, и что бы их сразу можно было отправить в печать
 
Еще есть вариант на базе бланка Word данными из файла Excel. Слияние позволяет создать сразу несколько документов, хоть 100, на основании заготовленной формы, а править в случае ошибки нужно только форму. В Вашем случае возможно необходимо создать этот пакет в одном файле Word. Пока не понятно что конкретно хотите. Либо создать пакет документов, из разных листов одной книги Excel и каким то образом выбирать какие данные должны вставляться во все листы этого пакета.
Изменено: gling - 29.05.2016 22:41:14
 
Цитата
Apoctol написал: Подскажите, есть ли решение данной проблемы, и если есть, то какое.
Я показал, как я вижу решение. У Вас ни примеров, ни другой конкретики. Какое решение Вы ждете? Мне эта тема, пока кажется чисто теоретической.
З.Ы. В любом случае данные нужно хранить в таблице, а не в готовых документах
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал: Какое решение Вы ждете?
Примера как такового и нет, это идея оптимизации. Конкретно того, что  надо, то номера страниц меняются при переписке документов, а всё  содержание остаётся прежним. Я хочу создать какую-нибудь систему,  которая будет способна с нуля написать данные документы, связав область  печати на одном листе, с рабочей областью на другом, и таким образом  создать некий живой документ, который можно править из рабочей области.
Цитата
gling написал:   Слияние  позволяет создать сразу несколько документов
Да, это примерно то, что мне было необходимо. Большое спасибо. Просто исходя из того что мне известно про офис наиболее близок мне именно excel. Потому про него и задал вопрос. Насчёт этой функции не был в курсе. Насколько я понимаю, можно документ word связать с таблицей excel таким образом, что при смене какого либо значения в ячейке excel, это же значение будет заменяться и в документе word. Я правильно понимаю?
 
Цитата
Apoctol написал:
при смене какого либо значения в ячейке excel, это же значение будет заменяться и в документе word. Я правильно понимаю?
Правильно )
 
подскажите можно ли переделать данный макрос что бы он работал не на одну ячейку а на диапазон например А1:А10
Private Sub Worksheet_Calculate() If Range("A1").Value <> Range("B1").Value Then Range("B1").Value = Range("A1").Value End Sub
А этот что бы не складывал накопленный результат а просто оставлял предыдущее значение B1:B10
Код
Private Sub Worksheet_Change(ByVal Target As Excel.Range)       If Not Intersect(Target, Range("B1:B10")) Is Nothing Then         If IsNumeric(Target.Value) Then             Application.EnableEvents = False             Target.Offset(0, 1).Value = Target.Offset(0, 1).Value + Target.Value             Application.EnableEvents = True         End If     End If End Sub
Если кто то знает заранее спасибо.
 
Peac154, Проще будет создать свою тему, но если удобно так, то скинь не код, а файл примером. Удобнее будет понять
 
Peac154,Ах да, а зачем тебе работа по диапазону? Легче же просто сделать 10 итераций.
 
Да конечно а как?
 
Peac154,Кнопки "создать тему" и загрузить файл, если речь о предыдущем вопросе. Если о последнем, то мы просто 10 раз копируем тело макроса и меняем ячейку с А1, на А2, потом на А3 и т.д.
 
Прошу прощения вот файл
 
в идеале в диапазоне не 10 строк а 1000
 
файл
 
Peac154,Могу предложить решение через оператор цикла с точкой остановки "0", если в таблице такого числа не бывает, и определённым символом, если бывает
 
в прицепи можно и на всю 1000 написать а как быть со сложением накопленных значений, вот самый главный вопрос
 
файл
 
Peac154, Можно так же поставить и цикл со счётчиком, на определённое количество значений. Но тогда придётся каждый раз либо переписывать код, либо загнать большое число, и просто ждать, пока он будет сравнивать пустые ячейки
 
Смысл всего этого, есть две таблицы одна главная другая ежедневно обновляется задача в том что бы в главную подставлять значения из изменяемой (наример ВПР не важно), но в изменяемой таблице не все строки заполнены, и надо как то так делать что бы в главной были не пробелы а старые значения.Пример выложить не могу это все пока только в моей воспаленной фантазии.  
 
Ага, только согласно программе она и пустые ячейки будет занимать. Если старые будет и в ежедневной то не вопрос конечно, только зачем "<>", если можно просто "=" поставить?
 
может есть способ без макросов что то вроде =если(А!;ВПР;не менять значение), толь как делать что бы он не менялось?
 
Лучше через VBA. Обрисую как вижу: Оператор цикла наподобии
Sub qqq()  
For i = 1 To 10  
x = i  
if Cells(i, 1).Select <> Cells(i, 2).Select then Cells(i, 1).Select=Cells(i, 1).Select
Next i
end sub
Пунктуация может быть не соблюдена, но смысл надеюсь понятен
 
Apoctol, пробовал вот это но не работает при подстановке значений через формулу, работает если вводить руками, это не годится.
 
Apoctol, А можно чуть поподробнее
 
Peac154, а можно чуть поподробнее - как Ваш вопрос связан с темой о форме?
Apoctol, не нужно помогать, если видите нарушение правил.
Обоим -Правила здесь
 
vikttur,Прошу прощения. Постараюсь исправиться
 
vikttur, Прошу прощения
Страницы: 1
Читают тему
Наверх