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

Вход

Регистрация

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

 

= Мир MS Excel/Отображение прогресса выполнения процедуры БЕЗ ЦИКЛА - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Отображение прогресса выполнения процедуры БЕЗ ЦИКЛА (Макросы/Sub)
Отображение прогресса выполнения процедуры БЕЗ ЦИКЛА
ZamoK Дата: Вторник, 06.06.2017, 15:02 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
Посредством этой темы был получен макрос. Процесс довольно долгий т.к. происходит копирование файла с сервера. Хотелось бы наблюдать прогресс выполнения, а то создаётся впечатление зависания... Если бы это был цикл, то вопросов бы не было, но реализация данной задачи оказалась не так уж и проста, и без помощи "гуру" мне не обойтись.
Процедура копирования:
На это нужен прогресс:[vba]
Код
FileCopy sFileName, sNewFileName 'копируем файл
[/vba]Размер файла нашёл так:
sz&=FileLen("\\192.168.178.17\Книга 1\Книга1.xls") , но что с этой цифрой сделать ума не приложу.


Я не Гуру, но стремлюсь!

Сообщение отредактировал ZamoK - Среда, 07.06.2017, 09:28
 
Ответить
СообщениеПосредством этой темы был получен макрос. Процесс довольно долгий т.к. происходит копирование файла с сервера. Хотелось бы наблюдать прогресс выполнения, а то создаётся впечатление зависания... Если бы это был цикл, то вопросов бы не было, но реализация данной задачи оказалась не так уж и проста, и без помощи "гуру" мне не обойтись.
Процедура копирования:
На это нужен прогресс:[vba]
Код
FileCopy sFileName, sNewFileName 'копируем файл
[/vba]Размер файла нашёл так:
sz&=FileLen("\\192.168.178.17\Книга 1\Книга1.xls") , но что с этой цифрой сделать ума не приложу.

Автор - ZamoK
Дата добавления - 06.06.2017 в 15:02
AndreTM Дата: Вторник, 06.06.2017, 21:21 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Ну, Маняша там правильно советовала посмотреть в сторону VBS. Вернее, в сторону WSH.
Только я бы использовал не FileSystemObject, а Shell:
[vba]
Код
    sFileName = "\\192.168.178.17\Книга 1\Книга1.xls"
    sNewFilePath = "D:\"
    
    Set objShellApp = CreateObject("Shell.Application")
    Set objFolder = objShellApp.Namespace(sNewFilePath)
    objFolder.CopyHere sFileName, 16
    
    MsgBox "Done"
[/vba]
Ну и можно ещё предварительно делать проверку доступности сетевого ресурса через .OfflineStatus


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Вторник, 06.06.2017, 21:49
 
Ответить
СообщениеНу, Маняша там правильно советовала посмотреть в сторону VBS. Вернее, в сторону WSH.
Только я бы использовал не FileSystemObject, а Shell:
[vba]
Код
    sFileName = "\\192.168.178.17\Книга 1\Книга1.xls"
    sNewFilePath = "D:\"
    
    Set objShellApp = CreateObject("Shell.Application")
    Set objFolder = objShellApp.Namespace(sNewFilePath)
    objFolder.CopyHere sFileName, 16
    
    MsgBox "Done"
[/vba]
Ну и можно ещё предварительно делать проверку доступности сетевого ресурса через .OfflineStatus

Автор - AndreTM
Дата добавления - 06.06.2017 в 21:21
ZamoK Дата: Среда, 07.06.2017, 09:04 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
AndreTM, Что-то я не понял, это куда вставить? Если в макрос то выдаёт ошибку: [vba]
Код
objFolder.CopyHere sFileName, 16
[/vba]Может код целиком?


Я не Гуру, но стремлюсь!
 
Ответить
СообщениеAndreTM, Что-то я не понял, это куда вставить? Если в макрос то выдаёт ошибку: [vba]
Код
objFolder.CopyHere sFileName, 16
[/vba]Может код целиком?

Автор - ZamoK
Дата добавления - 07.06.2017 в 09:04
Roman777 Дата: Среда, 07.06.2017, 09:15 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
AndreTM, Я и не знал, то shell так умеет, огонь!
У меня всё четко отработало.
ZamoK, Возможно Вы в качестве sNewFilePath не адрес целевой папки указали, а адрес файла... или что-нибудь из такого, мелкого, проще глянуть как Вы прикрутили у себя.
[offtop]но всё же это относится больше к предыдущей теме, не к этой)[/offtop]


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Среда, 07.06.2017, 09:20
 
Ответить
СообщениеAndreTM, Я и не знал, то shell так умеет, огонь!
У меня всё четко отработало.
ZamoK, Возможно Вы в качестве sNewFilePath не адрес целевой папки указали, а адрес файла... или что-нибудь из такого, мелкого, проще глянуть как Вы прикрутили у себя.
[offtop]но всё же это относится больше к предыдущей теме, не к этой)[/offtop]

Автор - Roman777
Дата добавления - 07.06.2017 в 09:15
AndreTM Дата: Среда, 07.06.2017, 09:25 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
ZamoK, это и есть "код целиком" :)

Надо в вашем коде (из первого поста) заменить кусок от строки sFileName = ... и до строки MsgBox ... на приведенный мною кусочек кода.


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Среда, 07.06.2017, 09:26
 
Ответить
СообщениеZamoK, это и есть "код целиком" :)

Надо в вашем коде (из первого поста) заменить кусок от строки sFileName = ... и до строки MsgBox ... на приведенный мною кусочек кода.

Автор - AndreTM
Дата добавления - 07.06.2017 в 09:25
ZamoK Дата: Среда, 07.06.2017, 09:37 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
[vba]
Код
Sub tt() 'копирование файла
    Dim sFileName As String, sNewFileName As String
    sFileName = "\\192.168.178.17\Книга 1\Книга1.xls"  'имя файла для копирования"
    NewFilePath = "D:\"    'имя копируемого файла. Директория(в данном случае папка исходник) должна существовать
    Set objShellApp = CreateObject("Shell.Application")
    Set objFolder = objShellApp.Namespace(sNewFilePath)
    objFolder.CopyHere sFileName, 16
    MsgBox "Done"
End Sub
[/vba]не работает :(
Пишет: Object variable or With block variable not set


Я не Гуру, но стремлюсь!

Сообщение отредактировал ZamoK - Среда, 07.06.2017, 09:37
 
Ответить
Сообщение[vba]
Код
Sub tt() 'копирование файла
    Dim sFileName As String, sNewFileName As String
    sFileName = "\\192.168.178.17\Книга 1\Книга1.xls"  'имя файла для копирования"
    NewFilePath = "D:\"    'имя копируемого файла. Директория(в данном случае папка исходник) должна существовать
    Set objShellApp = CreateObject("Shell.Application")
    Set objFolder = objShellApp.Namespace(sNewFilePath)
    objFolder.CopyHere sFileName, 16
    MsgBox "Done"
End Sub
[/vba]не работает :(
Пишет: Object variable or With block variable not set

Автор - ZamoK
Дата добавления - 07.06.2017 в 09:37
Roman777 Дата: Среда, 07.06.2017, 09:41 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
ZamoK, а где sNewFileName адрес?


Много чего не знаю!!!!
 
Ответить
СообщениеZamoK, а где sNewFileName адрес?

Автор - Roman777
Дата добавления - 07.06.2017 в 09:41
_Boroda_ Дата: Среда, 07.06.2017, 09:43 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
В Вашем коде
4 строка - NewFilePath
6 строка - sNewFilePath
2 строка - sNewFileName


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВ Вашем коде
4 строка - NewFilePath
6 строка - sNewFilePath
2 строка - sNewFileName

Автор - _Boroda_
Дата добавления - 07.06.2017 в 09:43
AndreTM Дата: Среда, 07.06.2017, 09:46 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Роман вам правильно сказал - "надо смотреть на весь код, как прикрутили у себя".
У нас же нет файла-образца вашего. А в "наших" файлах все работает.

Это компилятор же ругается, наверняка там где-то Option Explicit есть, да? А раз используете параметр - так и переменные новые через DIM определить не зазорно было бы. Или нужно начинать объяснения с рассказа об основах и синтаксисе VBA/VBS?

И особенно мне нравится Dim sNewFileName и NewFilePath :)
Ничего не замечаете?

Ладно, сделаем проще, раз уж даже скопипастить не получается: :)


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Среда, 07.06.2017, 09:53
 
Ответить
СообщениеРоман вам правильно сказал - "надо смотреть на весь код, как прикрутили у себя".
У нас же нет файла-образца вашего. А в "наших" файлах все работает.

Это компилятор же ругается, наверняка там где-то Option Explicit есть, да? А раз используете параметр - так и переменные новые через DIM определить не зазорно было бы. Или нужно начинать объяснения с рассказа об основах и синтаксисе VBA/VBS?

И особенно мне нравится Dim sNewFileName и NewFilePath :)
Ничего не замечаете?

Ладно, сделаем проще, раз уж даже скопипастить не получается: :)

Автор - AndreTM
Дата добавления - 07.06.2017 в 09:46
ZamoK Дата: Среда, 07.06.2017, 10:02 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
уже скопировал и все ровно тоже самое - не работает :(
Пишет: Object variable or With block variable not set
К сообщению приложен файл: 111.rar (13.2 Kb)


Я не Гуру, но стремлюсь!

Сообщение отредактировал ZamoK - Среда, 07.06.2017, 10:14
 
Ответить
Сообщениеуже скопировал и все ровно тоже самое - не работает :(
Пишет: Object variable or With block variable not set

Автор - ZamoK
Дата добавления - 07.06.2017 в 10:02
Manyasha Дата: Среда, 07.06.2017, 10:53 | Сообщение № 11
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
У меня тоже не работает... Убираю тип стринг для sNewFilePath
[vba]
Код
Dim sFileName As String, sNewFilePath
[/vba]
начинает работать %)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеУ меня тоже не работает... Убираю тип стринг для sNewFilePath
[vba]
Код
Dim sFileName As String, sNewFilePath
[/vba]
начинает работать %)

Автор - Manyasha
Дата добавления - 07.06.2017 в 10:53
Roman777 Дата: Среда, 07.06.2017, 11:04 | Сообщение № 12
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Manyasha, так sNewFilePath в данном случае инициализирован как Variant
Если я правильно понял, так и должно быть:
[url=https://msdn.microsoft.com/en-us/library/windows/desktop/bb774085(v=vs.85).aspx]MDSN[/url]
[offtop]уже 3 раза пытаюсь, не могу нормально ссылку вставить =( Что-то не соображаю что не так[/offtop]


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Среда, 07.06.2017, 11:18
 
Ответить
СообщениеManyasha, так sNewFilePath в данном случае инициализирован как Variant
Если я правильно понял, так и должно быть:
[url=https://msdn.microsoft.com/en-us/library/windows/desktop/bb774085(v=vs.85).aspx]MDSN[/url]
[offtop]уже 3 раза пытаюсь, не могу нормально ссылку вставить =( Что-то не соображаю что не так[/offtop]

Автор - Roman777
Дата добавления - 07.06.2017 в 11:04
ZamoK Дата: Среда, 07.06.2017, 11:16 | Сообщение № 13
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
В опытном образце тоже заработало, в оригинале пишет что скопировано, но на самом деле файл без изменений, но не суть мы тут как-то плавно отошли от темы deal , позволю заметить, что отображение данного процесса здесь как-бы нет, даже если оригинал скопировался бы, то это заняло бы какое-то время, хотелось бы отобразить данный процесс.


Я не Гуру, но стремлюсь!

Сообщение отредактировал ZamoK - Среда, 07.06.2017, 11:18
 
Ответить
СообщениеВ опытном образце тоже заработало, в оригинале пишет что скопировано, но на самом деле файл без изменений, но не суть мы тут как-то плавно отошли от темы deal , позволю заметить, что отображение данного процесса здесь как-бы нет, даже если оригинал скопировался бы, то это заняло бы какое-то время, хотелось бы отобразить данный процесс.

Автор - ZamoK
Дата добавления - 07.06.2017 в 11:16
ZamoK Дата: Среда, 07.06.2017, 11:32 | Сообщение № 14
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
начинает работать
макрос проходит без ошибки, но копирования не происходит!!!


Я не Гуру, но стремлюсь!
 
Ответить
Сообщение
начинает работать
макрос проходит без ошибки, но копирования не происходит!!!

Автор - ZamoK
Дата добавления - 07.06.2017 в 11:32
Roman777 Дата: Среда, 07.06.2017, 11:40 | Сообщение № 15
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Действительно, копирует только при:
[vba]
Код
    Dim sFileName As Variant, sNewFilePath As Variant
[/vba]
ну или
[vba]
Код
    Dim sFileName, sNewFilePath
[/vba]
что будет тоже самое...


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Среда, 07.06.2017, 11:40
 
Ответить
СообщениеДействительно, копирует только при:
[vba]
Код
    Dim sFileName As Variant, sNewFilePath As Variant
[/vba]
ну или
[vba]
Код
    Dim sFileName, sNewFilePath
[/vba]
что будет тоже самое...

Автор - Roman777
Дата добавления - 07.06.2017 в 11:40
RAN Дата: Среда, 07.06.2017, 12:58 | Сообщение № 16
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Цитата
CopyHere(<Путь>,<Опции>)
Назначение: копирование файла или папки вовнутрь текущей папки. Возвращаемого значения нет.
Параметры:
<Путь> - полный путь к копируемому файлу или папке (строка) или объект FolderItem.

И хотите, чтобы String работал. ;)


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Цитата
CopyHere(<Путь>,<Опции>)
Назначение: копирование файла или папки вовнутрь текущей папки. Возвращаемого значения нет.
Параметры:
<Путь> - полный путь к копируемому файлу или папке (строка) или объект FolderItem.

И хотите, чтобы String работал. ;)

Автор - RAN
Дата добавления - 07.06.2017 в 12:58
ZamoK Дата: Среда, 07.06.2017, 13:17 | Сообщение № 17
Группа: Проверенные
Ранг: Обитатель
Сообщений: 268
Репутация: 4 ±
Замечаний: 0% ±

Excel 2003-2016
Roman777, Истина . Все работает yahoo , оч круто. clap AndreTM, респект!


Я не Гуру, но стремлюсь!
 
Ответить
СообщениеRoman777, Истина . Все работает yahoo , оч круто. clap AndreTM, респект!

Автор - ZamoK
Дата добавления - 07.06.2017 в 13:17
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Отображение прогресса выполнения процедуры БЕЗ ЦИКЛА (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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