powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA. Запуск макроса из личной книги макросов
2 сообщений из 2, страница 1 из 1
VBA. Запуск макроса из личной книги макросов
    #38446096
ProgramGirl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Подскажите, макрос по сбору информации из нескольких книг и листов excel не отрабатывает, если сохранять его в личную книгу макросов (виснет и всё).
Если сохранять просто в книгу, то работает:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
Sub Consolidated_Range_of_Books_and_Sheets111()
    Dim iBeginRange As Object, lCalc As Long
    Dim sRngAddress As String, oAwb As String, sCopyAddress As String, sSheetName As String
    Dim lLastrow As Long, lLastRowMyBook As Long, li As Long, iLastColumn, kolvo_list, i, flag1 As Integer
    Dim wsSh As Object, wsDataSheet As Object, bPolyBooks As Boolean, avFiles
    On Error Resume Next
    Set iBeginRange = Application.InputBox("Выберите диапазон сбора данных." & vbCrLf & _
                                           "1. При выборе только одной ячейки данные будут собраны со всех листов начиная с этой ячейки. " & _
                                           vbCrLf & "2. При выделении нескольких ячеек данные будут собраны только с указанного диапазона всех листов.", Type:=8)
    If iBeginRange Is Nothing Then Exit Sub
    sSheetName = InputBox("Введите имя листа, с которого собирать данные(если не указан, то данные собираются со всех листов)", "Параметр")
    If sSheetName = "" Then sSheetName = "*"
    On Error GoTo 0
    If MsgBox("Собрать данные с нескольких книг?", vbInformation + vbYesNo, "Excel-VBA") = vbYes Then
        avFiles = Application.GetOpenFilename("Excel files(*.xls*),*.xls*", , "Выбор файлов", , True)
        If VarType(avFiles) = vbBoolean Then Exit Sub
        bPolyBooks = True
    Else
        avFiles = Array(ThisWorkbook.FullName)
    End If
    
    With Application
        lCalc = .Calculation
        .ScreenUpdating = False: .EnableEvents = False: .Calculation = xlManual
    End With
    
    flag1 = 0
   kolvo_list = ThisWorkbook.Sheets.Count
   For i = 1 To kolvo_list
     lLastColMyBook = 4
     Set wsDataSheet = ThisWorkbook.Sheets(i)
     sSheetName = wsDataSheet.Name
  
    flag1 = 0
   For li = LBound(avFiles) To UBound(avFiles)
      flag1 = 0
       If bPolyBooks Then Workbooks.Open Filename:=avFiles(li)
        oAwb = Dir(avFiles(li), vbDirectory)
        Do While flag1 = 0
         For Each wsSh In Workbooks(oAwb).Sheets
          
           If wsSh.Name Like sSheetName Then
                flag1 = 1
                
                With wsSh
                    Select Case iBeginRange.Count
                    Case 1
                        lLastrow = 21
                        iLastColumn = 4
                        sCopyAddress = .Range(.Cells(iBeginRange.Row, iBeginRange.Column), .Cells(lLastrow, iLastColumn)).Address
                    Case Else
                        sCopyAddress = iBeginRange.Address
                        lLastrow = iBeginRange.Rows.Count
                        iLastColumn = iBeginRange.Columns.Count
                    End Select
                    lLastColMyBook = lLastColMyBook + 2
                    sRngAddress = .Range(.Cells(3, lLastColMyBook), .Cells(lLastrow, iLastColumn + lLastColMyBook)).Address
                    .Range(sCopyAddress).Copy wsDataSheet.Range(sRngAddress)
                    wsDataSheet.Cells(2, lLastColMyBook) = "ТОО № " + Mid(Workbooks(oAwb).Name, 10, 4)
                    wsDataSheet.Columns.AutoFit
                    wsDataSheet.Rows.AutoFit
                End With
            End If
           Next wsSh
           Loop
        
    Next li
 Next i
 

    With Application
        .ScreenUpdating = True: .EnableEvents = True: .Calculation = lCalc
    End With
End Sub



Подскажите, в чем причина?
Модератор: Учимся использовать тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
VBA. Запуск макроса из личной книги макросов
    #38446110
_Дмит_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ThisWorkbook - книга в которой макрос находиться (личная книга макросов).
ActiveWorkbook - активная книга, в которой собираются данные.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA. Запуск макроса из личной книги макросов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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