Переименование файлов с помощью формы

Программирование на Visual Basic for Applications
Ципихович Эндрю
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 07.04.2010 (Ср) 17:19

Переименование файлов с помощью формы

Сообщение Ципихович Эндрю » 24.04.2011 (Вс) 14:54

Здравствуйте
1. Есть скрипт:


Код:

Код: Выделить всё
Dim ВыбранныйФайл As Variant
'Picker - Сборщик
With Application.FileDialog(msoFileDialogFilePicker)
    'если = True, тогда есть возможность выбрать несколько файлов
    .AllowMultiSelect = True
    'имя, которое будет указано на кнопке
    .ButtonName = "ZER GUT"
    'поле Тип файлов
    .Filters.Add "Файлы Microsoft Office", "*.xls; *.xlsx"
    'имя формы
    .Title = "Выберите файлы"
    'место, на каком диске или папке будет отображаться форма
    .InitialFileName = "L:\Изменённые"
    'отобразить форму
    .Show
'
'количество выбранных файлов, если нажали отмена получим  SelectedItems.Count = 0
Debug.Print .SelectedItems.Count
    For Each ВыбранныйФайл In .SelectedItems
    'путь к файлу с именем файла
    Debug.Print ВыбранныйФайл
    'имя файла
    Debug.Print Dir(ВыбранныйФайл)
    Next ВыбранныйФайл
End With
не могу понять, как к нему прикрутить Move - меняем путь файла, то есть перемещаем его????

2
есть скрипт:

Код:

Код: Выделить всё
'предварительно нужно добавить ссылку на Microsoft Excel 12.0 Object Library
Dim ExApp As New Excel.Application
Dim vFileName As Variant

vFileName = ExApp.GetOpenFilename("Несколько типов файлов (*.bas; *.txt),*.bas;*.txt", , "Выбери себе файл или несколько файлов", , True)

If vFileName = False Then 'выбрал я на диске L txt файл, нажал кнопку открыть, имею - ошибка 13 Type mismath почему?Я идиот! Убейте меня, кто-нибудь!???

        MsgBox "Необходимо выбрать файл!"
Else
        MsgBox "Выбрали: " & sFileName
       
End If

Exit Sub

'завершаем Excel
ExApp.Quit
3
там вопрос имеется в теле макроса:
'выбрал я на диске L txt файл, нажал кнопку открыть, имею - ошибка 13 Type mismath почему?Я идиот! Убейте меня, кто-нибудь!???

4
есть скрипт:

Код:
Код: Выделить всё
'предварительно нужно добавить ссылку на Microsoft Excel 12.0 Object Library
Dim ExApp As New Excel.Application
Dim vFileName As Variant
Dim fso As Object, f As Object, FilesToRename
Dim k%
Dim Полный_путь_к_файлу As String
Dim Имя_файла_с_расширением As String
Dim Имя_файла_без_расширения As String
Dim Расширение_файла As String

'выбор файлов для переименования
FilesToRename = ExApp.GetOpenFilename(, , "Выбери себе файл", , True)

'условие, если выбран хотя бы один файл
If IsArray(FilesToRename) Then

    Set fso = CreateObject("Scripting.FileSystemObject")
   
    'для каждого выбранного файла
    For k = 1 To UBound(FilesToRename)
        Set f = fso.GetFile(FilesToRename(k))
        'путь к файлу, имя файла с расширением
        Полный_путь_к_файлу = f.Path
        Debug.Print Полный_путь_к_файлу
        Имя_файла_с_расширением = f.Name
        Имя_файла_без_расширения = CreateObject("Scripting.FileSystemObject").GetBaseName(f.Name)
        Расширение_файла = CreateObject("Scripting.FileSystemObject").GetExtensionName(f)
        'переименование файла
        'чтобы не было ошибки
        '58  File already exists Файл уже существует
        'нужно переименовывать файл
        f.Name = "0000000000" & f.Name
        'перемещаем файл
        'если имя файла менять не надо, тогда можно указать только папку - f.Move "L:\Изменённые\"
        f.Move "L:\Изменённые\" & f.Name
        Set f = Nothing
    Next k
    Set fso = Nothing
    Erase FilesToRename
End If
'завершаем Excel
ExApp.Quit
как в этом скрипте указывать, чтобы форма открылась в нужном диске, нужной папке????

5
какое различие у скрипта 1 и 3??? вроде оба делают одно и тоже

6
какой из них лучше подходит для переименования файлов???
Спасибо

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

Re: Переименование файлов с помощью формы

Сообщение alibek » 24.04.2011 (Вс) 20:43

Перед тем, как использовать чужой код, всегда нужно использовать данные от природы мозги.
Мозги нужно включить и:

1) После изучения раздела о функции Dir, ознакомиться с разделом об операторе Name.

2) После изучения раздела о том, что именно возвращает функция GetOpenFilename, поразмышлять о том, что означает ошибка "13 Type mismatch". Если есть затруднения с переводом, воспользоваться онлайновым переводчиком, его качества вполне достаточно.

4) Перед открытием диалога задать Path и Filename. Возможно потребуется указать дополнительный флаг, если диалог сделан по аналогии с WinAPI Common Dialogs.

5) См. пункт 0 (включить мозги). В этих двух скриптах общего только то, что они написаны для VBA.

6). Никакой.
Lasciate ogni speranza, voi ch'entrate.

Ципихович Эндрю
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 07.04.2010 (Ср) 17:19

Re: Переименование файлов с помощью формы

Сообщение Ципихович Эндрю » 25.04.2011 (Пн) 15:31

почему это на 6 вопрос какой лучше подходит вариант для переименования файлов - никакой, ведь переименовывает, в чём подвох??
А для чего предназначены 1 и 2 случай???
Сейчас стопорнулся на ошибке '76 Path not found Путь определен неверно
Почему происходит, как исправить??

Код: Выделить всё
Dim ВыбранныйФайл As Variant
'Picker - Сборщик
With Application.FileDialog(msoFileDialogFilePicker)
    'если = True, тогда есть возможность выбрать несколько файлов
    .AllowMultiSelect = True
    'имя, которое будет указано на кнопке
    .ButtonName = "ZER GUT"
    'поле Тип файлов
    .Filters.Add "Файлы Microsoft Office", "*.xls; *.xlsx"
    'имя формы
    .Title = "Выберите файлы"
    'место, на каком диске или папке будет отображаться форма
    .InitialFileName = "L:\Изменённые"
    'отобразить форму
    .Show
'
'количество выбранных файлов, если нажали отмена получим  SelectedItems.Count = 0
Debug.Print .SelectedItems.Count
Set FSO = CreateObject("Scripting.FileSystemObject")
    For Each ВыбранныйФайл In .SelectedItems
    Set f = FSO.GetFile(ВыбранныйФайл)
    'путь к файлу с именем файла
    Debug.Print ВыбранныйФайл
    'имя файла
    Debug.Print Dir(ВыбранныйФайл)
    'путь к файлу, имя файла с расширением
        Полный_путь_к_файлу = f.Path
        Debug.Print Полный_путь_к_файлу
        Имя_файла_с_расширением = f.Name
        Имя_файла_без_расширения = CreateObject("Scripting.FileSystemObject").GetBaseName(f.Name)
        Расширение_файла = CreateObject("Scripting.FileSystemObject").GetExtensionName(f)
        'переименование файла
        'чтобы не было ошибки
        '58  File already exists Файл уже существует
        'нужно переименовывать файл
        f.Name = "0000000000" & f.Name
        'перемещаем файл
        Debug.Print "L:\Изменённые\" & f.Name
        'если имя файла менять не надо, тогда можно указать только папку - f.Move "L:\Изменённые\"
        f.Move "L:\Изменённые\" & f.Name '76 Path not found  Путь определен неверно
        Set f = Nothing
    Next ВыбранныйФайл
    Set FSO = Nothing

End With

Ципихович Эндрю
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 07.04.2010 (Ср) 17:19

Re: Переименование файлов с помощью формы

Сообщение Ципихович Эндрю » 25.04.2011 (Пн) 15:34

ну знаю я, что ошибка 13 Type mismatch это Несоответствие типа
и что дальше, там была возможность выбрать тестовый файл, я его выбрал, в чём загвоздка???

Ципихович Эндрю
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 07.04.2010 (Ср) 17:19

Re: Переименование файлов с помощью формы

Сообщение Ципихович Эндрю » 25.04.2011 (Пн) 19:05

ошибся, вместо
там была возможность выбрать тестовый
надо
там была возможность выбрать текстовый


Вернуться в VBA

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

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

    TopList