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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2011, 11:21   #1
Alena0501
Пользователь
 
Регистрация: 10.02.2011
Сообщений: 17
По умолчанию Как сохранить макрос в личную книгу макросов или сделать из него надстройку?

У меня есть макрос сбора книг в одну. Работает только при условии размещения его в текущей книги. При попытке сделать его доступным для всех книг, выдает ошибку. Помогите, пожалуйста. Макрос рабочий, и использую часто, это у него для меня единственный недостаток. Нашла его где-то в интернете, возможно даже и на данном форуме.
Вот сам макрос:

Код:
Sub CombineWorkbooks()
    Dim wb As Workbook, Nm As String, i As Integer, j As Long
    Application.ScreenUpdating = False: Application.DisplayAlerts = False
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = True: .Title = "Files to Merge": .Show
        If .SelectedItems.Count = 0 Then Exit Sub
        For i = 1 To .SelectedItems.Count
            Set wb = Workbooks.Open(Filename:=.SelectedItems(i))
            Nm = Replace(wb.Name, ".xls", "")
            On Error Resume Next: ThisWorkbook.Sheets(Nm).Delete: On Error GoTo 0
            ActiveSheet.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
            ActiveSheet.Name = Nm: wb.Close False
            With ActiveSheet.UsedRange
                For j = .Row + .Rows.Count - 1 To 1 Step -1
                    If Rows(j).Text = "" Then Rows(j).Delete
    Next: End With: Next: End With
End Sub
Alena0501 вне форума Ответить с цитированием
Старый 17.05.2011, 11:25   #2
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
Как сохранить макрос в личную книгу макросов
Поместите его в модуль книги PERSONAL.XLS
Если такой книги у Вас пока нет, запишите любой мкарос, хоть 2х2 с сохранением в Личной книге макросов, сохранитесь.
В дальнейшем, при открытии любого документа Excel Вы увидите в редакторе VBA эту книгу.
Вот в нее и помещайте все макросы общего назначения.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 17.05.2011, 11:29   #3
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
или сделать из него надстройку
Сохраните пустой файл с этим макросом Как надстройка *.xla
Поместите в папку XLSTART.
Теперь он будет запускаться при открытии любого файла Excel
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 17.05.2011, 11:35   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

В этом коде идёт обращение к ThisWorkbook, т.е. если поместите в Персонал, то в Персонале и будет листы удалять и добавлять.
Нужно код чуть переделать - дописать в начале (до открытия другой книги) типа
Dim wba As Workbook
set wba = ActiveWorkbook
потом вместо ThisWorkbook использовать wba.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 17.05.2011, 11:35   #5
Alena0501
Пользователь
 
Регистрация: 10.02.2011
Сообщений: 17
По умолчанию

при переносе не работает! выдает ошибку
Run-time error '1004':
Метод Copy из класса Worksheet завершен неверно
Alena0501 вне форума Ответить с цитированием
Старый 17.05.2011, 11:41   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Мой совет попробуйте.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 17.05.2011, 11:42   #7
Alena0501
Пользователь
 
Регистрация: 10.02.2011
Сообщений: 17
По умолчанию

Hugo121 огромное вам спасибо!
исправила, все работает!
отдельное спасибо за оперативность!
Alena0501 вне форума Ответить с цитированием
Старый 17.05.2011, 11:43   #8
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
Мой совет попробуйте.
Да, совершенно верно, я не смотрел код макроса, просто описал процедуры
Цитата:
Как сохранить макрос в личную книгу макросов или сделать из него надстройку?
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 17.05.2011, 11:49   #9
Alena0501
Пользователь
 
Регистрация: 10.02.2011
Сообщений: 17
По умолчанию

Всем большое спасибо!
Я данный форум читаю давно, спросила в-первые.
Еще только учусь разбираться...
Alena0501 вне форума Ответить с цитированием
Старый 17.05.2011, 12:05   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Потому я и не давал исправленыый код. Потому что учитесь
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формула или макрос?? Как это сделать? Deni55 Microsoft Office Excel 1 07.04.2011 16:15
Создать книгу надстройку.. van_ Microsoft Office Excel 5 07.11.2010 18:25
при нажатии на ссылку установка выходит диалог открыть или сохранить, как от него избавиться? Rus_ld Общие вопросы Delphi 3 03.05.2010 13:31
Сохранить копию файла без макросов viter.alex Microsoft Office Excel 3 19.02.2009 13:49
как сохранить всю книгу, только значений без формул? katlis Microsoft Office Excel 5 17.12.2008 11:59