Как переименовывать и копировать файлы ?

Программирование на Visual Basic for Applications
antihacker
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 22.11.2005 (Вт) 8:44

Как переименовывать и копировать файлы ?

Сообщение antihacker » 02.08.2007 (Чт) 14:29

В папке лежит несколько файлов. Как можно с помощью VBA,в Акцессе, взять файлы по одному по очереди и переименовывая перекопировать под новым именем в другую папку ?
Миром правят цифры ! Пифагор.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 02.08.2007 (Чт) 14:39

Операторы FileCopy и Name.
Изображение

antihacker
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 22.11.2005 (Вт) 8:44

Сообщение antihacker » 02.08.2007 (Чт) 14:57

Ну это когда ты укзываешь в алгоритме старое имя файла. А я хочу что бы он открыл папку и сам по очереди получал имя каждого файла и переименовывал. Ведь в папке их куча...
Миром правят цифры ! Пифагор.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 02.08.2007 (Чт) 16:09

Поиском по форуму. Это уже обсуждалось 100 раз. Ищи слова типа FSO, FileSystemObject и Dir.
I don't understand. Sorry.

antihacker
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 22.11.2005 (Вт) 8:44

Сообщение antihacker » 03.08.2007 (Пт) 12:25

вот решение. Перемещает файлы по одному и дает новое имя

Dim P As String, F, j As String
Dim OldName, NewName
Dim i As Integer
i = 100

P = "E:\WorkInProgress\Data base of Archive\Scan_Doc\"
F = Dir$(P & "*.PDF")
Do Until Len(F) = 0
j = Str(i)
j = Right(j, Len(j) - 1)
OldName = P + F: NewName = "E:\WorkInProgress\Data base of Archive\Copy\" + j + ".PDF"
MsgBox (F)
Name OldName As NewName ' Move and rename file.

i = i + 1

F = Dir$()
Loop
Миром правят цифры ! Пифагор.

gjghjc
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 659
Зарегистрирован: 13.10.2002 (Вс) 8:28
Откуда: БАЛАКЛАВА!!

Сообщение gjghjc » 03.08.2007 (Пт) 14:20

Код: Выделить всё
j = Str(i)
j = Right(j, Len(j) - 1)

А что делает этот кусок кода???
Утро добрым не бывает!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 03.08.2007 (Пт) 14:22

Заменяет LTrim$ или Mid$(,2).
Lasciate ogni speranza, voi ch'entrate.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 03.08.2007 (Пт) 15:05

Вообще, весь этот код пытается заменить собой FSO.CopyFile :)
I don't understand. Sorry.

gjghjc
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 659
Зарегистрирован: 13.10.2002 (Вс) 8:28
Откуда: БАЛАКЛАВА!!

Сообщение gjghjc » 03.08.2007 (Пт) 15:09

Tools -> Reference. Подключи Microsoft Scripting Runtime
дальше такой код
в генерал
Код: Выделить всё
Dim fso As New Scripting.FileSystemObject
Dim pFolder As Scripting.Folder


в коде кнопки

Код: Выделить всё
Set pFolder = fso.GetFolder("E:\WorkInProgress\Data base of Archive\Scan_Doc")
    For Each pFile In pFolder.Files
            I=I+1
            fso.CopyFile pFile.Path,  "E:\WorkInProgress\Data base of Archive\Copy\" (mid$ (pFile.Name , 1, len(pFile.Name) -4) & I & ".pdf")
    Next pFile


Вот вроде так... попробуй. Но советами таких людей как RayShade и tyomitch не пренебрегай.... Про поиск они правы
Почитал топик RayShade устыдился..... и поправил код. :)
Утро добрым не бывает!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 57

    TopList