Страница 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", вставка даты, вставка номера документа, свойства печати - уместить на одной странице
