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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2011, 22:30   #1
avolon
Новичок
Джуниор
 
Регистрация: 11.05.2011
Сообщений: 4
По умолчанию Как вставить имя открытого файла в xls

Привет чет все облазил
Есть некий макрос который при запуске указываеш файлы он собирает инфу отттуда и все на один лист запихивает
А теперь вопрос
как сделать чтоб когда он (макрос) открыл файл записал в ячейку название файла который открыл, потом добавил результат выполненного макроса,потом снова открыл второй файл опять записал названия файланиже предыдущего результата и т.д
на ум приходит вот такое но немогу понять как приладить к моему

a = Split(ActiveWorkbook.FullName, "\")
Cells(1, 1) = a(UBound(a))

так прикрепляю файлы
и вот код макроса
Код:
Sub lastConsolidate()
Dim ws As Worksheet, lr As Long, cnt As Long
Dim Files, wsDataSheet, li As Long, oAwb As String
Files = Application.GetOpenFilename("Excel files(*.xls*),*.xls*", , "Выбор файлов", , True)
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual
Set wsDataSheet = ActiveWorkbook.Sheets("Итог")
For li = LBound(Files) To UBound(Files)
Workbooks.Open Filename:=Files(li)

oAwb = Dir(Files(li), vbDirectory)
    ReDim arr(1 To ActiveWorkbook.Sheets.Count, 1 To 3)
    
    cnt = 0
        For Each ws In Workbooks(oAwb).Sheets
            If ws.Name <> "Итог" And ws.Name <> "Тит.лист" And ws.Name <> "Список телефонов" Then
            cnt = cnt + 1
                     
            lr = ws.Cells(Rows.Count, 2).End(xlUp).Row
            arr(cnt, 1) = ws.Cells(lr, 2): arr(cnt, 2) = ws.Cells(lr, 9): arr(cnt, 3) = ws.Cells(1, 1)
                
        End If
        Next



Workbooks(oAwb).Close False
lr = wsDataSheet.Cells(Rows.Count, 1).End(xlUp).Row
wsDataSheet.Range("a" & lr + 1).Resize(cnt, 3).Value = arr
Next


Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
End Sub
Вложения
Тип файла: zip Archive.zip (21.2 Кб, 7 просмотров)

Последний раз редактировалось avolon; 11.05.2011 в 22:31. Причина: ошибся в теме
avolon вне форума Ответить с цитированием
Старый 11.05.2011, 22:50   #2
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

For Each ws In Workbooks(oAwb).Sheets
If ws.Name <> "Итог" And ws.Name <> "Тит.лист" And ws.Name <> "Список телефонов" Then
cnt = cnt + 1
a = Split(ActiveWorkbook.FullName, "\")

wsDataSheet.Cells(cnt, 1) = a(UBound(a))
lr = ws.Cells(Rows.Count, 2).End(xlUp).Row
arr(cnt, 1) = ws.Cells(lr, 2): arr(cnt, 2) = ws.Cells(lr, 9): arr(cnt, 3) = ws.Cells(1, 1)

End If
Next
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234

Последний раз редактировалось R Dmitry; 11.05.2011 в 22:54.
R Dmitry вне форума Ответить с цитированием
Старый 12.05.2011, 07:18   #3
avolon
Новичок
Джуниор
 
Регистрация: 11.05.2011
Сообщений: 4
По умолчанию

немножко переделал
Код:
Sub lastConsolidate()
Dim ws As Worksheet, lr As Long, cnt As Long
Dim Files, wsDataSheet, li As Long, oAwb As String
Files = Application.GetOpenFilename("Excel files(*.xls*),*.xls*", , "Выбор файлов", , True)
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual
Set wsDataSheet = ActiveWorkbook.Sheets("Итог")
For li = LBound(Files) To UBound(Files)
Workbooks.Open Filename:=Files(li)
a = Split(ActiveWorkbook.FullName, "\")



oAwb = Dir(Files(li), vbDirectory)
    ReDim arr(1 To ActiveWorkbook.Sheets.Count, 1 To 3)
    cnt = 0
        For Each ws In Workbooks(oAwb).Sheets
            If ws.Name <> "Итог" And ws.Name <> "Тит.лист" And ws.Name <> "Список телефонов" Then
            cnt = cnt + 1
          
            lr = ws.Cells(Rows.Count, 2).End(xlUp).Row
            arr(cnt, 1) = ws.Cells(lr, 2): arr(cnt, 2) = ws.Cells(lr, 9): arr(cnt, 3) = ws.Cells(1, 1)
                
        End If
        Next
Workbooks(oAwb).Close False
wsDataSheet.Cells(lr + 1, 1) = a(UBound(a))
lr = wsDataSheet.Cells(Rows.Count, 1).End(xlUp).Row
wsDataSheet.Range("a" & lr + 1).Resize(cnt, 3).Value = arr
Next
Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
End Sub
но остался вопрос как сделать так чтоб выводил имя файла без разширения xls ??
avolon вне форума Ответить с цитированием
Старый 12.05.2011, 07:22   #4
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

используйте mid(строка,начало,количество)
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 12.05.2011, 07:47   #5
avolon
Новичок
Джуниор
 
Регистрация: 11.05.2011
Сообщений: 4
По умолчанию

хм
Тоесть
нгде то сюда
Код:
wsDataSheet.Cells(lr + 1, 1) = a(UBound(a))
должен прилепит Mid ??
avolon вне форума Ответить с цитированием
Старый 12.05.2011, 07:55   #6
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от avolon Посмотреть сообщение
хм
Тоесть
нгде то сюда
Код:
wsDataSheet.Cells(lr + 1, 1) = a(UBound(a))
должен прилепит Mid ??
Код:
wsDataSheet.Cells(lr + 1, 1) = MID(a(UBound(a)),1,Len(a(UBound(a)))-4)
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 12.05.2011, 07:59   #7
avolon
Новичок
Джуниор
 
Регистрация: 11.05.2011
Сообщений: 4
По умолчанию

Спасибо!!
Сам допер чет с утра голова вообще не робит (((((НОЧЬЮ СПАТЬ НАДА!!
avolon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение размера открытого файла Max3001 Общие вопросы Delphi 9 21.04.2011 15:31
Создание файла на основании открытого lecko Microsoft Office Excel 20 17.03.2011 12:53
Как убрать пустые строки при открытии XLS файла Des Общие вопросы Delphi 1 06.11.2010 09:13
Как создать отформатированую HTML-таблицу из xls-файла? %$PROregRAMi$t% HTML и CSS 1 28.05.2010 12:28
как присвоить значение ячейки R1C1 из 1.xls, допустим какой-нибудь любой ячейке из 2.xls ? diabloskrk Microsoft Office Excel 3 08.10.2007 12:27