Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Оптимизация кода / 9 сообщений из 9, страница 1 из 1
29.11.2006, 11:51:03
    #34163429
dinogen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
Как оптимизировать следующий код (установка параметров страницы) Excel?

With ActiveSheet.PageSetup
.RightFooter = "Страница &P из &N"
.LeftMargin = Application.InchesToPoints(0.196850393700787)
.RightMargin = Application.InchesToPoints(0.196850393700787)
.TopMargin = Application.InchesToPoints(0.393700787401575)
.BottomMargin = Application.InchesToPoints(0.590551181102362)
.HeaderMargin = Application.InchesToPoints(0.511811023622047)
.FooterMargin = Application.InchesToPoints(0.31496062992126)
.CenterHorizontally = True
.Orientation = xlLandscape
End With

уж очень долго выполняется!
...
Рейтинг: 0 / 0
29.11.2006, 12:47:16
    #34163703
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
кажется, не ускоришь...
...
Рейтинг: 0 / 0
30.11.2006, 08:54:30
    #34165943
SvIva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
Возможно, сделал, но на всякий напоминаю - отключить автоматический пересчет формул.
...
Рейтинг: 0 / 0
30.11.2006, 09:20:21
    #34166009
dinogen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
Сделал так:
Dim Prn As String, a
a = Timer
Prn = "PAGE.SETUP( , ""&RСтраница &P из &N"", 0.19, 0.19, 0.19, 0.19, 0, False, True, False, 2, 9, , 1, 1,False, , 0.19, 0.38, False)"
Application.ExecuteExcel4Macro Prn
MsgBox Timer - a

timer - 0.78

В предыдущем коде timer - 7.01
...
Рейтинг: 0 / 0
30.11.2006, 09:21:28
    #34166015
dinogen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
Сделал так:
Dim Prn As String, a
a = Timer
Prn = "PAGE.SETUP( , ""&RСтраница &P из &N"", 0.19, 0.19, 0.19, 0.19, 0, False, True, False, 2, 9, , 1, 1,False, , 0.19, 0.38, False)"
Application.ExecuteExcel4Macro Prn
MsgBox Timer - a

timer - 0.78

В предыдущем коде timer - 7.01
...
Рейтинг: 0 / 0
30.11.2006, 09:32:58
    #34166047
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
dinogenСделал так:
Dim Prn As String, a
a = Timer
Prn = "PAGE.SETUP( , ""&RСтраница &P из &N"", 0.19, 0.19, 0.19, 0.19, 0, False, True, False, 2, 9, , 1, 1,False, , 0.19, 0.38, False)"
Application.ExecuteExcel4Macro Prn
MsgBox Timer - a

timer - 0.78

В предыдущем коде timer - 7.01
Здорово!!!
А если нужно не на активном листе выставить значения?
Как будет выгледить строка Prn?
А может скажешь, где посмотреть возможности ExecuteExcel4Macro ?
...
Рейтинг: 0 / 0
30.11.2006, 10:28:05
    #34166201
dinogen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
Как на не активном листе выставить значения не знаю. Я только учусь! :)

В справке Microsoft Visual Basic
ExecuteExcel4Macro Method
Runs a Microsoft Excel 4.0 macro function and then returns the result of the function. The return type depends on the function.
expression.ExecuteExcel4Macro(String)

Файл справки по функциям макросов Excel 4.0 т.н. макрофункции Excel 4.0 (макросы XLM)
русский
http://www.microsoft.com/downloads/details.aspx?FamilyID=C09BF7F7-D30E-4CE9-8930-5D03748CA5CD&displaylang=ru
english
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=C09BF7F7-D30E-4CE9-8930-5D03748CA5CD

Для данного примера информацию почерпнул на http://www.p2preactor.com/usenet/programming/1527203-macro-change-worksheet-page.html
...
Рейтинг: 0 / 0
30.11.2006, 13:51:43
    #34167216
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
dinogenКак на не активном листе выставить значения не знаю. Я только учусь! :)

В справке Microsoft Visual Basic
ExecuteExcel4Macro Method
Runs a Microsoft Excel 4.0 macro function and then returns the result of the function. The return type depends on the function.
expression.ExecuteExcel4Macro(String)

Файл справки по функциям макросов Excel 4.0 т.н. макрофункции Excel 4.0 (макросы XLM)
русский
http://www.microsoft.com/downloads/details.aspx?FamilyID=C09BF7F7-D30E-4CE9-8930-5D03748CA5CD&displaylang=ru
english
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=C09BF7F7-D30E-4CE9-8930-5D03748CA5CD

Для данного примера информацию почерпнул на http://www.p2preactor.com/usenet/programming/1527203-macro-change-worksheet-page.html
Спасибо.
...
Рейтинг: 0 / 0
06.12.2006, 13:38:56
    #34180356
Сергей-1977
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация кода
Подобная хрень требовалась мне (буквально на днях!!!!). Тоже ПОНИМАШЬ оптимизирую программу, шоб работала ешо быстрее.
Мне надо было в одной книге создавать кучу листов (в зависимости от параметра N передаваемого в процедуру). Может Вы знаете, а может и нет про процедуру Sheets(i).Copy after:=Sheets(i) (или before - если перед i-й страницей). Я создаю первую страницу в книге, инициализирую (IniSheet() - та же установка параметров страницы). А далее копирую скока угодно новых страниц в книге!!!! Тоже получается быстро (кроме инициализации первой).

Private Sub Itog_Step_Small(Path$, S$, ByVal NewName$, Tip$, N%)
Const S1$ = "Реестр Федерального казначейства по "
..............
Set xlBook = xlApp.Workbooks.Add
Set xlRange = xlBook.ActiveSheet
IniSheet xlRange, Tip
With xlBook
For I = 1 To N
If Tip = "К_" Or Tip = "_К" Then
S2 = S1 & PredstavAltern(I) & " (Кредит)"
Else
S2 = S1 & PredstavAltern(I) & " (Дебет)"
End If
With .Sheets(I)
.Cells(1, 1) = S2
.Name = PredstavAltern(I)
End With
If I < N Then .Sheets(1).Copy after:=.Sheets(I)
Next I
End With
..............
End Sub


P.S.: Надо попробовать Application.ExecuteExcel4Macro (может в натуре будет ешо быстрее работать!!!)
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Оптимизация кода / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]