Посредством этой темы был получен макрос. Процесс довольно долгий т.к. происходит копирование файла с сервера. Хотелось бы наблюдать прогресс выполнения, а то создаётся впечатление зависания... Если бы это был цикл, то вопросов бы не было, но реализация данной задачи оказалась не так уж и проста, и без помощи "гуру" мне не обойтись. Процедура копирования:
[vba]
Код
Sub tt() 'копирование файла Dim sFileName As String, sNewFileName As String
sFileName = "\\192.168.178.17\Книга 1\Книга1.xls" 'имя файла для копирования sNewFileName = "D:\Книга1.xls" 'имя копируемого файла. Директория(в данном случае диск D) должна существовать If Dir(sFileName, 16) = "" Then MsgBox "Нет такого файла", vbCritical, "Ошибка": Exit Sub
With ActiveWorkbook 'закрываем активную книгу .Close False End With End Sub
[/vba]
На это нужен прогресс:[vba]
Код
FileCopy sFileName, sNewFileName 'копируем файл
[/vba]Размер файла нашёл так: sz&=FileLen("\\192.168.178.17\Книга 1\Книга1.xls") , но что с этой цифрой сделать ума не приложу.
Посредством этой темы был получен макрос. Процесс довольно долгий т.к. происходит копирование файла с сервера. Хотелось бы наблюдать прогресс выполнения, а то создаётся впечатление зависания... Если бы это был цикл, то вопросов бы не было, но реализация данной задачи оказалась не так уж и проста, и без помощи "гуру" мне не обойтись. Процедура копирования:
[vba]
Код
Sub tt() 'копирование файла Dim sFileName As String, sNewFileName As String
sFileName = "\\192.168.178.17\Книга 1\Книга1.xls" 'имя файла для копирования sNewFileName = "D:\Книга1.xls" 'имя копируемого файла. Директория(в данном случае диск D) должна существовать If Dir(sFileName, 16) = "" Then MsgBox "Нет такого файла", vbCritical, "Ошибка": Exit Sub
AndreTM, Я и не знал, то shell так умеет, огонь! У меня всё четко отработало. ZamoK, Возможно Вы в качестве sNewFilePath не адрес целевой папки указали, а адрес файла... или что-нибудь из такого, мелкого, проще глянуть как Вы прикрутили у себя. [offtop]но всё же это относится больше к предыдущей теме, не к этой)[/offtop]
AndreTM, Я и не знал, то shell так умеет, огонь! У меня всё четко отработало. ZamoK, Возможно Вы в качестве sNewFilePath не адрес целевой папки указали, а адрес файла... или что-нибудь из такого, мелкого, проще глянуть как Вы прикрутили у себя. [offtop]но всё же это относится больше к предыдущей теме, не к этой)[/offtop]Roman777
Много чего не знаю!!!!
Сообщение отредактировал Roman777 - Среда, 07.06.2017, 09:20
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
[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 setZamoK
Я не Гуру, но стремлюсь!
Сообщение отредактировал ZamoK - Среда, 07.06.2017, 09:37
Роман вам правильно сказал - "надо смотреть на весь код, как прикрутили у себя". У нас же нет файла-образца вашего. А в "наших" файлах все работает.
Это компилятор же ругается, наверняка там где-то Option Explicit есть, да? А раз используете параметр - так и переменные новые через DIM определить не зазорно было бы. Или нужно начинать объяснения с рассказа об основах и синтаксисе VBA/VBS?
И особенно мне нравится Dim sNewFileName и NewFilePath Ничего не замечаете?
Ладно, сделаем проще, раз уж даже скопипастить не получается:
[vba]
Код
Sub tt() 'копирование файла Dim sFileName As String, sNewFilePath As String
Dim objShellApp As Object, objFolder As Object Set objShellApp = CreateObject("Shell.Application") Set objFolder = objShellApp.Namespace(sNewFilePath) objFolder.CopyHere sFileName, 16
MsgBox "Файл скопирован", vbInformation, ""
With ActiveWorkbook 'закрываем активную книгу .Close False End With End Sub
[/vba]
Роман вам правильно сказал - "надо смотреть на весь код, как прикрутили у себя". У нас же нет файла-образца вашего. А в "наших" файлах все работает.
Это компилятор же ругается, наверняка там где-то Option Explicit есть, да? А раз используете параметр - так и переменные новые через DIM определить не зазорно было бы. Или нужно начинать объяснения с рассказа об основах и синтаксисе VBA/VBS?
И особенно мне нравится Dim sNewFileName и NewFilePath Ничего не замечаете?
Ладно, сделаем проще, раз уж даже скопипастить не получается:
[vba]
Код
Sub tt() 'копирование файла Dim sFileName As String, sNewFilePath As String
Dim objShellApp As Object, objFolder As Object Set objShellApp = CreateObject("Shell.Application") Set objFolder = objShellApp.Namespace(sNewFilePath) objFolder.CopyHere sFileName, 16
MsgBox "Файл скопирован", vbInformation, ""
With ActiveWorkbook 'закрываем активную книгу .Close False End With End Sub
Manyasha, так sNewFilePath в данном случае инициализирован как Variant Если я правильно понял, так и должно быть: [url=https://msdn.microsoft.com/en-us/library/windows/desktop/bb774085(v=vs.85).aspx]MDSN[/url] [offtop]уже 3 раза пытаюсь, не могу нормально ссылку вставить =( Что-то не соображаю что не так[/offtop]
Manyasha, так sNewFilePath в данном случае инициализирован как Variant Если я правильно понял, так и должно быть: [url=https://msdn.microsoft.com/en-us/library/windows/desktop/bb774085(v=vs.85).aspx]MDSN[/url] [offtop]уже 3 раза пытаюсь, не могу нормально ссылку вставить =( Что-то не соображаю что не так[/offtop]Roman777
Много чего не знаю!!!!
Сообщение отредактировал Roman777 - Среда, 07.06.2017, 11:18
В опытном образце тоже заработало, в оригинале пишет что скопировано, но на самом деле файл без изменений, но не суть мы тут как-то плавно отошли от темы , позволю заметить, что отображение данного процесса здесь как-бы нет, даже если оригинал скопировался бы, то это заняло бы какое-то время, хотелось бы отобразить данный процесс.
В опытном образце тоже заработало, в оригинале пишет что скопировано, но на самом деле файл без изменений, но не суть мы тут как-то плавно отошли от темы , позволю заметить, что отображение данного процесса здесь как-бы нет, даже если оригинал скопировался бы, то это заняло бы какое-то время, хотелось бы отобразить данный процесс.ZamoK
Я не Гуру, но стремлюсь!
Сообщение отредактировал ZamoK - Среда, 07.06.2017, 11:18
CopyHere(<Путь>,<Опции>) Назначение: копирование файла или папки вовнутрь текущей папки. Возвращаемого значения нет. Параметры: <Путь> - полный путь к копируемому файлу или папке (строка) или объект FolderItem.
И хотите, чтобы String работал.
Цитата
CopyHere(<Путь>,<Опции>) Назначение: копирование файла или папки вовнутрь текущей папки. Возвращаемого значения нет. Параметры: <Путь> - полный путь к копируемому файлу или папке (строка) или объект FolderItem.