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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2011, 08:12   #1
Palomnik1096
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 83
По умолчанию Количество книг в папке

Добрый день.
Названия книг в папке имеют название Customer1,Customer2 ... и т.д. , общее количество не известно, но название начинается с одного и того жеCustomer, как определить сколько таких книг в папке, я смог написать процедуру, которая позволяет открывать эти книги, переименовывать и сохранять с новым именем, но это можно делать только точно зная их количество (с помощью For next), а как сделать так, чтобы процедура выполнялась, при условии что количество таких книг не известно.

For i = 1 To 4
Workbooks.Open Filename:="C:\Documents and Settings\" _
& "Александр\Рабочий стол\Покупатели\Customer" & i
With ActiveWorkbook
.SaveAs Filename:="C:\Documents and Settings\" _
& "Александр\Рабочий стол\Покупатели\CostOders" & i
MsgBox "Имя этой книги " & ActiveWorkbook.Name & "" _
& " книга создана " & Date & " в " & Time & "."
.Close
End With
Next i
Palomnik1096 вне форума Ответить с цитированием
Старый 09.04.2011, 08:50   #2
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Как-то так:
Код:
Public Sub www()
    Dim MyName$, i&
    MyName = Dir("C:\Documents and Settings\Александр\Рабочий стол\Покупатели\Customer*.*")
    Do While MyName <> ""
        i = i + 1
            Workbooks.Open Filename:=MyName
            With ActiveWorkbook
                .SaveAs Filename:="C:\Documents and Settings\" _
                                & "Александр\Рабочий стол\Покупатели\CostOders" & i 
                MsgBox "Имя этой книги " & ActiveWorkbook.Name & "" _
                     & " книга создана " & Date & " в " & Time & "."
                .Close
            End With
        MyName = Dir
    Loop
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 09.04.2011 в 08:55.
kuklp вне форума Ответить с цитированием
Старый 10.04.2011, 07:02   #3
Palomnik1096
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 83
По умолчанию

Идея понятна, но только в этом месте дает ошибку, о том либо путь указан не верно, либо файл отсутствует!

Workbooks.Open Filename:=MyName
Palomnik1096 вне форума Ответить с цитированием
Старый 10.04.2011, 07:33   #4
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Ну раз понятна идея, кто мешает посмотреть в окне Locals, что содержится в переменной MyName. К ней спереди полный путь приклеить надо. У меня же нет Вашей структуры каталогов и тем более Ваших файлов. Писал не проверяя.
Попробуйте:
Код:
Public Sub www()
    Dim MyName$, i&, mp$
    mp = "C:\Documents and Settings\Александр\Рабочий стол\Покупатели\"
    MyName = Dir(mp & "Customer*.*")
    Do While MyName <> ""
        i = i + 1
            Workbooks.Open Filename:=mp & MyName
            With ActiveWorkbook
                .SaveAs Filename:=mp & "CostOders" & i
                MsgBox "Имя этой книги " & ActiveWorkbook.Name & "" _
                     & " книга создана " & Date & " в " & Time & "."
                .Close
            End With
        MyName = Dir
    Loop
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 10.04.2011 в 07:39.
kuklp вне форума Ответить с цитированием
Старый 10.04.2011, 07:47   #5
Palomnik1096
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 83
По умолчанию

ОГРОМНОЕ СПАСИБО!!!

Едиственный вопрос по строкам:

Dim MyName$, i&, mp$, здесь понятно, что объявляется переменная MyName, а что означает $,i&, mp$?
И строка MyName = Dir, а смысл ее какой?
Palomnik1096 вне форума Ответить с цитированием
Старый 10.04.2011, 08:18   #6
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

$ - строковый тип
& - long
По-поводу Dir почитайте справку.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 10.04.2011, 09:15   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Сергей, правильно писать:
"По-поводу Dir почитайте справку, пожалуйста."))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 10.04.2011, 14:33   #8
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Сергей, правильно писать:
"По-поводу Dir почитайте справку, пожалуйста."))
Привет, Игорь. Впредь буду знать Вопрос - это только по-поводу Dir или взагали?
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 10.04.2011, 17:31   #9
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

А зачем открывать каждый файл только для того, чтобы сохранить его под другим именем? Почему нельзя просто переименовать?
Код:
Sub Main()
    Dim MyPath As String, MyName As String, i As Long: i = 1
    MyPath = "C:\Documents and Settings\Александр\Рабочий стол\Покупатели\"
    MyName = Dir(MyPath & "Customer*")
    Do While MyName <> ""
        Name MyPath & MyName As MyPath & "CostOders" & i
        i = i + 1: MyName = Dir
    Loop
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 10.04.2011, 17:49   #10
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
А зачем открывать каждый файл только для того, чтобы сохранить его под другим именем? Почему нельзя просто переименовать?
Код:
Sub Main()
    Dim MyPath As String, MyName As String, i As Long: i = 1
    MyPath = "C:\Documents and Settings\Александр\Рабочий стол\Покупатели\"
    MyName = Dir(MyPath & "Customer*")
    Do While MyName <> ""
        Name MyPath & MyName As MyPath & "CostOders" & i
        i = i + 1: MyName = Dir
    Loop
End Sub
И то верно. Ну, пути ТС неисповедимы...
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
открытие нескольких книг одним макросом и закрытие книг другим макросом kursant95 Microsoft Office Excel 6 27.01.2011 16:54
Подсчитать количество слов и количество букв MDSIQ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.11.2010 16:57
Узнать количество *.txt файлов в папке Tomazo Общие вопросы Delphi 3 12.11.2009 20:58
количество цифр и количество символов до первой гласной буквы 111111 Общие вопросы C/C++ 2 22.12.2008 12:15
Отслеживает появление в папке файлов. слежение за определенным файлом в определенной папке. RammFan Win Api 1 09.06.2007 11:09