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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2009, 22:28   #1
mephist
Форумчанин
 
Регистрация: 01.05.2009
Сообщений: 200
По умолчанию Запуск макроса из другой книги!

Очень хочется из макроса одной книги запустить макрос другой книги! Оба макроса прикреплены к книгам.
Насколько я понимаю. Обе книги нужно будет открыть.
Код:
    Filename = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "mc.xlsx")
    With Workbooks.Open(Filename, , , , , , True)
???
    .Close True
    End With
И соответственно два вопроса:
1) Правильно ли я открываю книгу mc, если хочу изменить ее содержимое и сохраниь его?
2) Какой командой запустить макрос книги mc?
mephist вне форума Ответить с цитированием
Старый 24.07.2009, 04:51   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно так:
Код:
With Workbooks.Open(ThisWorkbook.Path & "\mc.xlsx")
    Application.Run "mc.xlsx!Macro1"
    .Close True
End With
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 27.07.2009, 13:41   #3
mephist
Форумчанин
 
Регистрация: 01.05.2009
Сообщений: 200
По умолчанию

Возникла очень неприятная проблема. Пытаюсь таким образом запустить макрос из другой книги, но Excel просто зависает. Макрос, который я пытаюсь запустить работает хорошо из родной книги, а вот здесь нет.
Скажите пожалуйста, есть ли VBA пошаговое выполнение программы???
Посмотрите, пожалуйста коды:
Запускающая книга:
Код:
Sub Макрос5()
    Dim li As Long, asFileNames, asColumns1, asLiners4, asColumns8, asColumns10a, asColumns10b, asCompanyNames, asColumns10, asCenterNames
    Application.Calculation = xlCalculationManual: Application.ScreenUpdating = False ': On Error Resume Next
    ActiveWorkbook.RemovePersonalInformation = False
    asFileNames = Array("hq.xlsx", "sz.xlsx", "sd.xlsx", "mk.xlsx", "mp.xlsx", "mc.xlsx", "ug.xlsx", "mn.xlsx", "mh.xlsx")
    asColumns1 = Array(6, 5, 7, 8, 9, 10, 11, 12, 13)
    asLiners4 = Array(13, 11, 12, 16, 18, 14, 19, 15, 17)
    asColumns8 = Array(7, 12, 17, 32, 22, 27, 37, 42, 47)
    asColumns10a = Array(1, 6, 10, 18, 22, 14, 26, 30, 34)
    asColumns10b = Array(5, 4, 6, 7, 8, 9, 10, 11, 12)
    asLiners10 = Array(0, 22, 23, 25, 26, 24, 27, 28, 29)
    Dim Sh As Worksheet
    For Each Sh In Sheets
        Sh.Unprotect
    Next
    'Filename = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "8mc.xlsm")
    'With Workbooks.Open(Filename, , , , , , True)
    With Workbooks.Open(ThisWorkbook.path & "\8mc.xlsm")
        Application.Run "8mc.xlsm!Blank_fill_Center"
        .SaveAs Filename:=ThisWorkbook.path & "\8mc.xlsx", FileFormat:=xlOpenXMLWorkbook
        .Close True
    End With
Дальше код продолжается, но excel зависает сразу после того, как открывает книгу 8mc.xlsm!!!
Код книги 8mc.xlsm:
Код:
Sub Blank_fill_Center()
    Dim asCenterNames, asCompanyName
    On Error Resume Next
    'Application.Calculation = xlCalculationManual: Application.ScreenUpdating = False: DisplayAlerts = False:
    ActiveWorkbook.RemovePersonalInformation = False
    asCenterNames = Array("nc.xlsx", "cc.xlsx", "sc.xlsx")
    asCompanyName = Array("фыв", "йук", "укн")
    For li = LBound(asCenterNames) To UBound(asCenterNames)
        Filename = Replace(Workbooks("8mc.xlsm").FullName, Workbooks("8mc.xlsm").Name, asCenterNames(li))
        With Workbooks.Open(Filename, , , , , , True)
                ActiveWorkbook.RemovePersonalInformation = False
                Dim Shk As Worksheet
                For Each Sht In Sheets
                    Shk.Unprotect
                    Shk.UsedRange.Value = Shk.UsedRange.Value
                Next
        End With
    Next li
                With Workbooks("8mc.xlsm")
                    With .Worksheets(1)
                    k = 1
                        i = 9: j = 10: .Cells(i, j).Formula = "=" & Workbooks("sc.xlsx").Worksheets(k).Cells(i, j).Address(, , , True) & "+" & Workbooks("cc.xlsx").Worksheets(k).Cells(i, j).Address(, , , True) & "+" & Workbooks("sc.xlsx").Worksheets(k).Cells(i, j).Address(, , , True)
    Application.Calculation = xlCalculationAutomatic
    DisplayAlerts = True
End Sub
Я что - то не так написал????
mephist вне форума Ответить с цитированием
Старый 27.07.2009, 15:06   #4
pivas
Форумчанин
 
Регистрация: 03.04.2009
Сообщений: 412
По умолчанию

Цитата:
Сообщение от mephist Посмотреть сообщение
Скажите пожалуйста, есть ли VBA пошаговое выполнение программы???
В режиме редактора нажимаете F8.
pivas вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматический запуск макроса АлёнаP Microsoft Office Excel 4 28.03.2010 12:55
Запуск макроса с параметрами из другого макроса Saladin Microsoft Office Excel 2 19.01.2009 09:43
снятие пароля с книги/листа из другой книги? Bezdar Microsoft Office Excel 3 25.12.2008 11:59
Автоматический запуск макроса Len@ Microsoft Office Excel 6 23.07.2008 12:05