Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / сводный документ / 13 сообщений из 13, страница 1 из 1
09.02.2010, 06:24
    #36456594
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сводный документ
Доброго времени суток, подскажите есть ли возможность с помощью макроса сделать следующее:
в папке создаем новый exel документ, кроме него в этой папке находятся exel файлы с данными, в каждом их них по одной страничке., если ли возможность открыть автоматически все эти файлы и скопировать их листы в один общий сводный документ?
заранее благодарен.
...
Рейтинг: 0 / 0
09.02.2010, 08:38
    #36456665
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сводный документ
Nomad87,
Да, сделать такое можно.
1. Создаете сводный файл
2. В этом файле в цикле открываете остальные файлы
3. Копируете листы.
...
Рейтинг: 0 / 0
09.02.2010, 08:52
    #36456679
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сводный документ
спасибо, я алгоритм понимаю, однко,
как можно в цикле открыть все файлы exel кроме текущего?
...
Рейтинг: 0 / 0
09.02.2010, 09:38
    #36456743
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сводный документ
Nomad87спасибо, я алгоритм понимаю, однко,
как можно в цикле открыть все файлы exel кроме текущего?

А что вы не понимаете?
Как открыть файл?
Как получить список файлов?
Как узнать имя текущего?
...
Рейтинг: 0 / 0
09.02.2010, 09:47
    #36456766
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сводный документ
я не понимаю как получить список файлов в папке и как их по очереди, по списку открыть.
поясните пожалуйста на простом примере -
есть три файла (1.xls, 2.xls, 3.xls), название листов внутри их соответственно имени файла и файл "итоговый", как открыть все три файла, скопировать из каждого по страниче и вставить их в итоговый файл
...
Рейтинг: 0 / 0
09.02.2010, 09:52
    #36456780
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сводный документ
Nomad87я не понимаю как получить список файлов в папке

Команда Dir

Nomad87 и как их по очереди, по списку открыть.

Устроить цикл по результату

Nomad87поясните пожалуйста на простом примере -
есть три файла (1.xls, 2.xls, 3.xls), название листов внутри их соответственно имени файла и файл "итоговый", как открыть все три файла, скопировать из каждого по страниче и вставить их в итоговый файл

Из книги Excel добавить лист из другой книги Excel
Тема еще даже не ушла с первой страницы
...
Рейтинг: 0 / 0
09.02.2010, 09:55
    #36456787
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сводный документ
Есть пример как скопировать определённые значения из всех xls файлов определённой папки в файл, который не находится в этой папке:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Sub summdata()
Dim FSO
Dim TheFolder, TheFiles, AFile
Application.ScreenUpdating = False
Set wb = ThisWorkbook
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TheFolder = FSO.GetFolder("C:\temp\svod\") 'Каталог, откуда суммировать
Set TheFiles = TheFolder.Files
For Each AFile In TheFiles
If UCase(FSO.GetExtensionName(AFile.Path)) = "XLS" Then
Set xls = Workbooks.Open(Filename:=AFile, ReadOnly:=True)
wb.Sheets( 1 ).[aj2] = wb.Sheets( 1 ).[aj2].Value + xls.Sheets( 1 ).[aj2].Value
'сюда добавить аналогичные строки по другим ячейкам
xls.Close False
End If
Next
Application.ScreenUpdating = True
End Sub
Несложно переработать под задачу, если итоговый файл ещё не сохранён в папку с исходными файлами.
...
Рейтинг: 0 / 0
09.02.2010, 10:12
    #36456825
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сводный документ
Вариант копирования листов (первого листа из каждого файла):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub summdata()
Dim FSO
Dim TheFolder, TheFiles, AFile
Application.ScreenUpdating = False
Set wb = ThisWorkbook
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TheFolder = FSO.GetFolder("C:\temp\svod\") 'Каталог, откуда суммировать
Set TheFiles = TheFolder.Files
For Each AFile In TheFiles
If UCase(FSO.GetExtensionName(AFile.Path)) = "XLS" Then
Set xls = Workbooks.Open(Filename:=AFile, ReadOnly:=True)
xls.Sheets( 1 ).Copy After:=wb.Sheets(wb.Sheets.Count)
xls.Close False
End If
Next
Application.ScreenUpdating = True
End Sub
...
Рейтинг: 0 / 0
09.02.2010, 10:22
    #36456863
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сводный документ
Ну и вот вариант, который создаёт новый файл и предлагает его сохранить как результат:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Sub summdata()
Dim FSO As Object
Dim TheFolder As Object, TheFiles As Object, AFile As Object
Application.ScreenUpdating = False
Set wb = Workbooks.Add(template:=xlWorksheet)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TheFolder = FSO.GetFolder("C:\temp\svod\") 'Каталог, откуда суммировать
Set TheFiles = TheFolder.Files

For Each AFile In TheFiles
If UCase(FSO.GetExtensionName(AFile.Path)) = "XLS" Then
Set xls = Workbooks.Open(Filename:=AFile, ReadOnly:=True)
xls.Sheets( 1 ).Copy After:=wb.Sheets(wb.Sheets.Count)
xls.Close False
End If
Next

arFiles = Application.GetSaveAsFilename("Результат", "Excel Files (*.xls), *.xls", , "Сохранить объединенную книгу")
wb.SaveAs arFiles

Application.ScreenUpdating = True
End Sub
...
Рейтинг: 0 / 0
09.02.2010, 12:41
    #36457304
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сводный документ
> Автор: Hugo121

Нет, это конечно все класно, но мне кажется простая запись макроса на каждое из действий вполне сможет прояснить большую
часть вопросов

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
09.02.2010, 13:05
    #36457401
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сводный документ
не понимаю как получить список файлов в папке и как их по очереди, по списку открыть -
вот это записью макроса имхо не получить. Остальное можно, сам только что так делал :)
...
Рейтинг: 0 / 0
09.02.2010, 14:51
    #36457810
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сводный документ
> Автор: Hugo121
> не понимаю как получить список файлов в папке и как их по очереди, по списку открыть -
> вот это записью макроса имхо не получить. Остальное можно, сам только что так делал :)

Не получить, согласен, но можно просто
почитать :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
09.02.2010, 15:19
    #36457906
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сводный документ
Там много написано, можно короче:
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub tt()
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each AFile In FSO.GetFolder("C:\temp\svod\").Files
'work
Next
End Sub
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / сводный документ / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]