Нужен макрос, который, при нажатие на кнопку, будет копировать документы по ссылкам находящимся в ячейке в определенную папку. Пример таблички приложен.
Добрый день, о великие гуру эксель!
Нужен макрос, который, при нажатие на кнопку, будет копировать документы по ссылкам находящимся в ячейке в определенную папку. Пример таблички приложен.Zhuravlev_IV
Вот макрос в цикле пробежать по всем введенным ссылкам. Начиная с B3 по последнюю заполненную ячейку в B3. Не должно быть пустых ячеек в списке. Ссылки должны быть полного формата типа C:\1.doc Папка куда копировать типа C:\Temp\
P.S. кстати в первом варианте, который я выкладывал, прежде чем нажать кнопку надо встать на ячейку, где указана ссылка на файл который скопировать надо.
И еще, файл копируется без проверки наличия такого же. Т.е. при наличии файла с таким же именем, он его тихо заменит
Вот макрос в цикле пробежать по всем введенным ссылкам. Начиная с B3 по последнюю заполненную ячейку в B3. Не должно быть пустых ячеек в списке. Ссылки должны быть полного формата типа C:\1.doc Папка куда копировать типа C:\Temp\
P.S. кстати в первом варианте, который я выкладывал, прежде чем нажать кнопку надо встать на ячейку, где указана ссылка на файл который скопировать надо.
И еще, файл копируется без проверки наличия такого же. Т.е. при наличии файла с таким же именем, он его тихо заменитdevilkurs
первый вариант, что-то у меня до конца не заработал... скопировался только один файл... один раз скопировал, дальше не стал копировать, хоть курсор выбора ячейки я менял...
...это я с глупил... у меня ссылка из сцепки ячеек была, не пересчитал.... <_<
Еще в дополнение хотел спросить, как сделать так чтоб копировались те ссылки что отмечены "Х" т.е. у меня есть база данных с ссылками и мне не нужны все документы, а некоторые из них (в базе данных шт. 4000-15000 строк)...
первый вариант, что-то у меня до конца не заработал... скопировался только один файл... один раз скопировал, дальше не стал копировать, хоть курсор выбора ячейки я менял...
...это я с глупил... у меня ссылка из сцепки ячеек была, не пересчитал.... <_<
Еще в дополнение хотел спросить, как сделать так чтоб копировались те ссылки что отмечены "Х" т.е. у меня есть база данных с ссылками и мне не нужны все документы, а некоторые из них (в базе данных шт. 4000-15000 строк)...Zhuravlev_IV
Журавлев Иван
Сообщение отредактировал Zhuravlev_IV - Пятница, 08.04.2016, 17:11
У меня все копирует. Встал на B3 там записано "C:\111111111.doc" - нажал кнопку - скопировало Встал на B8, там записано "C:\NaOtpravku.xls" -нажал кнопку - скопировало
и все это появилось в C:\TEMP\
У меня все копирует. Встал на B3 там записано "C:\111111111.doc" - нажал кнопку - скопировало Встал на B8, там записано "C:\NaOtpravku.xls" -нажал кнопку - скопировало
devilkurs, последний ваш макрос тоже работает, только крестики везде ставит после того как скопирует ссылку, а не копирует то, что отмечено крестиком. И кстати не спрашивает заменить или нет, несколько раз нажал, несколько раз без вопросов сработал.
devilkurs, последний ваш макрос тоже работает, только крестики везде ставит после того как скопирует ссылку, а не копирует то, что отмечено крестиком. И кстати не спрашивает заменить или нет, несколько раз нажал, несколько раз без вопросов сработал.Zhuravlev_IV
devilkurs, да, хочу именно этот результат в итоге получить, проверил ваш последний вариант скопировались первые шесть ссылок (было шесть крестиков только в разных местах напротив 11 ссылок)
devilkurs, да, хочу именно этот результат в итоге получить, проверил ваш последний вариант скопировались первые шесть ссылок (было шесть крестиков только в разных местах напротив 11 ссылок)Zhuravlev_IV
Здравствуйте! В ячейке с ссылками должен находится полный путь к файлу например D:\asd\my-my.xls По результатам копирования в соседней ячейке будет отметка "ok" или "Error" [vba]
Код
Sub Copy_File_() Dim myPath As String, myName As String, myName1 As String, nm As String Dim x As Integer Dim i As Integer Dim y As Integer Set sh1 = ThisWorkbook.Sheets(1) With Application.FileDialog(msoFileDialogFolderPicker) .Title = "Папка -куда копируем документы": .Show If .SelectedItems.Count = 0 Then Exit Sub myPath = .SelectedItems(1) & "\" End With x = ThisWorkbook.Sheets(1).Range("b" & Rows.Count).End(xlUp).Row For i = x To 3 Step -1 If Not sh1.Cells(i, 2).Offset(, 1) = "" Then myName = sh1.Cells(i, 2) y = InStrRev(myName, "\") myName1 = Right(myName, Len(myName) - y) 'имя копируемого файла. sNewFileName = myPath & myName1 On Error GoTo ad: sh1.Cells(i, 2).Offset(, 2) = "Ok" FileCopy myName, sNewFileName End If Next i MsgBox "Файлы скопированы", vbInformation, "" Exit Sub ad: sh1.Cells(i, 2).Offset(, 2) = "Error" Resume Next End Sub
[/vba]
Здравствуйте! В ячейке с ссылками должен находится полный путь к файлу например D:\asd\my-my.xls По результатам копирования в соседней ячейке будет отметка "ok" или "Error" [vba]
Код
Sub Copy_File_() Dim myPath As String, myName As String, myName1 As String, nm As String Dim x As Integer Dim i As Integer Dim y As Integer Set sh1 = ThisWorkbook.Sheets(1) With Application.FileDialog(msoFileDialogFolderPicker) .Title = "Папка -куда копируем документы": .Show If .SelectedItems.Count = 0 Then Exit Sub myPath = .SelectedItems(1) & "\" End With x = ThisWorkbook.Sheets(1).Range("b" & Rows.Count).End(xlUp).Row For i = x To 3 Step -1 If Not sh1.Cells(i, 2).Offset(, 1) = "" Then myName = sh1.Cells(i, 2) y = InStrRev(myName, "\") myName1 = Right(myName, Len(myName) - y) 'имя копируемого файла. sNewFileName = myPath & myName1 On Error GoTo ad: sh1.Cells(i, 2).Offset(, 2) = "Ok" FileCopy myName, sNewFileName End If Next i MsgBox "Файлы скопированы", vbInformation, "" Exit Sub ad: sh1.Cells(i, 2).Offset(, 2) = "Error" Resume Next End Sub