Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Создание прогресс-бара выполнения макроса - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание прогресс-бара выполнения макроса (Макросы/Sub)
Создание прогресс-бара выполнения макроса
Viper25 Дата: Понедельник, 26.12.2016, 11:25 | Сообщение № 21
Группа: Пользователи
Ранг: Участник
Сообщений: 93
Репутация: 4 ±
Замечаний: 20% ±

Excel 2007
Разобрался.
Работает.
 
Ответить
СообщениеРазобрался.
Работает.

Автор - Viper25
Дата добавления - 26.12.2016 в 11:25
Viper25 Дата: Понедельник, 26.12.2016, 14:11 | Сообщение № 22
Группа: Пользователи
Ранг: Участник
Сообщений: 93
Репутация: 4 ±
Замечаний: 20% ±

Excel 2007
Ругается: "Compile error: Variable not defined"
[vba]
Код
Option Explicit

Sub CreateFact()
Application.ScreenUpdating = False
Application.CutCopyMode = False
Application.DisplayAlerts = False

'***Копируем данные из входящих БДР***

'задаем путь к входящим БДР
Dim myPath As String
myPath = GetFolderPath
'Задаем часть имени файла - номер месяца
Dim Month As String
Month = Application.InputBox("Введите номер месяца", Type:=2)
'Задаем имя отчета о префакте
Dim BDR_f As Excel.Workbook
Set BDR_f = ThisWorkbook

'***********************************
'Вставляем БДР АСК
Dim filenameASK As String
filenameASK = myPath + "\" + Month + "_БДР_f_АСК.xlsx"

  n = n + 1 / 2: p = 2 * n
  Application.StatusBar = "Выполнено: " & n * 100 & "% " & String(p, ChrW(8700)): DoEvents

Workbooks.Open Filename:=filenameASK, UpdateLinks:=False
Workbooks(Month + "_БДР_f_АСК.xlsx").Worksheets("ФДР(USD)").Range("G9:WT253").Copy
BDR_f.Worksheets("АСК").Range("G10:WT254").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Workbooks(Month + "_БДР_f_АСК.xlsx").Close
'Вставляем БДР КРМ
Dim filenameKRM As String
filenameKRM = myPath + "\" + Month + "_БДР_f_КРМ.xlsx"

  n = n + 1 / 2: p = 2 * n
  Application.StatusBar = "Выполнено: " & n * 100 & "% " & String(p, ChrW(8700)): DoEvents

Workbooks.Open Filename:=filenameKRM, UpdateLinks:=False
Workbooks(Month + "_БДР_f_КРМ.xlsx").Worksheets("ФДР(USD)").Range("G9:WT253").Copy
BDR_f.Worksheets("КРМ").Range("G10:WT254").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Workbooks(Month + "_БДР_f_КРМ.xlsx").Close

Application.ScreenUpdating = True
Application.CutCopyMode = True
Application.DisplayAlerts = True
End Sub

Function GetFolderPath(Optional ByVal title As String = "Выберите папку", Optional ByVal initialPath As String = "c:\1\") As String
Dim PS As String: PS = Application.PathSeparator
    With Application.FileDialog(msoFileDialogFolderPicker)
        If Not Right(initialPath, 1) = PS Then initialPath = initialPath & PS
        .ButtonName = "Выбрать": .title = title: .InitialFileName = initialPath
        If .Show <> -1 Then Exit Function
        GetFolderPath = .SelectedItems(1)
        If Not Right(GetFolderPath, 1) = PS Then GetFolderPath = GetFolderPath & PS
    End With
End Function
[/vba]


Сообщение отредактировал Viper25 - Понедельник, 26.12.2016, 15:22
 
Ответить
СообщениеРугается: "Compile error: Variable not defined"
[vba]
Код
Option Explicit

Sub CreateFact()
Application.ScreenUpdating = False
Application.CutCopyMode = False
Application.DisplayAlerts = False

'***Копируем данные из входящих БДР***

'задаем путь к входящим БДР
Dim myPath As String
myPath = GetFolderPath
'Задаем часть имени файла - номер месяца
Dim Month As String
Month = Application.InputBox("Введите номер месяца", Type:=2)
'Задаем имя отчета о префакте
Dim BDR_f As Excel.Workbook
Set BDR_f = ThisWorkbook

'***********************************
'Вставляем БДР АСК
Dim filenameASK As String
filenameASK = myPath + "\" + Month + "_БДР_f_АСК.xlsx"

  n = n + 1 / 2: p = 2 * n
  Application.StatusBar = "Выполнено: " & n * 100 & "% " & String(p, ChrW(8700)): DoEvents

Workbooks.Open Filename:=filenameASK, UpdateLinks:=False
Workbooks(Month + "_БДР_f_АСК.xlsx").Worksheets("ФДР(USD)").Range("G9:WT253").Copy
BDR_f.Worksheets("АСК").Range("G10:WT254").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Workbooks(Month + "_БДР_f_АСК.xlsx").Close
'Вставляем БДР КРМ
Dim filenameKRM As String
filenameKRM = myPath + "\" + Month + "_БДР_f_КРМ.xlsx"

  n = n + 1 / 2: p = 2 * n
  Application.StatusBar = "Выполнено: " & n * 100 & "% " & String(p, ChrW(8700)): DoEvents

Workbooks.Open Filename:=filenameKRM, UpdateLinks:=False
Workbooks(Month + "_БДР_f_КРМ.xlsx").Worksheets("ФДР(USD)").Range("G9:WT253").Copy
BDR_f.Worksheets("КРМ").Range("G10:WT254").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Workbooks(Month + "_БДР_f_КРМ.xlsx").Close

Application.ScreenUpdating = True
Application.CutCopyMode = True
Application.DisplayAlerts = True
End Sub

Function GetFolderPath(Optional ByVal title As String = "Выберите папку", Optional ByVal initialPath As String = "c:\1\") As String
Dim PS As String: PS = Application.PathSeparator
    With Application.FileDialog(msoFileDialogFolderPicker)
        If Not Right(initialPath, 1) = PS Then initialPath = initialPath & PS
        .ButtonName = "Выбрать": .title = title: .InitialFileName = initialPath
        If .Show <> -1 Then Exit Function
        GetFolderPath = .SelectedItems(1)
        If Not Right(GetFolderPath, 1) = PS Then GetFolderPath = GetFolderPath & PS
    End With
End Function
[/vba]

Автор - Viper25
Дата добавления - 26.12.2016 в 14:11
Alex_ST Дата: Понедельник, 26.12.2016, 14:32 | Сообщение № 23
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3208
Репутация: 609 ±
Замечаний: 0% ±

2003
Ну, естественно. Ведь после объявления [vba]
Код
Dim filenameQQQ As String
[/vba] в следующей строке Вы устанавливаете не его, а [vba]
Код
filenameFlot = myPath + "\" + Month + "_f_Товары.xlsx"
[/vba] поэтому filenameQQQ остаётся = "" и поэтому [vba]
Код
Workbooks.Open Filename:=filenameQQQ
[/vba] даёт ошибку.
Внимательнее надо быть, когда переменные переименовываете.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеНу, естественно. Ведь после объявления [vba]
Код
Dim filenameQQQ As String
[/vba] в следующей строке Вы устанавливаете не его, а [vba]
Код
filenameFlot = myPath + "\" + Month + "_f_Товары.xlsx"
[/vba] поэтому filenameQQQ остаётся = "" и поэтому [vba]
Код
Workbooks.Open Filename:=filenameQQQ
[/vba] даёт ошибку.
Внимательнее надо быть, когда переменные переименовываете.

Автор - Alex_ST
Дата добавления - 26.12.2016 в 14:32
Alex_ST Дата: Понедельник, 26.12.2016, 14:35 | Сообщение № 24
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3208
Репутация: 609 ±
Замечаний: 0% ±

2003
И, к стати, посты с содержанием "разобрался" абсолютно не несут никакой информации для других, читающих топик.
Если уж задали вопрос и на него начали Вам отвечать либо по таймауту не можете свой вопрос скорректировать, то в правилах хорошего тона - писать, в чём была ошибка. Дабы другим понятно было и они не наступали на те же грабли.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеИ, к стати, посты с содержанием "разобрался" абсолютно не несут никакой информации для других, читающих топик.
Если уж задали вопрос и на него начали Вам отвечать либо по таймауту не можете свой вопрос скорректировать, то в правилах хорошего тона - писать, в чём была ошибка. Дабы другим понятно было и они не наступали на те же грабли.

Автор - Alex_ST
Дата добавления - 26.12.2016 в 14:35
Viper25 Дата: Понедельник, 26.12.2016, 15:12 | Сообщение № 25
Группа: Пользователи
Ранг: Участник
Сообщений: 93
Репутация: 4 ±
Замечаний: 20% ±

Excel 2007
Alex_ST, я ни в коем случае не хочу никого обидеть.
Наоборот, спасибо за подсказки.
Отредактировал свой предыдущий пост.
По данному коду ругается на параметр "n".
 
Ответить
СообщениеAlex_ST, я ни в коем случае не хочу никого обидеть.
Наоборот, спасибо за подсказки.
Отредактировал свой предыдущий пост.
По данному коду ругается на параметр "n".

Автор - Viper25
Дата добавления - 26.12.2016 в 15:12
Alex_ST Дата: Понедельник, 26.12.2016, 15:47 | Сообщение № 26
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3208
Репутация: 609 ±
Замечаний: 0% ±

2003
Да не в обиде дело, а в читателях, которые не могут понять, в чём была засада.
Ну а уж если компилятор Вам прямо говорит, что не определена переменная n (а ещё, к стати и p) то задайте их в конце-концов [vba]
Код
Dim n As Single, p As Single
[/vba]



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеДа не в обиде дело, а в читателях, которые не могут понять, в чём была засада.
Ну а уж если компилятор Вам прямо говорит, что не определена переменная n (а ещё, к стати и p) то задайте их в конце-концов [vba]
Код
Dim n As Single, p As Single
[/vba]

Автор - Alex_ST
Дата добавления - 26.12.2016 в 15:47
Alex_ST Дата: Понедельник, 26.12.2016, 16:04 | Сообщение № 27
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3208
Репутация: 609 ±
Замечаний: 0% ±

2003
Блин! Терпеть не могу чужие коды без комментариев разбирать, тем более, когда они слеплены из кусков процедур, написанных разными авторами и для применения в других модулях! Да ещё и не видя файла с обрабатываемыми данными и не зная, что нужно получить killed
Ну Вы хотя бы в пошаговом режиме пробегитесь по процедуре самостоятельно!
После задания Dim n As Single, p As Single компилятор ругаться перестаёт.
Но после выполнения строки [vba]
Код
filenameASK = myPath + "\" + Month + "_БДР_f_АСК.xlsx"
[/vba] видно, что слэш там лишний, т.к. он уже добавлен функцией GetFolderPath в конец задаваемого пользователем пути

ххххххххххххххххххххххххххххххххххххх
И кто Вас учил конкатенацию делать то через амперсанд, то через + ? >(



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Понедельник, 26.12.2016, 16:07
 
Ответить
СообщениеБлин! Терпеть не могу чужие коды без комментариев разбирать, тем более, когда они слеплены из кусков процедур, написанных разными авторами и для применения в других модулях! Да ещё и не видя файла с обрабатываемыми данными и не зная, что нужно получить killed
Ну Вы хотя бы в пошаговом режиме пробегитесь по процедуре самостоятельно!
После задания Dim n As Single, p As Single компилятор ругаться перестаёт.
Но после выполнения строки [vba]
Код
filenameASK = myPath + "\" + Month + "_БДР_f_АСК.xlsx"
[/vba] видно, что слэш там лишний, т.к. он уже добавлен функцией GetFolderPath в конец задаваемого пользователем пути

ххххххххххххххххххххххххххххххххххххх
И кто Вас учил конкатенацию делать то через амперсанд, то через + ? >(

Автор - Alex_ST
Дата добавления - 26.12.2016 в 16:04
Viper25 Дата: Вторник, 27.12.2016, 17:09 | Сообщение № 28
Группа: Пользователи
Ранг: Участник
Сообщений: 93
Репутация: 4 ±
Замечаний: 20% ±

Excel 2007
кто Вас учил конкатенацию делать то через амперсанд, то через +

Сотрудник, написавший код, уволился.
Теперь я пытаюсь код улучшить.
А поскольку нормальный материал по макросам в инете не нашел, пытаюсь сам разобраться.
Спасибо форумчанам за поддержку.
 
Ответить
Сообщение
кто Вас учил конкатенацию делать то через амперсанд, то через +

Сотрудник, написавший код, уволился.
Теперь я пытаюсь код улучшить.
А поскольку нормальный материал по макросам в инете не нашел, пытаюсь сам разобраться.
Спасибо форумчанам за поддержку.

Автор - Viper25
Дата добавления - 27.12.2016 в 17:09
Alex_ST Дата: Вторник, 27.12.2016, 21:11 | Сообщение № 29
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3208
Репутация: 609 ±
Замечаний: 0% ±

2003
нормальный материал по макросам в инете не нашел
Плохо искали.
Прямо здесь же есть раздел "Библиотека". А в ней кроме других очень хороших книжек - настольная книга программиста - Excel 2010 Power Programming with VBA John Walkenbach



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Среда, 28.12.2016, 16:22
 
Ответить
Сообщение
нормальный материал по макросам в инете не нашел
Плохо искали.
Прямо здесь же есть раздел "Библиотека". А в ней кроме других очень хороших книжек - настольная книга программиста - Excel 2010 Power Programming with VBA John Walkenbach

Автор - Alex_ST
Дата добавления - 27.12.2016 в 21:11
Viper25 Дата: Среда, 28.12.2016, 16:06 | Сообщение № 30
Группа: Пользователи
Ранг: Участник
Сообщений: 93
Репутация: 4 ±
Замечаний: 20% ±

Excel 2007
Alex_ST, спасибо.
Буду заглядывать.
 
Ответить
СообщениеAlex_ST, спасибо.
Буду заглядывать.

Автор - Viper25
Дата добавления - 28.12.2016 в 16:06
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание прогресс-бара выполнения макроса (Макросы/Sub)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!