Страница 1 из 3

помогите с макросом для Эксель

Добавлено: 13 май 2010, 21:20
dissonance
Всем привет! помогите плиз, в VBA не шарю, а без этого не написать этот простенький макрос. :(
вот порядок действий, который должен выполнить макрос.
1.копировал указанный лист
2.создавал новый лист
3.называл этот новый лист по принципу "N+1", где N - имя предыдущего листа (оно всегда указано числом 1,2,3...1541, 1542, 1543...и т.д.)
4.в указанной ячейке (например А1) прописывал "10У-имя.текущего.листа"
5.в указанной ячейке (например А2) ставил текущую дату.
6.изменял параметры печати этого листа, так чтобы он умещался на одной странице. (в параметрах печати есть такая опция)
надеюсь на вашу помощь! спасибо. ;)

Re: помогите с макросом для Эксель

Добавлено: 15 май 2010, 13:54
dissonance
ну где же вы, гуру Вижуел Бейсик и всея Экселя?)

Re: помогите с макросом для Эксель

Добавлено: 15 май 2010, 14:19
Busine2009
dissonance
1.копировал указанный лист
и что потом делается с этим листом? Зачем он копируется?

Кроме первого пункта (т.к. смысл не понятен):

Код: Выделить всё

Sub m_1()
ActiveWorkbook.Sheets.Add after:=Worksheets(ActiveWorkbook.Sheets.Count)
ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count).Name = ActiveWorkbook.Sheets.Count
ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count).Range("A1").Value = "10У-" & ActiveWorkbook.Sheets.Count
ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count).Range("A2").Value = Date
ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count).[A2].Columns.AutoFit
With ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count).PageSetup
    .FitToPagesWide = 1
    .FitToPagesTall = 1
End With
End Sub
Смысл макроса в чём? Что в конце всех листов будет добавляться новый лист, который будет называться количеством всех листов в книге.

Re: помогите с макросом для Эксель

Добавлено: 15 май 2010, 17:30
nilem
Busine2009 писал(а): Остаётся одна недоработка: при вставке даты - она не помещается в ячейке, как её разумно и программно расширить - не знаю.
ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count).Range("A2").EntireColumn.AutoFit

Re: помогите с макросом для Эксель

Добавлено: 15 май 2010, 17:36
Busine2009
nilem
нет, в этом случае будет происходить расширение столбца в отношении всех ячеек, находящихся в данном столбце. А мне надо, чтобы именно по конкретной ячейке происходило увеличение ширины.

Re: помогите с макросом для Эксель

Добавлено: 15 май 2010, 18:12
nilem
Ну это точно невозможно - представьте себе в одном столбце ячейки разной ширины. А в нашем случае м.б. объединить с ячейкой из соседнего столбца? Правда, это "зло". Тогда выделяем две ячейки, формат-выравнивание-по горизонтали-по центру выделения. Так что ли?

Re: помогите с макросом для Эксель

Добавлено: 15 май 2010, 18:18
Busine2009
nilem
нет, ячейки естественно все одинаковой ширины, но ширина столбца должна меняться в зависимости от ширины одной конкретной ячейки.

Re: помогите с макросом для Эксель

Добавлено: 15 май 2010, 18:35
nilem
А попробуйте, например [E5].Columns.AutoFit - ширина столбца установится именно по ширине ячейки Е5, независимо от ширины данных в ячейках выше и ниже.

Re: помогите с макросом для Эксель

Добавлено: 15 май 2010, 18:39
Busine2009
nilem
да, работает, теперь только осталось выяснить, есть ли в ячейке вот такое или нет ################

Re: помогите с макросом для Эксель

Добавлено: 16 май 2010, 19:32
dissonance
Busine2009 писал(а):dissonance

и что потом делается с этим листом? Зачем он копируется?
Смысл макроса в чём? Что в конце всех листов будет добавляться новый лист, который будет называться количеством всех листов в книге.

есть книга Эксель с числом листов уже больше 1000. этот файл является документом бухгалтерской отчетности. в него вносятся данные на перемещение основных средств. (сдал, принял, должность, дата, номер док-та (10У-*номер листа по счету*) и т.д.). копирование прошлого листа используется как бланк. поэтому и не надо указывать ширину столбца, и прочие рюшечки.
нужно чтобы макрос выполнял последовательность действий: копировать лист, новый лист "N+1", вставка даты, вставка номера документа, свойства печати - уместить на одной странице ;)