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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2015, 18:54   #21
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Цитата:
Сообщение от Ogeris Посмотреть сообщение
Примерно так?
Хотя бы так
Код:
Sub Paste()
  Dim v
  On Error Resume Next
  For Each v In Array("CC.xls", "КП54.xls", "Л60.xls", "Кар21.xls", "Л65.xls", "Р13.xls", "Л60_2.xls", "П52.xls", "У9.xls", "ГФ6.xls", "Крп41.xls", "Гзв12.xls", "Лыс.xls", "ШК112.xls", "М65.xls", "1905.xls", "Кб105.xls", "Пис29.xls")
  'или
  'For Each v In Split("Кб59.xls КП54.xls Л60.xls Кар21.xls Л65.xls Р13.xls Л60_2.xls П52.xls У9.xls ГФ6.xls Крп41.xls Гзв12.xls Лыс.xls ШК112.xls М65.xls 1905.xls Кб105.xls Пис29.xls")
    
    Windows(v).Activate
    If Err Then
      Err.Clear
      MsgBox "Книга " & v & " не открыта!", vbExclamation
    Else
      With Workbooks("Книга2")
        Sheets(1).Range("A1:AA" & Cells(Rows.Count, 1).End(xlUp).Row).Copy _
        IIf(.Cells(.Rows.Count, 1).End(xlUp).Row = 1, .Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0))
        .Columns(1).UnMerge
      End With
    End If
  Next
  On Error GoTo 0
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 11.09.2015, 07:32   #22
Ogeris
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 87
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
не факт!
не обязательно не предоставил, а может оператор забыл открыть файл (пропустил)
Этот отчет как раз оператор и делает, вот он сам себя и проверит
Ogeris вне форума Ответить с цитированием
Старый 11.09.2015, 09:45   #23
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

файлы могут быть открыты в ексель, а могут просто лежать в той же папке что и файл Отчет.xls

Код:
Sub PasteFromFilesList()
  Dim i As Long, wb As Workbook, WasOpened As Boolean, Path As String, fn As String, FilesList
  FilesList = Array("Кб59.xls", "КП54.xls", "Л60.xls", "Кар21.xls", "Л65.xls", "Р13.xls", "Л60_2.xls", "П52.xls", "У9.xls", "ГФ6.xls", "Крп41.xls", "Гзв12.xls", "Лыс.xls", "ШК112.xls", "М65.xls", "1905.xls", "Кб105.xls", "Пис29.xls")
  Path = Workbooks("отчет.xls").Path & Application.PathSeparator
  For i = LBound(FilesList) To UBound(FilesList)
    Set wb = FindWorkBook(FilesList(i))
    If wb Is Nothing Then
      fn = Dir(Path & FilesList(i))
      If fn <> "" Then
        Set wb = Workbooks.Open(fn): WasOpened = True
      Else
        MsgBox "Файл не найден" & Chr(10) & FilesList(i), vbCritical + vbOKOnly, "Ой, БЕДА!!!"
      End If
    Else
      WasOpened = False:  wb.Activate
    End If
    if Not wb Is Nothing then 
      With Workbooks("отчет.xls")
        Sheets(1).Range("A1:AA" & Cells(Rows.Count, 1).End(xlUp).Row).Copy _
        IIf(.Cells(.Rows.Count, 1).End(xlUp).Row = 1, .Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0))
        .Columns(1).UnMerge
        If WasOpened Then wb.Close False
      End With
    end if
  Next
End Sub



Function FindWorkBook(wbn As String) As Workbook
  Dim wb As Workbook
  For Each wb In Workbooks
    If wb.Name Like wbn Then Set FindWorkBook = wb: Exit Function
  Next
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 11.09.2015 в 09:49.
IgorGO вне форума Ответить с цитированием
Старый 11.09.2015, 12:56   #24
Ogeris
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 87
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
файлы могут быть открыты в ексель, а могут просто лежать в той же папке что и файл Отчет.xls
Выдаёт ошибку "ByRef argument type mismatch" на слове FilesList в строке
Код:
Set wb = FindWorkBook(FilesList(i))
Ogeris вне форума Ответить с цитированием
Старый 11.09.2015, 13:24   #25
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

напишите так:
Код:
Set wb = FindWorkBook(cStr(FilesList(i)))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.09.2015, 13:26   #26
Ogeris
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 87
По умолчанию

2 Казанский: Большое спасибо! Немного подправил и заработало!
Ogeris вне форума Ответить с цитированием
Старый 11.09.2015, 13:27   #27
Ogeris
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 87
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
Хотя бы так
Большущее Спасибо!
Немного подправил, и заработало как надо!
Ogeris вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не показывать сообщение об ошибке, при подключении. Denutrror Работа с сетью в Delphi 3 09.07.2011 15:10
Помигать прямоугольником вокруг компонента при ошибке. Almaas Помощь студентам 1 15.12.2010 09:38
Сообщение об ошибке при вычислении длины строки vedro-compota Общие вопросы Delphi 24 17.05.2010 16:23
Indy, выход при ошибке подключения к прокси ArtInt Работа с сетью в Delphi 3 11.02.2010 16:15
Закрыть программу, при ошибке Dr.Badnezz Общие вопросы Delphi 7 16.01.2009 00:32