Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Создание группы файлов Excel на основе списка

Ответить
Настройки темы
VBS/WSH/JS - Создание группы файлов Excel на основе списка

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый вечер! Помогите, плиз, со скриптом:

Имеется файл формата Excel 2003 (Список.xls), содержащий простой список (фио человека, адрес, телефон и т.д.).
Также имеется файл формата Excel 2003 (Опись.xls), представляющий собой что-то типа образца-шаблона, где в шапке написано название документа (опись и т.д.) и в конце имя начальника, подпись и т.д.
А в середине (теле) шаблона N-е количество строк списка из файла Список.xls (пусть 20). А лучше чтоб задавалось.
Нужен скрипт, создающий из списка на основе этого шаблона отдельные файлы. Т.е. файл с именем Опись001.xls содержащий первые 20 строк списка, потом Опись002.xls со списком с 21 по 40 строку и т.д. пока не кончится весь список. Если бы просто выводить так на печать я бы справился, но надо чтоб были в виде файлов эти описи ...

Спасибо.

Отправлено: 21:57, 16-03-2013

 

Старожил


Сообщения: 369
Благодарности: 49

Профиль | Отправить PM | Цитировать


Serg2010,
Вы можете всё это сделать сами.
Встроенный язык VBA в офис2003 - вам поможет.
для этого сначала вам надо самому проделать все действия что Вы написали над вашими файлами. Открыть файл шаблон -пустую незаполненную таблицу с подписью начальника внизу, далее открыть искомый файл из которого выбудете дергать первые двадцать строк. Далее выделисть первые двадцать строк в искомом файле и скопировать (а лучше - вырезать) их в пустой файл шаблон с подписью началника внизу. Сохранить шаблон как (указать имя файла). Следующие действия будут точно такими же. Если без всякого скрипта у Вас получиться - то терерь вам нужно ваш искомый файл с кучей записей - сохранить под другим именем (чтоб в случае неудачи - не запороть ваш оригинальный файл) и работать с ним. Открыв этот файл вы нажимаете Сервис - Макросы- Начать запись. В появившемся окошке англицкими буквами пишете имя макроса - например sortirovrka_spiska и добавляете сочетание клавиш - например ctrl+o. нажимаете ОК и повторяете все те дейсвия что делали без включения макроса (копирование или вырезание первых 20 строк из списка в пустую таблицу шаблон с подписью началника). Жмёте на кнопку стоп. Далее нажимаете ALT+F8 и в появившемся окне выбираете имя вашего макроса и нажимаете кнопку ИЗМЕНИТЬ - тогда вы попадете в окно пошагового исполнения всех записанных макросом ваших действий по копированию-вырезанию 20 строк и вставление их в пустую таблицу с последующим её сохранением в файл. когда всё это сделаете - скопируйте текст макроса сюда и дальше мы его немножко подправим.
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:15, 17-03-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить 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
Благодарности: 49

Профиль | Отправить 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
Благодарности: 49

Профиль | Отправить 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Создание группы файлов Excel на основе списка

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Создание группы файлов 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




 
Переход