Страница: 1 |
Народ помогите. Нужен макрос в Excel, что бы он в определенной папке находил все файлы Excel и копировал из каждого файла лист в открытую книгу. (в каждом файле 1 лист, имена листов разные и кника защищена паролем)
если папка известна заранее, то нет проблем правда если она выбирается пользователем, то тоже ничего страшного ворпос в другом, знаешь ли ты пароль к той книге из которой хочешь стащить лист. если нет, то извини! а по-моему алгоритм простой Да пароль ивестен, я использую этот макрос(берет данные с закрытой книги). Private Function GetValue(path, file, sheet, ref) ' Make sure the file exists ' Create the argument ' Execute an XLM macro Sub TestGetValue2() Если не трудно напиши, а то я у же нечего не соображаю. Че-то мудрено тут накорябано. Вообщем, задача ясна - жди примера! P.S. а че пояснения на ангийском и потом странная проверка у тебя на наличие файла - заранее известного причем. Option Explicit Sub Макрос1() Dim fileToOpen As String ' объявляем переменную типа строка filesName = "" ' не дай БОГ там что-нибудь осталось fileToOpen = Application.GetOpenFilename("выбирете нужный файл , *.xls") ' фильтр открытия файла For i = Len(fileToOpen) To 1 Step -1 ' считаем с конца строки если возникнут вопросы, не исключено, что я тебя неправильно понял, пиши сюда или на мыло Страница: 1 |
Вопрос: Помогите с Excel -ем
Добавлено: 01.04.04 13:16
Автор вопроса:
spiderspy
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа: night-roll
Вопросов: 36
Ответов: 326
Профиль | | #1
Добавлено: 05.04.04 01:15
Номер ответа: 2
Автор ответа: spiderspy
Вопросов: 7
Ответов: 3
Профиль | | #2
Добавлено: 05.04.04 10:15
Дело втом что есть листы где 20 колонок и 635 строк заполнены, скорость конечно
тоже медленная быстрее скоприровать будет.
' Retrieves a value from a closed workbook
Dim arg As String
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
GetValue = ExecuteExcel4Macro(arg)
End Function
p = "c:\XLFiles\Budget"
f = "99Budget.xls"
s = "Sheet1"
Application.ScreenUpdating = False
For r = 1 To 100
For c = 1 To 12
a = Cells(r, c).Address
Cells(r, c) = GetValue(p, f, s, a)
Next c
Next r
Application.ScreenUpdating = True
End Sub
Номер ответа: 3
Автор ответа: night-roll
Вопросов: 36
Ответов: 326
Профиль | | #3
Добавлено: 09.04.04 15:45
Номер ответа: 4
Автор ответа: night-roll
Вопросов: 36
Ответов: 326
Профиль | | #4
Добавлено: 11.04.04 22:20
Dim filesName As String ' объявляем переменную типа строка
Dim i As Long ' объявляем переменную типа длинное, говорят, что оно место < занимает чем Integer
' ищем само наименование файла (читаем строку fileToOpen с конца до символа \
If Mid$(fileToOpen, i, 1) <> "\" Then ' если мы не встретили символ \
filesName = Mid$(fileToOpen, i, 1) & filesName ' то присваиваем символ к будущему имени файла
Else
GoTo 1 ' если все же натолкнулись на \, то идем дальше - к метке 1
End If
Next
1:
Workbooks.Open Filename:=fileToOpen ' открываем указанный нам файл
Sheets("Лист1").Copy After:=Workbooks("NR.xls").Sheets(1) ' копируем лист с именем Лист1 в нашу книгу
Windows(filesName).Close ' закрываем открытую книгу
End Sub
Номер ответа: 5
Автор ответа: night-roll
Вопросов: 36
Ответов: 326
Профиль | | #5
Добавлено: 11.04.04 22:22