|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Создание группы файлов Excel на основе списка |
|
VBS/WSH/JS - Создание группы файлов Excel на основе списка
|
Пользователь Сообщения: 84 |
Профиль | Отправить PM | Цитировать Добрый вечер! Помогите, плиз, со скриптом:
Имеется файл формата Excel 2003 (Список.xls), содержащий простой список (фио человека, адрес, телефон и т.д.). Также имеется файл формата Excel 2003 (Опись.xls), представляющий собой что-то типа образца-шаблона, где в шапке написано название документа (опись и т.д.) и в конце имя начальника, подпись и т.д. А в середине (теле) шаблона N-е количество строк списка из файла Список.xls (пусть 20). А лучше чтоб задавалось. Нужен скрипт, создающий из списка на основе этого шаблона отдельные файлы. Т.е. файл с именем Опись001.xls содержащий первые 20 строк списка, потом Опись002.xls со списком с 21 по 40 строку и т.д. пока не кончится весь список. Если бы просто выводить так на печать я бы справился, но надо чтоб были в виде файлов эти описи ... Спасибо. |
|
Отправлено: 21:57, 16-03-2013 |
Старожил Сообщения: 369
|
Профиль | Отправить PM | Цитировать Serg2010,
Вы можете всё это сделать сами. Встроенный язык VBA в офис2003 - вам поможет. для этого сначала вам надо самому проделать все действия что Вы написали над вашими файлами. Открыть файл шаблон -пустую незаполненную таблицу с подписью начальника внизу, далее открыть искомый файл из которого выбудете дергать первые двадцать строк. Далее выделисть первые двадцать строк в искомом файле и скопировать (а лучше - вырезать) их в пустой файл шаблон с подписью началника внизу. Сохранить шаблон как (указать имя файла). Следующие действия будут точно такими же. Если без всякого скрипта у Вас получиться - то терерь вам нужно ваш искомый файл с кучей записей - сохранить под другим именем (чтоб в случае неудачи - не запороть ваш оригинальный файл) и работать с ним. Открыв этот файл вы нажимаете Сервис - Макросы- Начать запись. В появившемся окошке англицкими буквами пишете имя макроса - например sortirovrka_spiska и добавляете сочетание клавиш - например ctrl+o. нажимаете ОК и повторяете все те дейсвия что делали без включения макроса (копирование или вырезание первых 20 строк из списка в пустую таблицу шаблон с подписью началника). Жмёте на кнопку стоп. Далее нажимаете ALT+F8 и в появившемся окне выбираете имя вашего макроса и нажимаете кнопку ИЗМЕНИТЬ - тогда вы попадете в окно пошагового исполнения всех записанных макросом ваших действий по копированию-вырезанию 20 строк и вставление их в пустую таблицу с последующим её сохранением в файл. когда всё это сделаете - скопируйте текст макроса сюда и дальше мы его немножко подправим. |
Отправлено: 00:15, 17-03-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 84
|
Профиль | Отправить PM | Цитировать Добрый день!
Сделал по вашему совету скрипт-запись. Получилось. Прилагаю файл шаблона (Опись.xls), файл списка источника строк (Список.xls), содержащий скрипт, ну и результат работы файл (Опись001.xls). Теперь, как понял, нужно подредактировать скриптик, т.е. организовать внешний цикл-счётник для увеличения строк 20, и для нумерации файлов другой цикл. Хорошо бы вставить проверку на предмет окончания списка и т.д. Вообщем теперь в бой идут профессионалы :-) Файлы должны располагаться по пути C:\Скрипт Текст скрипта (есть и в модуле файла). Sub Макрос1() ' ' Макрос1 Макрос ' Макрос записан 21.03.2013 (140801) ' ' ChDir "C:\Скрипт" Workbooks.Open Filename:="C:\Скрипт\Опись.xls" Windows("Список.xls").Activate Range("B1:C20").Select Selection.Copy Windows("Опись.xls").Activate Range("B8").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.SaveAs Filename:="C:\Скрипт\Опись003.xls", FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False ActiveWorkbook.Close End Sub |
Последний раз редактировалось Serg2010, 07-08-2015 в 20:57. Отправлено: 12:37, 22-03-2013 | #3 |
Старожил Сообщения: 369
|
Профиль | Отправить PM | Цитировать 'ActiveSheet.Paste
'Application.CutCopyMode = False ActiveWorkbook.SaveAs Filename:="C:\Скрипт\Опись & imja_faila & .xls", FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False range("AA1").clearcontent vybor=inputbox("Формируем следующий файл? Д / Н") if vybor = "Д" then goto 5 elseif vybor = "Н" then end if ActiveWorkbook.Close End Sub Я не имею под рукой экселя и все эту конструкцию представлял в голове. Возможно кое где ошибки с правильным написанием отдельных слов и выражений. но "мысль" в коде правильная PS: ПОКА ПИСАЛ - ФОРУМ СБРОСИЛ МОЮ АВТОРИЗАЦИЮ, А ПОСЛЕ ВОССТАНГОВЛЕНИЯ АВТОРИЗАЦИИ - 2/3 КОДА ЗАЖЕВАЛОСЬ. БУДУ ПИСАТЬ ЗАНОВО. |
Отправлено: 00:19, 23-03-2013 | #4 |
Старожил Сообщения: 369
|
Профиль | Отправить PM | Цитировать ChDir "C:\Скрипт"
Workbooks.Open Filename:="C:\Скрипт\Опись.xls" Windows("Список.xls").Activate range("A1").select selection.offset(0,1).select per1=activecell.value selection.offset(0,1).select per2=activecell.value selection.entirerows.insert range(A1:C1").clearcontent range("B1").select selection.offset(a,0).select activecell.value=per1 selection.offset(0,1).select activecell.value=per2 5 Windows("Список.xls").activate for a=1 to 20 range("B1").select selection.offset(a,0).select dann1=activecell.value selection.offset(0,1).select dann2=activecell.value selection.entirerows.delete ' Range("B1:C20").Select ' Selection.Copy Windows("Опись.xls").Activate Range("B7").Select selection.offset(a,0).select activecell.value=dann1 selection.offset(0,1).select activecell.value=dann2 next a ' ActiveSheet.Paste ' Application.CutCopyMode = False imja_faila=inputbox("какое имя дадим этому 20 строчному файлу?") range("AA1").select activecell.value=imja_faila imja_faila=activecell.value ActiveWorkbook.SaveAs Filename:="C:\Скрипт\Опись & imja_faila & .xls", FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False vibor= inputbox("Будем формировать новый файл? Д / Н") if vibor = "Д" then goto 5 elseif vibor = "Н" then end if ActiveWorkbook.Close End Sub |
|
Последний раз редактировалось azbest, 23-03-2013 в 00:55. Отправлено: 00:43, 23-03-2013 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Создание группы файлов Excel на основе списка | Serg2010 | AutoIt | 1 | 19-03-2013 05:43 | |
2003/XP/2000 - [решено] Excel | Создание поля со списком и описанием списка | Drongo | Microsoft Office (Word, Excel, Outlook и т.д.) | 5 | 06-07-2011 17:24 | |
CMD/BAT - [решено] Создание файлов из списка в txt | kasik | Скриптовые языки администрирования Windows | 1 | 15-01-2011 20:04 | |
C/C++ - Создание списка файлов | Albreht | Программирование и базы данных | 2 | 20-07-2009 01:17 | |
Группы распространения на основе запросов | SergeiS | Microsoft Windows NT/2000/2003 | 1 | 18-04-2006 15:48 |
|