Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 09.08.2013, 15:20   #31
TheRoofIsOnFire
 
Регистрация: 09.08.2013
Сообщений: 5
По умолчанию

вот это пытаюсь освоить:

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Вот весь код:
Код:
Sub Main()
    Dim SourceFolder As String, DestinationFolder As String, ce As Range
    InitialPath = ThisWorkbook.Path: Dim coll As New Collection
    Application.ScreenUpdating = False

    SourceFolder = GetFolderPath("Выберите исходную папку для поиска файлов", InitialPath)
    If SourceFolder = "" Then MsgBox "Необходимо указать папку!", vbCritical, "Папка не выбрана": Exit Sub

    DestinationFolder = GetFolderPath("Выберите папку, в которую будет производиться копирование", SourceFolder)
    If DestinationFolder = "" Then MsgBox "Необходимо указать папку!", vbCritical, "Папка не выбрана": Exit Sub

    On Error Resume Next
    If Dir(DestinationFolder, vbDirectory) = "" Then MkDir DestinationFolder    ' если конечная папка не существует, создаём её

    Filename = Dir(SourceFolder & "*.xls")
    Dim wb As Workbook, sh As Worksheet
    While Filename <> ""
        coll.Add Filename: Filename = Dir
    Wend

    For Each file In coll
        Set wb = Workbooks.Open(SourceFolder & file, , True)
        Application.StatusBar = "Обрабатывается файл  " & file    ' вывод информации в строку состояния
        Set sh = wb.Worksheets(3) ' замените на Set sh = wb.Worksheets(1)
        NewFilename = НовоеИмяФайла(sh.Cells(2, 1), sh.Cells(8, 1))
        wb.SaveAs DestinationFolder & NewFilename
        wb.Close False
    Next

    Application.StatusBar = ""
End Sub

Function НовоеИмяФайла(ByVal cell2 As String, ByVal cell8 As String) As String
    '    cell2 = "Наименование товара я-эмульгатор"
    '    cell8 = "Расфасовано 30.08.2009 партия 12.04.2008"
    '    НовоеИмяФайла = "НТЯ август 2009.xls"

    arr = Split(cell2, " ")
    For i = LBound(arr) To UBound(arr)
        НовоеИмяФайла = НовоеИмяФайла & Left(arr(i), 1)
    Next
    НовоеИмяФайла = UCase(НовоеИмяФайла)

    дата = Split(cell8, " ")(1)
    If IsDate(дата) Then НовоеИмяФайла = НовоеИмяФайла & " " & LCase(Format(дата, "MMMM YYYY"))
    НовоеИмяФайла = НовоеИмяФайла & ".xls"
End Function

Function GetFolderPath(Optional ByVal Title As String = "Выберите папку", Optional ByVal InitialPath As String = "c:\") As String
    GetFolderPath = "": PS = Application.PathSeparator
    With Application.FileDialog(msoFileDialogFolderPicker)
        .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath
        If .Show = -1 Then GetFolderPath = .SelectedItems(1): If Not Right$(GetFolderPath, 1) = PS Then GetFolderPath = GetFolderPath & PS
    End With
End Function
TheRoofIsOnFire вне форума
Старый 12.08.2013, 17:44   #32
TheRoofIsOnFire
 
Регистрация: 09.08.2013
Сообщений: 5
По умолчанию

Цитата:
Сообщение от TheRoofIsOnFire Посмотреть сообщение
Добрый день! Подскажите, пожалуйста.
Необходимо переименовать файлы средствами эксель.
Нужно реализовать следующую схему:

В экселе столбец с адресами и столбец с номерами (1,2, ...) принадлежащие каждый своему адресу.
Есть папка с файлами изображений с адресами в названии идентичными и похожими.
Нужно добавить в начало всех совпадающих и похожих адресов соответствующие номера из экселя, но вида: 01_, 02_, ... и т.д.

Только начал знакомиться с макросами и "внутренним" миром экселя, поэтому еще много не понимаю, прошу понять!)

Как пробую решить.
Вставляю надстройкой pastepicture названия всех файлов из папки в эксель.
Макросом выполняется частичное сравнение данных из имеющихся адресов и добавленных из папки и напротив выводится коэффициент совпадения. Совпавшим свежедобавленным необходимо присвоить номера вида 01_, 02_, ... и т.д.
Делаю это следующим макросом:
Собственно беру 4 ячейки с данными: "0", "1", "_", "адреса" объединяю их макросом и протягиваю по всем строкам, получается нужный вид.

Остается только заменить названия в папке сгенерированными новыми названиями.
Пробовал через бэйсик запихнуть код, что выше в функции, выдает ошибку на GetFolderPath. Пример тоже не понял как работает. Кнопка есть, но куда данные вставлять. И как мне реализовать это в своей базе экселя в виде макроса или функции. Должен ли я в код прописывать какие-то пути к файлам или все должно работать через форму открыть файл? Очень прошу помочь разобраться!

так как быть-то, кто подскажет?
TheRoofIsOnFire вне форума
Старый 14.10.2013, 11:48   #33
TheRoofIsOnFire
 
Регистрация: 09.08.2013
Сообщений: 5
По умолчанию

Все еще не могу решить задачу =/ Прошу помощи, очень прошу! (Можно читать только выделенное).

Необходимо переименовать файлы средствами эксель.

Нужно реализовать следующую схему:

В экселе столбец с адресами и столбец с номерами (1,2, ...) принадлежащие каждый своему адресу.
Есть папка с файлами изображений с адресами в названии идентичными и похожими.
Нужно добавить в начало всех совпадающих и похожих адресов соответствующие номера из экселя, но вида: 01_, 02_, ... и т.д.

Только начал знакомиться с макросами и "внутренним" миром экселя, поэтому еще много не понимаю, прошу понять!)

Как пробую решить.
Вставляю надстройкой pastepicture названия всех файлов из папки в эксель.
Макросом выполняется частичное сравнение данных из имеющихся адресов и добавленных из папки и напротив выводится коэффициент совпадения. Совпавшим свежедобавленным необходимо присвоить номера вида 01_, 02_, ... и т.д.
Делаю это следующим макросом:
Собственно беру 4 ячейки с данными: "0", "1", "_", "адреса" объединяю их макросом и протягиваю по всем строкам, получается нужный вид.

Остается только заменить названия в папке сгенерированными новыми названиями:

Файлы .jpg лежащие по пути "диск:/папка/папка" имеющие идентичные имена столбцу "А" в эксель файле, например "Самолет" - нужно, чтобы переименовались именами из столбца "Б" - "01_Самолет"
Причем папок много разных, нужна форма для выбора путей к этим папкам.

В коде, что цитировал выше поменял везде расширения на .jpg, но все что делается при нажатии на кнопку - это выбирается путь где переименовывать и куда копировать. все. больше ничего не происходит.


очень прошу! помогите решить данную задачку! или прогу может какую бесплатную подскажите, подходящую озвученным критериям?

Последний раз редактировалось TheRoofIsOnFire; 14.10.2013 в 12:17.
TheRoofIsOnFire вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формирование списка файлов в папке на листе. mephist Microsoft Office Excel 3 12.08.2009 17:59
Переименование группы файлов Meh Общие вопросы Delphi 2 28.07.2009 12:31
Как сделать поиск файлов в папке BETONOMESHALKA Общие вопросы Delphi 3 01.02.2008 22:43
Просмотр файлов в папке и подпапках Yar Помощь студентам 9 07.08.2007 16:56