powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ускорить время выполнение программы
21 сообщений из 21, страница 1 из 1
ускорить время выполнение программы
    #35387920
df4545
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программа (DISP.rar) долго работаеть. Если работать из сети ('pt = "\\192.168.10.2\disp\")- очень долго(6-7 мин.). Помогите пожалуйста, как можно ускорить эта задачу?
...
Рейтинг: 0 / 0
ускорить время выполнение программы
    #35389857
df4545
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я знаю что здесь очень много что "не так". Как то можно оптимизировать код. Но как? Помогите пожалуйста.
...
Рейтинг: 0 / 0
ускорить время выполнение программы
    #35389858
Рустик_Уфа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
df4545Я знаю что здесь очень много что "не так". Как то можно оптимизировать код. Но как? Помогите пожалуйста.
вря ли ктото будет качать, код выложи лучше на форум
...
Рейтинг: 0 / 0
ускорить время выполнение программы
    #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
ускорить время выполнение программы
    #35389871
Рустик_Уфа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй подключить папку как сетевой диск (Z:, X: ...) и укажи путь как Z:\file.xls
...
Рейтинг: 0 / 0
ускорить время выполнение программы
    #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
ускорить время выполнение программы
    #35389979
Рустик_Уфа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я как понял у тебя только по сети "тормозит" ?
...
Рейтинг: 0 / 0
ускорить время выполнение программы
    #35390002
df4545
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, без сети тоже долго около - 2 мин., по сети -6-7 мин.
...
Рейтинг: 0 / 0
ускорить время выполнение программы
    #35390281
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
анализируй это: Function Getvalue
так как это выполняется каждый раз в цикле Loop Until
...
Рейтинг: 0 / 0
ускорить время выполнение программы
    #35390396
andr_andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чего ты ожидал от такого количества лишних операций (склеиваний одних и тех же данных, сложений) и инициализаций/вызовов нехилого COM-объекта (ExecuteExcel4Macro), и не зачем вызывать обновление шкалы прогресса бестолку.
...
Рейтинг: 0 / 0
ускорить время выполнение программы
    #35390708
df4545
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andr_andreyА чего ты ожидал от такого количества лишних операций (склеиваний одних и тех же данных, сложений) и инициализаций/вызовов нехилого COM-объекта (ExecuteExcel4Macro), и не зачем вызывать обновление шкалы прогресса бестолку.
Дело в том что я недавно занимаюс с VBA. Покажите пожалуйста, где, что и как можно исправить.
...
Рейтинг: 0 / 0
ускорить время выполнение программы
    #35390738
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
открыть объектную переменную с другим sheet, из которого getvalue делаешь заранее! избавиться от getvalue при присвоении значений и брать напрямую из уже открытого объекта
...
Рейтинг: 0 / 0
ускорить время выполнение программы
    #35390773
df4545
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_Oneоткрыть объектную переменную с другим sheet, из которого getvalue делаешь заранее! избавиться от getvalue при присвоении значений и брать напрямую из уже открытого объекта
Если несложно покажите пожалуйста, на моем примере, так мне понятнее будеть.
...
Рейтинг: 0 / 0
ускорить время выполнение программы
    #35391475
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
df4545Если несложно покажите пожалуйста, на моем примере, так мне понятнее будеть.смотрите модуль1
...
Рейтинг: 0 / 0
ускорить время выполнение программы
    #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
ускорить время выполнение программы
    #35391559
andr_andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
klen_ df4545Если несложно покажите пожалуйста, на моем примере, так мне понятнее будеть.смотрите модуль1
После такого он уже и по Help-у лазить не будет, и радости открытия не прочувствует.
...
Рейтинг: 0 / 0
ускорить время выполнение программы
    #35392391
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andr_andrey klen_ df4545Если несложно покажите пожалуйста, на моем примере, так мне понятнее будеть.смотрите модуль1
После такого он уже и по Help-у лазить не будет, и радости открытия не прочувствует.да я сам только учусь,
постоянно что-то новое узнаю
...
Рейтинг: 0 / 0
ускорить время выполнение программы
    #35392480
df4545
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
klen_ df4545Если несложно покажите пожалуйста, на моем примере, так мне понятнее будеть.смотрите модуль1

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


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