Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Подскажите как скопировать файл


Автор: glotik 1.9.2006, 08:19
Код

Sub OpenWordFile()
Const iTitle = "Открытие окна"
Dim fName As String
Dim lRetVal As Long
Dim fPath As String
Dim strMyFullPath As String
Dim sName
 With Application.Dialogs(wdDialogFileOpen)
lRetVal = .Display
fName = .Name
End With
strMyFullPath = Options.DefaultFilePath(wdCurrentFolderPath)
MsgBox "Path = " & strMyFullPath
MsgBox strMyFullPath
Copy = strMyFullPath
MkDir Copy
End Sub

Подскажите пожалуйста как скопировать выбранный файл в каталог ,,Сopy,,????

Автор: ИгнатьевАлексей 2.9.2006, 19:35
Что ты хотел сделать в своей процедуре, дорогой друг, понять мозгов мне не хватило! Лови семплик по методу Copy.
Код

Sub DDDdd()

Dim fs As FileSystemObject
Set fs = New FileSystemObject

fs.CopyFile "C:\TEST.doc", "C:\TEST2.doc"

End Sub

Надо только подключить библиотеку Microsoft Scripting Runtime Library.

Автор: cardinal 3.9.2006, 00:59
Или воспользоваться FSO
http://www.rusedu.info/modules.php?op=modload&name=News&file=article&sid=116
или функцией Name (чтобы передвинуть файл и/или например переименовать файл)
Код

Option Explicit

Private Sub Command1_Click()
Dim OldName, NewName
OldName = "c:\text.txt": NewName = "e:\text.txt"   ' Define file names.
Name OldName As NewName   ' Rename file.
End Sub


Автор: mihanik 3.9.2006, 11:05
Ребята!!!

Я ему уже http://forum.vingrad.ru/index.php?showtopic=110061&st=15 всё объяснил с примерами, с коментариями...
glotik просто разбираться не хочет... smile 

Ну сами посудите! Реально разобраться в таком примере? smile 

Код

Private Sub CommandButton1_Click()
Dim strFolder1, strFolder2 As String
Dim strFileName1, strFileName2 As String
Dim MyFSO As Object

    ' Открываем диалог открытия файла
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Выберите файл!"
            .Show
        ' Если что-то выбрали, то strFileName1 будет хранить
        ' ПОЛНОЕ ИМЯ ФАЙЛА (включая диск и каталоги)
        If .SelectedItems.Count > 0 Then strFileName1 = .SelectedItems(1)
    End With
    
    If Len(strFileName1) = 0 Then
        MsgBox "Не указано имя файла!", vbCritical, "Ошибка"
        Exit Sub
    End If
    
    ' Получаем только путь, по которому хранится файл
    strFolder1 = Options.DefaultFilePath(wdCurrentFolderPath)
    
    ' Собираем из имеющихся данных имя второго каталога,
    ' где будут храниться копии файлов.
    strFolder2 = strFolder1 + "\Copy"
    
    ' Если каталога с именем strFolder2 нет, то создаём его...
    ' В противном случае машина отругает нас и скажет, что произошла ошибка доступа к каталогу...
    If Len(Dir(strFolder2)) <> 0 Then MkDir strFolder2
    
    ' Вычисляем имя архивного файла...
    strFileName2 = strFolder2 + "\Копия " + Mid(strFileName1, InStrRev(strFileName1, "\") + 1, Len(strFileName1) - InStrRev(strFileName1, "\") + 1)
    
    'Копируем файл strFileName1 в strFileName2
    Set MyFSO = CreateObject("Scripting.FileSystemObject")
    MyFSO.CopyFile strFileName1, strFileName2

End Sub


Автор: ИгнатьевАлексей 3.9.2006, 14:22
Цитата

glotik просто разбираться не хочет... 

Тем хуже для него самого, не так ли?! smile 

Автор: cardinal 3.9.2006, 18:19
Модератор: glotik, ну и что ты на это скажешь? Мозгами шевелить лень?

Автор: glotik 4.9.2006, 07:15
Цитата(cardinal @  3.9.2006,  18:19 Найти цитируемый пост)
Модератор: glotik, ну и что ты на это скажешь? Мозгами шевелить лень?

Очень даже не лень...я уже в течении 3 недель этим занимаюсь...просто у меня не все получается...я многого не понимаю......а хочу понимать..
Не знаю что вы на меня накинулись...неужели вам всем в начале легко было?????

Автор: mihanik 4.9.2006, 07:37
glotik, но тебе же уже и ссылки на материалы дали, и примеры написали...

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

И ещё...
Может, ты взялся сразу за слишком сложную для себя задачу?
Попробуй порешать что-нибудь попроще...

Или я не прав?

Автор: ИгнатьевАлексей 4.9.2006, 07:57
Цитата

просто у меня не все получается...я многого не понимаю......а хочу понимать..

Давай фрагменты своего кода в котором не получается, только подробно пиши, что ты хочешь сделать, что применяешь, и в каком месте не выходит. Думаю, так будет целесообразнее!

Автор: mihanik 4.9.2006, 08:15
Цитата(ИгнатьевАлексей @  4.9.2006,  07:57 Найти цитируемый пост)
Думаю, так будет целесообразнее!


Поддерживаю!!!
 smile  smile 

Автор: glotik 4.9.2006, 08:25
Цитата(mihanik @ 4.9.2006,  07:37)
И ещё...
Может, ты взялся сразу за слишком сложную для себя задачу?
Попробуй порешать что-нибудь попроще...

Или я не прав?


Я уже делал попроще... Просто мне дают задание - и мне нужно его сделать...выбора нет (у меня испытательный срок на работе)

Добавлено @ 08:31 
Ну вот к примеру фрагмент кода:
Код

 strFileName2 = strFolder2 + "\Копия  + Mid(strFileName1, InStrRev(strFileName1, " \ ") + 1, Len(strFileName1) - InStrRev(strFileName1, " \ ") + 1)"

здесь идет переименование файла по типу : ,,Копия,, <пробел> <имя файла> . <расширение>
Так как программу делал не я...мне здесь многие функции не понятны...
А мне надо переименовать по типу: <имя файла> - <текущая дата> . <расширение> 


Автор: mihanik 4.9.2006, 08:38
Функция Mid
Позволяет получать подстроку из строки

Формат
Mid ( Исходная строка,  начало подстроки, длина фрагмента).

Пример
mid ( "коверкот", 6, 3) даёт нам "кот"
mid ( "коверкот", 1, 5) даёт нам "ковер"

Функция Len
Возвращает длину символьной строки в знаках.

Len ("Мама") даёт нам 4...

Функция InStr
Возвращает положение подстроки в строке (число). (Ищет слева на право позицию расположения одной строки внутри другой.)

Пример
InStr("Мама", "а") даст нам 2
InStr("Тутанхамон", "а") даст нам 4

Функция InStrRev
Делает то же самое, что и InStr.
Только ищет не слева направо, а справа налево.



Автор: glotik 4.9.2006, 08:43
это я знаю...но мне ведь не надо извлекать подстроку и строки...

Автор: mihanik 4.9.2006, 08:52
Цитата(glotik @  4.9.2006,  08:43 Найти цитируемый пост)
...но мне ведь не надо извлекать подстроку и строки...


Это НЕВЕРНО!!!

Представь!
У тебя есть полнгое имя файла. Что-то типа

C:\Program Files\Internet Explorer\IEXPLORE.EXE

Из этой строки тебе надо ВЫДЕЛИТЬ ПОДСТРОКУ, которая располагается за крайним справа знаком "\".
По другому. тебе надо из полного имени файла выделить только имя файла. А именно : IEXPLORE.EXE

Т.е. Тебе надо использовать функцию MID

Mid(strFileName1, InStrRev(strFileName1, " \ ") + 1, Len(strFileName1) - InStrRev(strFileName1, " \ ") + 1)"

Затем.
Из полученного имени файла выделяешь отдельно имя, отдельно расширение, а потом уже делаешь из полученных частей тот, винегрет, который и хочешь, а именно:

Цитата(glotik @  4.9.2006,  08:25 Найти цитируемый пост)
<имя файла> - <текущая дата> . <расширение> 


Автор: glotik 4.9.2006, 09:03
понимаешь..я до этого делал функции, которые как раз выделяют из полного имени файла либо имя файла, либо расширение...то есть я могу воспользоваться этими функциями..
вот конкретно в этом примере можно просто заменить параметры переименовывание на те, которые мне нужно???
Код

strFileName2 = strFolder2 + "\Копия  + Mid(strFileName1, InStrRev(strFileName1, " \ ") + 1, Len(strFileName1) - InStrRev(strFileName1, " \ ") + 1)"

Автор: mihanik 4.9.2006, 09:12
glotik, я не понял вопроса....

Здесь
strFileName2 - имя файла "в который" ты будешь копировать.
strFolder2  - имя папки, в которой будет лежать твой файл.

Получается, что ты будешь писатьтак.

strFileName2 = strFolder2 + "\" + <Имя файла> + " - " + <Текущая дата> + "." + <Расширение файла>

Автор: glotik 4.9.2006, 09:15
да...именно так я и думал....так может получиться??

Автор: mihanik 4.9.2006, 09:21
Проверь!
Должно!!!

Автор: Akina 4.9.2006, 09:25
Цитата(glotik @  4.9.2006,  09:25 Найти цитируемый пост)
выбора нет (у меня испытательный срок на работе)

Это, конечно, грубо, но - может, ты не туда пошел на работу? или слишком рано? 
Уж извини...

Автор: glotik 4.9.2006, 09:34
Цитата(Akina @  4.9.2006,  09:25 Найти цитируемый пост)
Это, конечно, грубо, но - может, ты не туда пошел на работу? или слишком рано? 
Уж извини...


может и рано...мне всего 18...но когда-то же надо ничанать...и по-моему возраст тут вобще не при чем...в любом случае начинаешь все с нуля..

Автор: mihanik 4.9.2006, 09:48
Цитата(glotik @  4.9.2006,  09:34 Найти цитируемый пост)
мне всего 18


Понятно...

Только, glotik, пойми!
Во-первых, мы уже давно отошли от заявленной в начале темы Подскажите как скопировать файл.
Во-вторых, тебе даны ссылки, примеры, объяснения. Покапайся теперь сам.
В-третьих, пожалей наши нервы!  smile 

Автор: glotik 4.9.2006, 09:52

Понятно...

а что понятно??? 
понимаешь...просто мне задали вопрос (Akina)...я на него ответил...
Хорошо...буду думать  сам...всем спасибо!!! smile  smile  smile 

Автор: ИгнатьевАлексей 4.9.2006, 16:17
glotik, не хочется, чтобы негатив у тебя об этом классном форуме остался.......давай поработаем в режиме "я сам работаю, а что конкретно не получается - спрошу конкретным вопросом". Иначе программером не получится стать....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)