62 / 6 / 1
Регистрация: 09.09.2012
Сообщений: 137
|
|||||||||||
1 | |||||||||||
Замена значений и печать документа (циклически до определённого значения)10.09.2012, 19:49. Показов 5498. Ответов 15
Метки нет (Все метки)
Здравствуйте! Только-только зарегистрировался на вашем замечательном форуме. Уже очень многое реализовал из своей задачи, причём используя именно ваш форум, поэтому и решил закрепиться тут, чтобы и дальше реализовывать своё желание.
Мне требуется решить вот что: Имеется документ MS Word, который состоит из двух страниц. На первой странице документа в четырех местах имеется шифр вида "x" и этот шифр необходимо менять в арифметической последовательности "x+1" (то есть сначала в четырёх местах написан шифр "x", потом шифр меняется и во всех четырёх местах напсиан шифр "x+1" и так далее, до определённого значения), а остальной текст оставлять без изменений и при этом распечатывать каждый раз при изменении значения в автоматическом режиме, используя двустороннюю печать. Используя возможности VB я добился следующего: 1 - при открытии документа у меня появляется форма, в которую я ввожу начальное значение шифра вида "x", потом ввожу общее число необходимых мне подстановок "y" 2 - кнопка "подстановка" меняет шифр вида "x" на введённое значение в создаваемом документе в необходимых мне четырёх местах (это я сделал при помощи закладок). На текущий момент времени я могу создавать только один документ с введённым форму значением. 3 - кнопка "отмена" закрывает форму, потом документ и затем закрывает Word Вот как это выглядит на текущий момент времени Кликните здесь для просмотра всего текста
Мне осталось сделать самое главное - кнопка "подстановка" должна называться "печать" и при этом документ автоматически должен распечатываться на одном листе с двух сторон в необходимом количестве экземпляров, учитывая значения "x" и "y". То есть, при вводе числа y=50, будет выведено на печать 50 документов, с изменёнными значениями начиная с "x" и заканчивая "x+49" Помогите пожалуйста. Я ещё новичок во всём этом, но потихоньку пробую и разбираюсь... Добавлено через 6 часов 20 минут вот нашёл код, он мне в принципе должен помочь, но я пока не могу его изменить под себя... здесь приводится пример как на странице документа выставляется каждый раз новое число с одного до другого и каждый раз при этом документ распечатывается. я надеюсь правильно понял пример =) Кликните здесь для просмотра всего текста
и ещё нашел вот такую статью она меня безумно напугала из-за огромного кода на казалось бы простую операцию - установка дуплекса на печать документа
1
|
10.09.2012, 19:49 | |
Ответы с готовыми решениями:
15
В таблице значений после отправки на печать меняются значения Вывести на печать значения X только для четных значений массивов Печать массива, циклически Используя оператор цикла, вывести на печать значения Х только для чётных значений массивов |
62 / 6 / 1
Регистрация: 09.09.2012
Сообщений: 137
|
||||||
12.09.2012, 21:18 [ТС] | 2 | |||||
ПОМОГИТЕ ПОЖАЛУЙСТА...
решил опытным путём поэкспериментировать... воспользовался методическими рекомендациями MS - взял код из этой статьи у меня появилась ошибка Expected: identifier вот по этим строкам
подскажите, что поправить нужно, чтобы я хотя бы увидел, что происходит при применении данного кода. Добавлено через 33 минуты Возникла вот какая идея у меня, может она даже упростит задачу в некотором роде... Можно сделать таким образом, чтобы я задавал начальное значение шифра, потом общее число бланков и автоматически в папке создавалось указанное количество документов с указанными значениями шифра внутри, а уж двустороннюю печать я ручками так сказать сделаю... Может так будет вам легче мне помочь?
0
|
12.09.2012, 22:24 | 3 |
1. Попробуйте удалить знак переноса и разместить описание функции одной строкой.
2. Проверьте, что все переменные разделені обычными пробелами, а не спец. символами такими, как неразрывный пробел (пройдитесь кнопкой Delete и Space). Также обращайте внимание на то, что в образцах кода MS иногда бывает много опечаток и неточностей.
1
|
62 / 6 / 1
Регистрация: 09.09.2012
Сообщений: 137
|
||||||
13.09.2012, 19:56 [ТС] | 4 | |||||
Dragokas, спасибо. действительно там была именно эта ошибка.
исправил, часть кода выполняется без ошибок, но в конце самом всё же есть ошибка, я не могу разобраться как её исправлять. Помогите пожалуйста, буду признателен.
Object required мне правда приходит на ум одна мысль... вообщем я пытаюсь решить свою проблему дома, на домашнем компе, соответственно подключен домашний принтер, а у него просто-напросто нет двусторонней печати =) так может быть эта ошибка и говорит мне о том, что не может найти такого объекта настройки у принтера?
0
|
13.09.2012, 22:13 | 5 | |||||
SetPrinterDuplex - это функция, а следовательно ей нужно куда-то возвращать значение, например:
И действительно нет такого объекта Printer ни в 2003, ни в 2010 Word-е. Откуда его взяли - не знаю. Может нужно подключить какой Reference. Попробуйте вместо этого написать вручную в кавычках имя принтера (из свойств системных настроек принтера подсмотрите). Правда на MSDN написано, что это LPTSTR указатель на строку с именем принтера. Не сильно дружу с API. Попробуйте любой переменной присвоить имя принтера. А в функцию - имя этой переменной подставьте.
1
|
62 / 6 / 1
Регистрация: 09.09.2012
Сообщений: 137
|
|
14.09.2012, 21:07 [ТС] | 6 |
Dragokas, вот сразу видно профессиональный взгляд на вещи!
Я действительно подключил некий Reference, который взял не в общем списке, а скачал предварительно с сайта MS. Вечером из дома смогу дать ссылку, на работе у меня нет таких данных. поэтому по идее, всё должно быть нормально вроде как... Добавлено через 9 часов 34 минуты вот ссылка на сайт MS с необходимым Reference для вызова диалога печати смотри тут
0
|
62 / 6 / 1
Регистрация: 09.09.2012
Сообщений: 137
|
||||||
16.09.2012, 18:37 [ТС] | 7 | |||||
По-прежнему есть некоторые моменты, которые хотелось бы улучшить: 1 - в документе "BLANK.docm", над которым и проводятся все действия, имеется 4 закладки на 4 одинаковых числа, которые начинаются с цифры "ноль". Например, 012222. Так вот сейчас я вынужден был перед каждой закладкой поместить цифру "ноль",а в поле TextBox1 пользовательской формы UserForm1 вбивать значение без цифры "ноль", например 12222. Можно ли сделать так, чтобы в поле TextBox1 я вносил значение например 012222, в поле TextBox2 я вносил значение например 2 и при этом происходила правильная отработка "lNumber + (i - 1)" и на печать выводились документы с изменёнными номерами - 012222 в первом документе и 012223 во втором документе? 2 - во время выполнения кода открываются новые вкладки с документами, с изменёнными номерами. Как избавиться от этого, чтобы ничего не появлялось, а просто в очередь печати все документы складывались сразу и всё? 3 - необходима двусторонняя печать документа "BLANK.docm". Принтер обладает необходимой функцией. Всё, что есть на данный момент, это вот эта статья MS.
0
|
62 / 6 / 1
Регистрация: 09.09.2012
Сообщений: 137
|
|
16.09.2012, 21:09 [ТС] | 9 |
Вы думаете я постоянно ими пользовался? Я всё это узнал за последнюю неделю, как задался вопросом автоматизировать некоторый процесс...
Выкладываю файл и форму в архиве. Файл изменён до неузнаваемости, но общего смысла это не меняет. !!! Не забудьте в коде поменять путь до файла или создать необходимую папку. !!!
0
|
62 / 6 / 1
Регистрация: 09.09.2012
Сообщений: 137
|
|
17.09.2012, 22:05 [ТС] | 10 |
по поводу моей проблемы № 2
вместо переменной oDoc попытался использовать ActiveDocument - ошибка появилась я понял почему она происходит - как только в документ подставляется первый шифр, у него сразу пропадают закладки, и по этой причине все другие шифры уже подставиться не могут, поскольку код теряет актуальность... проблема по-прежнему актуальна и я не знаю пока чт окак её решить. Добавлено через 2 часа 1 минуту единственный вариант, который приходит мне на ум для решения проблемы № 2 - это просто напросто закрытие вновь появляющихся документов... буду пробовать реализовывать... правда для этого сначла мне придётся найти похожий случай,"слизать" и переделать под себя =)
0
|
62 / 6 / 1
Регистрация: 09.09.2012
Сообщений: 137
|
|
19.09.2012, 19:42 [ТС] | 11 |
Терзают меня мысли что такими темпами к Новому Году я порадую себя рабочим кодом самостоятельно...
0
|
62 / 6 / 1
Регистрация: 09.09.2012
Сообщений: 137
|
||||||
29.09.2012, 22:30 [ТС] | 12 | |||||
Сообщение было отмечено как решение
Решение
по пункту 2 родилась вот какая идея (смотреть вот этот пост):
Добавлено через 1 час 40 минут и ещё появились следующие вопросы (сохранена сквозная нумерация проблем): 4 - текст, вводимый в TextBox1, должен проверяться на следующие условия - это должно быть число, число должно состоять из 5 цифр, и не должно начинаться на ноль. 5 - текст, вводимый в TextBox2, должен проверяться на следующие условия - это должно быть число равное "1", "2" или "50".
0
|
62 / 6 / 1
Регистрация: 09.09.2012
Сообщений: 137
|
|||||||||||
03.10.2012, 22:25 [ТС] | 13 | ||||||||||
есть правда по-прежнему небольшие недочёты, которые вносят в некотором роде незавершённость данному проекту: 1 - двустороння печать реализована путём создания нового принтера, в свойствах печати которого выставлена принудительно двусторонняя печать и весь документ печатается исключительно через этот принтер. А хотелось бы конечно иметь более универсальный проект, чтобы не приходилось дополнительно производить какие либо манипуляции с компом и его принтерами. 2 - по-прежнему не могу понять как реализовать правильное использования закладок (bookmarks), поскольку на текущий момент времени у меня происходит не вставка текста, а полная замена закладки на текст, поэтмоу приходится с каждым витком открывать документ снова и снова. Вот нашёл казалось бы замечательную статью про закладки, но не могу понять что делать с ней и как изменить под свои условия - см. эту статью 3 - в момент открытия документа появляется UserForm1, если нажать на "крестик", то появляется вот это сообщение из кода проекта
Либо как вариант чтобы отсутствовал тот самый "крестик" на форме =) Помогите пожалуйста, осталось совсем немного...
1
|
62 / 6 / 1
Регистрация: 09.09.2012
Сообщений: 137
|
|||||||||||
07.10.2012, 14:25 [ТС] | 14 | ||||||||||
пункт 1 - так и оставил, похоже это самый простой вариант решения вопроса, пусть так и будет.
пункт 2 - вопрос тоже решил вставил вот такой код
0
|
62 / 6 / 1
Регистрация: 09.09.2012
Сообщений: 137
|
|
08.10.2012, 23:42 [ТС] | 16 |
Sasha_Smirnov,
спасибо, оригинальное решение укоротил код, используя ваше решение
0
|
08.10.2012, 23:42 | |
08.10.2012, 23:42 | |
Помогаю со студенческими работами здесь
16
Печать определённого номера записи (страницы) отчета При выборе определённого значения в одном из ComboBox-ов автоматически убирать лишние значения в других Замена определённого символа в значении переменной другим Замена определённого символа в массиве структуры на пустой(пробел) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как определить адрес, из которого локальный репозиторий Git был клонирован
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса. При работе с Git разработчики часто сталкиваются с необходимостью. . .
|
Какая разница между операторами == и === в сравнениях в JavaScript
bytestream 21.01.2025
В мире веб-разработки JavaScript занимает особое место как динамический язык программирования, предоставляющий разработчикам широкий набор инструментов для создания интерактивных веб-приложений. . . .
|
Из чего и как собрать свой домашний кинотеатр
bt_guru 21.01.2025
Создание домашнего кинотеатра: от идеи до реализации
В современном мире домашний кинотеатр стал неотъемлемой частью комфортного жилого пространства, предоставляя возможность наслаждаться. . .
|
Ошибки стиральных машин
bt_guru 21.01.2025
Современные стиральные машины представляют собой сложные электронные устройства, оснащенные множеством датчиков и систем контроля. Они способны самостоятельно определять вес загруженного белья,. . .
|
Копирование (маппинг) объектов в JavaScript
bytestream 21.01.2025
В современной разработке программного обеспечения копирование объектов представляет собой фундаментальную операцию, которая требует особого внимания и понимания. Маппинг объектов в JavaScript – это. . .
|
Как работать с Apache Kafka в C# .NET
bytestream 21.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки больших объемов информации в реальном времени. Эта система,. . .
|
Как использовать RabbitMQ в C# .NET
bytestream 21.01.2025
RabbitMQ представляет собой мощный брокер сообщений, который эффективно решает эту задачу, обеспечивая надежную передачу данных между множеством приложений. Этот инструмент реализует протокол AMQP. . .
|
Как объединить последние коммиты в Git
bytestream 21.01.2025
В мире разработки программного обеспечения система контроля версий Git стала незаменимым инструментом для управления исходным кодом. Одной из наиболее полезных, но порой сложных для освоения функций. . .
|
Как запушить новую локальную ветку (branch) в удалённый репозиторий Git и отслеживать её
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемым инструментом для эффективного управления кодом и организации командной работы. Одной из ключевых. . .
|
Как создать директорию и все родительские директории, указанные в пути, с помощью Python
bytestream 21.01.2025
Python предоставляет мощные инструменты для работы с файловой системой через встроенные модули os и pathlib, которые значительно упрощают процесс манипуляции директориями. Эти модули содержат. . .
|
Как работать с массивами в JavaScript
bytestream 21.01.2025
Массивы в JavaScript представляют собой один из фундаментальных типов данных, который позволяет хранить упорядоченные коллекции различных элементов в одной переменной. Эта структура данных является. . .
|
Какая максимальная длина адреса (URL) в различных браузерах и стандартах
bytestream 21.01.2025
В современном мире интернет-технологий URL-адреса (Uniform Resource Locator) играют фундаментальную роль в функционировании веб-пространства. Эти уникальные идентификаторы ресурсов стали неотъемлемой. . .
|