Доработка макроса копирования файла в цикле - VBA
Формулировка задачи:
Всем привет! есть макрос который копирует папки за последние 3 числа.я копирую и получаю в конечной директории(с:\main\) за каждую дату по две папки, например, 20160924 и 20160924_n . внутри 20160924 существую файл RS_RUS_EP747_243332.txt (т.е. адрес файла C:\main\20160924\) его надо скопировать в папку 20160924_n . особенность в том что в названии файла RS_RUS_EP747_243332.txt: RS_RUS_EP747_ - постоянная часть а "243332" меняется: я дополнила макрос макросом копирования файла,получилось так: ругается на строку FileCopy sFileName, sNewFileName eror 52 пути перепроверила вроде правильно. во вложении положила архив с директриями с:\main c:\User с результатом выполнения копирования ПАПОК и макрос : подскажите плиз как допилить этот макрос
Листинг программы
- Option Explicit
- Sub FileChecker()
- Dim sFileName As String, sNewFileName As String
- Dim sh As Worksheet, fso As Object, r As Long
- Set sh = Sheets("BASE")
- Set fso = CreateObject("Scripting.FileSystemObject")
- 'NACHALO CICLA PROVRKI NALICHIYA PAPKI
- For r = 2 To sh.Cells(sh.Rows.Count, 3).End(xlUp).Row
- sh.Cells(r, "D") = Dir(sh.Cells(1, "C") & sh.Cells(r, "C"), vbDirectory)
- 'COPIRUY FAIL
- If sh.Cells(r, "D") <> "" Then
- 'r - peremenaya' 'r & _n - imya konechnoy papki, naprimer 20160924_n
- fso.CopyFolder sh.Cells(1, "C") & sh.Cells(r, "C") & "\PS1", "c:\main" & sh.Cells(r, "C")
- fso.CopyFolder sh.Cells(1, "C") & sh.Cells(r, "C") & "\PS2", "c:\main" & sh.Cells(r, "C") & "_n"
- End If
- sFileName = sh.Cells(1, "G") & sh.Cells(r, "C") & "\RS_RUS_EP747*.TXT" 'имя файла для копироваия
- sNewFileName = sh.Cells(1, "G") & sh.Cells(r, "C") & "_n" & "\RS_RUS_EP747.TXT" 'имя конечного файла я переименовала его но это не важно как он в итоге будет назваться'
- If Dir(sFileName, 16) = "" Then MsgBox "нет такого файла", vbCritical, "ошибка": Exit Sub
- FileCopy sFileName, sNewFileName 'копирую.вот здеся ругается
- MsgBox "файл скопирован", vbInformation
- Next 'perehod k PROVRKe NALICHIYA sledyuschei PAPKI
- End Sub
Решение задачи: «Доработка макроса копирования файла в цикле»
textual
Листинг программы
- sFileName = sh.Cells(1, "G") & sh.Cells(r, "C") & "\RS_RUS_EP747*.TXT" 'имя файла для копирования
- sNewFileName = sh.Cells(1, "H") & sh.Cells(r, "C") & "_n" & "\RS_RUS_EP747_N.TXT" 'имя копируемого файла. Директория(в данном случае диск D) должна существовать'
- Dim t$: t$ = Dir(sFileName, 16)
- If t$ = "" Then MsgBox "Нет такого файла", vbCritical, "Ошибка": Exit Sub
- FileCopy sh.Cells(1, "G") & sh.Cells(r, "C") & "\" & t$, sNewFileName 'копируем файл
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д