Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ускорить время выполнение программы / 21 сообщений из 21, страница 1 из 1
23.06.2008, 11:34
    #35387920
df4545
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
Программа (DISP.rar) долго работаеть. Если работать из сети ('pt = "\\192.168.10.2\disp\")- очень долго(6-7 мин.). Помогите пожалуйста, как можно ускорить эта задачу?
...
Рейтинг: 0 / 0
24.06.2008, 08:49
    #35389857
df4545
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
Я знаю что здесь очень много что "не так". Как то можно оптимизировать код. Но как? Помогите пожалуйста.
...
Рейтинг: 0 / 0
24.06.2008, 08:50
    #35389858
Рустик_Уфа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
df4545Я знаю что здесь очень много что "не так". Как то можно оптимизировать код. Но как? Помогите пожалуйста.
вря ли ктото будет качать, код выложи лучше на форум
...
Рейтинг: 0 / 0
24.06.2008, 08:58
    #35389865
df4545
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
Рустик_Уфа вря ли ктото будет качать, код выложи лучше на форум
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
 Public fn2, fn, FN1
Sub f()
    Dim nime As String, SH As String, pt As String, fname As String, cel As String
    Dim m_sDir As String
   ' m_sDir = "\\192.168.10.2\Ssilka.xls"
    m_sDir = "C:\disp\Ssilka.xls"
    Dim k As Long, n As Long
    SH = "Ëèñò1"
    'pt = "\\192.168.10.2\disp\"
    'path = "\\192.168.10.2\disp\"
   pt = "C:\disp\"
   path = "C:\disp\"
    
    fname = pt & nime
     
    k =  6 
    n =  6 
    l =  22 
  
  '  l = 22
    'k = 4- 3-cu fayla hara
    'n=3  - 2-ci fayldan hardan
fn2 = Format(Date, "DD.MM.YY")
fn = InputBox("Ayin tarixi:", , fn2)

m_sDir = pt & fn + ".XLS"

'MsgBox (m_sDir)

If fn2 <> fn Then Workbooks.Open m_sDir


If fn2 <> fn Then Workbooks("DISP.XLS").Close


FN1 = fn + "B"
nime = FN1 & ".xls"
fname = pt & nime
  
            If FileExists3(fname) = False Then
              ' MsgBox (" " & fname & "  fayli yoxdur.")
                MsgBox (" 7-ci SEXDEN INFORMASIYA YOXDUR!")
               nime = "bosh7.xls"
            End If
  '      Else
            On Error Resume Next
            Do
                cel = "A" & n
                With Workbooks("disp.xls").Sheets("Ëèñò1")
                    '.Cells(k, 1).Value = Getvalue(pt, nime, sh, cel)
                    .Cells(k,  2 ).Value = Getvalue(pt, nime, SH, "B" & n)
                    .Cells(k,  3 ).Value = Getvalue(pt, nime, SH, "C" & n)
                    .Cells(k,  4 ).Value = Getvalue(pt, nime, SH, "D" & n)
                    .Cells(k,  5 ).Value = Getvalue(pt, nime, SH, "E" & n)
                    .Cells(k,  6 ).Value = Getvalue(pt, nime, SH, "F" & n)
                    .Cells(k,  7 ).Value = Getvalue(pt, nime, SH, "G" & n)
                    .Cells(k,  8 ).Value = Getvalue(pt, nime, SH, "H" & n)
                    .Cells(k,  9 ).Value = Getvalue(pt, nime, SH, "I" & n)
                    .Cells(k,  10 ).Value = Getvalue(pt, nime, SH, "J" & n)
                    .Cells(k,  11 ).Value = Getvalue(pt, nime, SH, "K" & n)
                    .Cells(k,  12 ).Value = Getvalue(pt, nime, SH, "L" & n)
                    .Cells(k,  13 ).Value = Getvalue(pt, nime, SH, "M" & n)
                    .Cells(k,  14 ).Value = Getvalue(pt, nime, SH, "N" & n)
                    .Cells(k,  15 ).Value = Getvalue(pt, nime, SH, "O" & n)
                    .Cells(k,  16 ).Value = Getvalue(pt, nime, SH, "P" & n)
                    .Cells(k,  17 ).Value = Getvalue(pt, nime, SH, "Q" & n)
                    .Cells(k,  18 ).Value = Getvalue(pt, nime, SH, "R" & n)
                    .Cells(k,  19 ).Value = Getvalue(pt, nime, SH, "S" & n)
                    .Cells(k,  20 ).Value = Getvalue(pt, nime, SH, "T" & n)
                    .Cells(k,  21 ).Value = Getvalue(pt, nime, SH, "U" & n)
                    .Cells(k,  22 ).Value = Getvalue(pt, nime, SH, "V" & n)
                    .Cells(k,  23 ).Value = Getvalue(pt, nime, SH, "W" & n)
                    .Cells(k,  24 ).Value = Getvalue(pt, nime, SH, "X" & n)
                    .Cells(k,  25 ).Value = Getvalue(pt, nime, SH, "Y" & n)
                    .Cells(k,  26 ).Value = Getvalue(pt, nime, SH, "Z" & n)
                    .Cells(k,  27 ).Value = Getvalue(pt, nime, SH, "AA" & n)
                    .Cells(k,  28 ).Value = Getvalue(pt, nime, SH, "AB" & n)
                    .Cells(k,  29 ).Value = Getvalue(pt, nime, SH, "AC" & n)
                    .Cells(k,  30 ).Value = Getvalue(pt, nime, SH, "AD" & n)
                    .Cells(k,  31 ).Value = Getvalue(pt, nime, SH, "AE" & n)
                    .Cells(k,  32 ).Value = Getvalue(pt, nime, SH, "AF" & n)
                    .Cells(k,  33 ).Value = Getvalue(pt, nime, SH, "AG" & n)
                    .Cells(k,  34 ).Value = Getvalue(pt, nime, SH, "AH" & n)
                    .Cells(k,  35 ).Value = Getvalue(pt, nime, SH, "AI" & n)
                    .Cells(k,  36 ).Value = Getvalue(pt, nime, SH, "AJ" & n)
                    .Cells(k,  37 ).Value = Getvalue(pt, nime, SH, "AK" & n)
                    .Cells(k,  38 ).Value = Getvalue(pt, nime, SH, "AL" & n)
                    .Cells(k,  39 ).Value = Getvalue(pt, nime, SH, "AM" & n)
                    
                    .Cells(k +  16 ,  2 ).Value = Getvalue(pt, nime, SH, "B" & n +  16 )
                    .Cells(k +  16 ,  3 ).Value = Getvalue(pt, nime, SH, "C" & n +  16 )
                    .Cells(k +  16 ,  4 ).Value = Getvalue(pt, nime, SH, "D" & n +  16 )
                    .Cells(k +  16 ,  5 ).Value = Getvalue(pt, nime, SH, "E" & n +  16 )
                    .Cells(k +  16 ,  6 ).Value = Getvalue(pt, nime, SH, "F" & n +  16 )
                    .Cells(k +  16 ,  7 ).Value = Getvalue(pt, nime, SH, "G" & n +  16 )
                    .Cells(k +  16 ,  8 ).Value = Getvalue(pt, nime, SH, "H" & n +  16 )
                    .Cells(k +  16 ,  9 ).Value = Getvalue(pt, nime, SH, "I" & n +  16 )
                    .Cells(k +  16 ,  10 ).Value = Getvalue(pt, nime, SH, "J" & n +  16 )
                    .Cells(k +  16 ,  11 ).Value = Getvalue(pt, nime, SH, "K" & n +  16 )
                    .Cells(k +  16 ,  12 ).Value = Getvalue(pt, nime, SH, "L" & n +  16 )
                    .Cells(k +  16 ,  13 ).Value = Getvalue(pt, nime, SH, "M" & n +  16 )
                    .Cells(k +  16 ,  14 ).Value = Getvalue(pt, nime, SH, "N" & n +  16 )
                    .Cells(k +  16 ,  15 ).Value = Getvalue(pt, nime, SH, "O" & n +  16 )
                    .Cells(k +  16 ,  16 ).Value = Getvalue(pt, nime, SH, "P" & n +  16 )
                    .Cells(k +  16 ,  17 ).Value = Getvalue(pt, nime, SH, "Q" & n +  16 )
                    .Cells(k +  16 ,  18 ).Value = Getvalue(pt, nime, SH, "R" & n +  16 )
                    .Cells(k +  16 ,  19 ).Value = Getvalue(pt, nime, SH, "S" & n +  16 )
                    .Cells(k +  16 ,  20 ).Value = Getvalue(pt, nime, SH, "T" & n +  16 )
                    .Cells(k +  16 ,  21 ).Value = Getvalue(pt, nime, SH, "U" & n +  16 )
                    .Cells(k +  16 ,  22 ).Value = Getvalue(pt, nime, SH, "V" & n +  16 )
                    .Cells(k +  16 ,  23 ).Value = Getvalue(pt, nime, SH, "W" & n +  16 )
                    .Cells(k +  16 ,  24 ).Value = Getvalue(pt, nime, SH, "X" & n +  16 )
                    .Cells(k +  16 ,  25 ).Value = Getvalue(pt, nime, SH, "Y" & n +  16 )
                    .Cells(k +  16 ,  26 ).Value = Getvalue(pt, nime, SH, "Z" & n +  16 )
                    .Cells(k +  16 ,  27 ).Value = Getvalue(pt, nime, SH, "AA" & n +  16 )
                    .Cells(k +  16 ,  28 ).Value = Getvalue(pt, nime, SH, "AB" & n +  16 )
                    
                      
   '                 .Cells(l, 8).Value = Getvalue(pt, nime, sh, "B" & n)
                End With
                n = n +  1 
                k = k +  1 
    
Curr_i = Curr_i +  1 
UpdateProgressBar1 Curr_i / RowMax *  100 , "Processing " & Format(Curr_i / RowMax, "0%") & "..."

                
            Loop Until Getvalue(pt, nime, SH, cel) =  0 
                    
            If Err Then MsgBox "S E H F!"

      '  End If
sex2
End Sub



Private Function Getvalue(path, file, sheet, ref)
    Dim Arg As String
    Arg = "'" & path & "[" & file & "]" & sheet & "'!" & Range(ref).Range("A1").Address(, , xlR1C1)
    'A1-2ci fayldan hardan goturek
     Getvalue = ExecuteExcel4Macro(Arg)
End Function
Private Function FileExists3(fname) As Boolean
    Set filesys = CreateObject("scripting.filesystemobject")
    FileExists3 = filesys.fileexists(fname)
End Function


...
Рейтинг: 0 / 0
24.06.2008, 09:03
    #35389871
Рустик_Уфа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
попробуй подключить папку как сетевой диск (Z:, X: ...) и укажи путь как Z:\file.xls
...
Рейтинг: 0 / 0
24.06.2008, 09:51
    #35389953
df4545
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
Рустик_Уфапопробуй подключить папку как сетевой диск (Z:, X: ...) и укажи путь как Z:\file.xls
Не очень помогает. Я думаю может вот эта как то можно по другому?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
With Workbooks("disp.xls").Sheets("Ëèñò1")
                    '.Cells(k, 1).Value = Getvalue(pt, nime, sh, cel)
                    .Cells(k,  2 ).Value = Getvalue(pt, nime, SH, "B" & n)
                    .Cells(k,  3 ).Value = Getvalue(pt, nime, SH, "C" & n)
                    .Cells(k,  4 ).Value = Getvalue(pt, nime, SH, "D" & n)
                    .Cells(k,  5 ).Value = Getvalue(pt, nime, SH, "E" & n)
..
..
..
...
Рейтинг: 0 / 0
24.06.2008, 10:02
    #35389979
Рустик_Уфа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
ну я как понял у тебя только по сети "тормозит" ?
...
Рейтинг: 0 / 0
24.06.2008, 10:14
    #35390002
df4545
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
Нет, без сети тоже долго около - 2 мин., по сети -6-7 мин.
...
Рейтинг: 0 / 0
24.06.2008, 11:46
    #35390281
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
анализируй это: Function Getvalue
так как это выполняется каждый раз в цикле Loop Until
...
Рейтинг: 0 / 0
24.06.2008, 12:09
    #35390396
andr_andrey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
А чего ты ожидал от такого количества лишних операций (склеиваний одних и тех же данных, сложений) и инициализаций/вызовов нехилого COM-объекта (ExecuteExcel4Macro), и не зачем вызывать обновление шкалы прогресса бестолку.
...
Рейтинг: 0 / 0
24.06.2008, 13:20
    #35390708
df4545
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
andr_andreyА чего ты ожидал от такого количества лишних операций (склеиваний одних и тех же данных, сложений) и инициализаций/вызовов нехилого COM-объекта (ExecuteExcel4Macro), и не зачем вызывать обновление шкалы прогресса бестолку.
Дело в том что я недавно занимаюс с VBA. Покажите пожалуйста, где, что и как можно исправить.
...
Рейтинг: 0 / 0
24.06.2008, 13:26
    #35390738
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
открыть объектную переменную с другим sheet, из которого getvalue делаешь заранее! избавиться от getvalue при присвоении значений и брать напрямую из уже открытого объекта
...
Рейтинг: 0 / 0
24.06.2008, 13:35
    #35390773
df4545
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
Konst_Oneоткрыть объектную переменную с другим sheet, из которого getvalue делаешь заранее! избавиться от getvalue при присвоении значений и брать напрямую из уже открытого объекта
Если несложно покажите пожалуйста, на моем примере, так мне понятнее будеть.
...
Рейтинг: 0 / 0
24.06.2008, 16:47
    #35391475
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
df4545Если несложно покажите пожалуйста, на моем примере, так мне понятнее будеть.смотрите модуль1
...
Рейтинг: 0 / 0
24.06.2008, 16:58
    #35391535
andr_andrey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
df4545 Konst_Oneоткрыть объектную переменную с другим sheet, из которого getvalue делаешь заранее! избавиться от getvalue при присвоении значений и брать напрямую из уже открытого объекта
Если несложно покажите пожалуйста, на моем примере, так мне понятнее будеть.

Я надеюсь Вы понимаете, что за Вас работу никто делать не будет.
Приблизительно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
    ' +++ Вспомогательный Excel
    Dim xls As Excel.Application
...
    '+++ Загрузить BOSH7.XLS
    Set xls = GetObject(path & nime)
...
            '+++ Заменить все строки на 
            .Cells(k,  2 ).Value = xls.Worksheets(SH).Range("B" & n).Value
...
            nn=n+ 16 
            kk=k+ 16 
            .Cells(kk,  2 ).Value = xls.Worksheets(SH).Range("B" & nn).Value
...
    Loop Until xls.Worksheets(SH).Range(cel).Value =  0 

...
    '+++ Убрать за собой, если хочешь
    xls.Quit
    Set xls = Nothing

Ну как не трогать прогрессбар, если нет изменений, сам додумай .
...
Рейтинг: 0 / 0
24.06.2008, 17:03
    #35391559
andr_andrey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
klen_ df4545Если несложно покажите пожалуйста, на моем примере, так мне понятнее будеть.смотрите модуль1
После такого он уже и по Help-у лазить не будет, и радости открытия не прочувствует.
...
Рейтинг: 0 / 0
25.06.2008, 07:37
    #35392391
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
andr_andrey klen_ df4545Если несложно покажите пожалуйста, на моем примере, так мне понятнее будеть.смотрите модуль1
После такого он уже и по Help-у лазить не будет, и радости открытия не прочувствует.да я сам только учусь,
постоянно что-то новое узнаю
...
Рейтинг: 0 / 0
25.06.2008, 08:57
    #35392480
df4545
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
klen_ df4545Если несложно покажите пожалуйста, на моем примере, так мне понятнее будеть.смотрите модуль1

Я опять что то не так делаю, всеравно ошибка получается в этом строке: Set RN1 = WB1.Sheets(SH).Range("B6:AM18")
...
Рейтинг: 0 / 0
25.06.2008, 12:56
    #35393307
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
какая именно ошибка и в каком модуле (1-ом, 2-ом, и т.д.) ?
...
Рейтинг: 0 / 0
25.06.2008, 15:14
    #35393818
df4545
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
klen_какая именно ошибка и в каком модуле (1-ом, 2-ом, и т.д.) ?
Run-time error "9":
Subscript out of range
...
Рейтинг: 0 / 0
25.06.2008, 16:10
    #35394044
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить время выполнение программы
какое имя файла в этих переменных pt & nime
выложен ли, он, у нас на форуме?
я попробовал указать неверный адрес Range("B6: AQ50 "), и всё равно, всё сработало без ошибок
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ускорить время выполнение программы / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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