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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2014, 17:42   #1
Arnold9131
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 31
Плохо Скопировать в файл один столбец со всех файлов

Здравствуйте, уважаемые форумчани!
Есть проблема.
Нужно в отдельный файл вставить столбец H с других файлов. Файлы находятся в одной папке
Прошу прощения, если такая уже на форуме тема существует, вопрос очень срочный.



Sub Get_All_File_from_Folder()
Dim openBook, newBook As Workbook
Dim x, k, l, colrow, sumrow As Integer
Dim PK, FL As String
Set newBook = Workbooks.Open("S:\!Архив ВК\Косяки в ЭА\Для обработки\1\all.xls") ' Это файл куда будут копироваться данные
colrow = 1
'For x = 1 To 50
Set openBook = Workbooks.Open("S:\!Архив ВК\Косяки в ЭА\Для обработки\1982-5-10-2пк.xls") ' Это первый файл в папке
sumrow = ActiveSheet.Cells.SpecialCells(xlCe llTypeLastCell).Row ' Кол-во строк
For i = 2 To sumrow
newBook.Sheets(1).Cells(i + colrow, 1).Value = openBook.Sheets(1).Cells(i, 6).Text
Next i
colrow = colrow + sumrow
'Next x

End Sub
Arnold9131 вне форума Ответить с цитированием
Старый 19.02.2014, 07:20   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Следующий макрос скопирует данные столбцов "H" 1-го листа из всех книг, находящихся в той же папке, что и файл с этим макросом, и разместит скопированные значения последовательно в столбцы на лист 1, начиная со столбца "A":
Код:
Sub qq()
    Dim wb As Workbook, ws As Worksheet, p As String, f As String, i As Long
    Application.ScreenUpdating = False: Application.DisplayAlerts = False
    p = ThisWorkbook.Path & Application.PathSeparator: f = Dir(p & "*.xls*")
    Set ws = ThisWorkbook.Sheets(1): ws.Cells.ClearContents: i = 1
    Do While f <> ""
        If f <> ThisWorkbook.Name Then
            Set wb = GetObject(p & f)
            wb.Sheets(1).Columns("H").Copy
            ws.Columns(i).PasteSpecial Paste:=xlPasteValues
            wb.Close False: i = i + 1
        End If
        f = Dir
    Loop
    Application.CutCopyMode = False: ws.Activate: [A1].Select
End Sub
Возможно, что я не совсем правильно понял задачу.
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 19.02.2014 в 07:28.
SAS888 вне форума Ответить с цитированием
Старый 19.02.2014, 10:26   #3
Arnold9131
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 31
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Следующий макрос скопирует данные столбцов "H" 1-го листа из всех книг, находящихся в той же папке, что и файл с этим макросом, и разместит скопированные значения последовательно в столбцы на лист 1, начиная со столбца "A":
Код:
Sub qq()
    Dim wb As Workbook, ws As Worksheet, p As String, f As String, i As Long
    Application.ScreenUpdating = False: Application.DisplayAlerts = False
    p = ThisWorkbook.Path & Application.PathSeparator: f = Dir(p & "*.xls*")
    Set ws = ThisWorkbook.Sheets(1): ws.Cells.ClearContents: i = 1
    Do While f <> ""
        If f <> ThisWorkbook.Name Then
            Set wb = GetObject(p & f)
            wb.Sheets(1).Columns("H").Copy
            ws.Columns(i).PasteSpecial Paste:=xlPasteValues
            wb.Close False: i = i + 1
        End If
        f = Dir
    Loop
    Application.CutCopyMode = False: ws.Activate: [A1].Select
End Sub
Возможно, что я не совсем правильно понял задачу.


Макрос у меня не работает.
Буду очень благодарен, если опишите за что отвечают некоторые строчки кода.
Arnold9131 вне форума Ответить с цитированием
Старый 19.02.2014, 11:03   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите пример во вложении.
Откройте файл "Main.xls" и запустите макрос "Sbor".
В коде макроса подробные комментарии.
Вложения
Тип файла: rar Primer.rar (14.6 Кб, 21 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 19.02.2014, 11:12   #5
Arnold9131
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 31
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Следующий макрос скопирует данные столбцов "H" 1-го листа из всех книг, находящихся в той же папке, что и файл с этим макросом, и разместит скопированные значения последовательно в столбцы на лист 1, начиная со столбца "A":
Код:
Sub qq()
    Dim wb As Workbook, ws As Worksheet, p As String, f As String, i As Long
    Application.ScreenUpdating = False: Application.DisplayAlerts = False
    p = ThisWorkbook.Path & Application.PathSeparator: f = Dir(p & "*.xls*")
    Set ws = ThisWorkbook.Sheets(1): ws.Cells.ClearContents: i = 1
    Do While f <> ""
        If f <> ThisWorkbook.Name Then
            Set wb = GetObject(p & f)
            wb.Sheets(1).Columns("H").Copy
            ws.Columns(i).PasteSpecial Paste:=xlPasteValues
            wb.Close False: i = i + 1
        End If
        f = Dir
    Loop
    Application.CutCopyMode = False: ws.Activate: [A1].Select
End Sub
Возможно, что я не совсем правильно понял задачу.
Вроде заработал, но он только с одного файла копирует данные и то неполностью, и вставляет не в столбец "H".
Вложения
Тип файла: rar Smacr.rar (17.2 Кб, 10 просмотров)
Arnold9131 вне форума Ответить с цитированием
Старый 19.02.2014, 12:51   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Вроде заработал, но он только с одного файла копирует данные и то неполностью, и вставляет не в столбец "H".
1. Код нужно располагать не в модуле листа, а в программном модуле.
2. Даже не смотря на это, код рабочий. Я специально прикрепил несколько файлов с данными из которых макрос извлекает значения (если, конечно, они располагаются в этой же папке.
3. Как я уже говорил, макрос извлекает значения из столбцов "H" каждого файла и располагает их на свой 1-й лист, начиная со столбца "A". Т. е. данные из столбца "H" 1-го файла-источника будут помещены в столбец "A". Из из столбца "H" следующего файла - в столбец "B" и т. д. Вы же говорили, что
Цитата:
Нужно в отдельный файл вставить столбец H с других файлов.
Именно это и происходит. Укажите конкретно, какие данные (из каких файлов, каких листов и каких диапазонов требуется получить и КУДА ИХ ПОМЕЩАТЬ?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 19.02.2014, 14:35   #7
Arnold9131
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 31
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
1. Код нужно располагать не в модуле листа, а в программном модуле.
2. Даже не смотря на это, код рабочий. Я специально прикрепил несколько файлов с данными из которых макрос извлекает значения (если, конечно, они располагаются в этой же папке.
3. Как я уже говорил, макрос извлекает значения из столбцов "H" каждого файла и располагает их на свой 1-й лист, начиная со столбца "A". Т. е. данные из столбца "H" 1-го файла-источника будут помещены в столбец "A". Из из столбца "H" следующего файла - в столбец "B" и т. д. Вы же говорили, что Именно это и происходит. Укажите конкретно, какие данные (из каких файлов, каких листов и каких диапазонов требуется получить и КУДА ИХ ПОМЕЩАТЬ?

Нужно извлечь значения из столбцов "H" каждого файла и записать их в отдельный файл в столбец "H". Т.е. все извлеченные данные должны быть вставлены в отдельный файл в столбец "H".
В этих файлах только по одному листу, так что перебирать листы не нужно.
Arnold9131 вне форума Ответить с цитированием
Старый 19.02.2014, 15:08   #8
Pasha_Z
Пользователь
 
Регистрация: 01.01.2014
Сообщений: 71
По умолчанию

Цитата:
Сообщение от Arnold9131 Посмотреть сообщение
Нужно извлечь значения из столбцов "H" каждого файла и записать их в отдельный файл в столбец "H". Т.е. все извлеченные данные должны быть вставлены в отдельный файл в столбец "H".
В этих файлах только по одному листу, так что перебирать листы не нужно.
так понимается, что извлекаются непустые данные из столбца Н
и последовательно вставляются в новый файл столба Н.
а не весь столбец Н переносит.
Pasha_Z вне форума Ответить с цитированием
Старый 20.02.2014, 05:49   #9
Arnold9131
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Pasha_Z Посмотреть сообщение
так понимается, что извлекаются непустые данные из столбца Н
и последовательно вставляются в новый файл столба Н.
а не весь столбец Н переносит.
Да, надо извлечь только ячейки с данными "H" (в основном в них содержатся ссылки), и последовательно их вставить в новый файл столбца "H".
Arnold9131 вне форума Ответить с цитированием
Старый 20.02.2014, 06:40   #10
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
...в основном в них содержатся ссылки...
А данные полученные по этим ссылкам в ячейках присутствуют? Ссылки на реально существующий источник? Обновлять данные по этим ссылкам при открытии?
Прикрепите пример с хотя бы одним файлом, из которого нужно брать данные. Можно с "липовыми" значениями (яблоки, груши...).
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как скопировать один и тот же файл сразу в несколько папок? GvR Общие вопросы Delphi 7 08.11.2013 22:32
Объединение файлов одинаковой структуры в один файл Tankiss Microsoft Office Excel 20 11.09.2013 17:25
Сделать из множества файлов Ворд один файл с расширением .chm Ципихович Эндрю Фриланс 23 12.05.2013 16:45
Нужна прога чотбы скинуть названия файлов в папке в один файл (txt) Ninzjacont Помощь студентам 2 08.02.2009 20:30
Скопировать по одной ячейке из нескольких файлов в один Nimo Microsoft Office Excel 2 09.08.2008 09:25