powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сохранение макроса в личной книге макросов
19 сообщений из 19, страница 1 из 1
Сохранение макроса в личной книге макросов
    #37120049
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сохраняю макрос в личной книге макросов, пытаюсь выполнить его с любой книги ексел, ошибка
Код: plaintext
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.
Option Explicit
Sub ВставкаЛистов()
'
' ВставкаЛистов Макрос
'
' Сочетание клавиш: Ctrl+й
    Dim FilesToOpen
    Dim x As Integer
    On Error GoTo ErrHandler
    Application.ScreenUpdating = False
    FilesToOpen = Application.GetOpenFilename _
                  (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _
                   MultiSelect:=True, Title:="Files to Merge")
    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "Не выбрано ни одного файла!"
        GoTo ExitHandler
    End If
    x =  1 
    While x <= UBound(FilesToOpen)
        Workbooks.Open Filename:=FilesToOpen(x)
        Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        x = x +  1 
    Wend
ExitHandler:
    Application.ScreenUpdating = True
    Exit Sub
ErrHandler:
    MsgBox Err.Description
    Resume ExitHandler
End Sub


Если же сохраняю этот макрос как макрос текущей книги, то работает все нормально. В чем ошибка? мне необходимо, что бы этот мактос работал в любой открытой книге
...
Рейтинг: 0 / 0
Сохранение макроса в личной книге макросов
    #37120058
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот ошибка
...
Рейтинг: 0 / 0
Сохранение макроса в личной книге макросов
    #37120114
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых ThisWorkbook - переводится как ЭТА книга(в которой у тебя макрос находится)
И во-вторых Sheets() - это коллекция и такая запись обозначает сокращенную запись Sheets.Item(). что в свою очередь
обозначает что нужно указывать какой-то идентификатор Item'а из коллекции(в данном случае - это или имя нужного листа
или порядковый номер нужного листа)

:)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сохранение макроса в личной книге макросов
    #37120137
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имя остается такое же как и в книге из которой переносится лист. Как можно исправить?
...
Рейтинг: 0 / 0
Сохранение макроса в личной книге макросов
    #37120139
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: tuandreeva

Что то чем больше я смотрю в код, тем меньше понимаю что он делает :(
Нет, по имени макроса я понимаю, что должен добавлять листы, в выбранные книги

> Sub ВставкаЛистов()
> ' ВставкаЛистов Макрос

, но по коду вижу что какие-то листы перемещаются в конец книги

> Workbooks.Open Filename:=FilesToOpen(x)
> Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)

А что хоть должен делать макрос?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сохранение макроса в личной книге макросов
    #37120157
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В открытую книгу из выбранных файлов листы вставляются
...
Рейтинг: 0 / 0
Сохранение макроса в личной книге макросов
    #37120162
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: tuandreeva
> Имя остается такое же как и в книге из которой переносится лист. Как можно исправить?


как понять, какие листы в какой файл переносить или копировать?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сохранение макроса в личной книге макросов
    #37120164
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: tuandreeva
> В открытую книгу из выбранных файлов листы вставляются


Т.е. тебе нужно собрать в одной книге листя из разных(выбранных) файлов?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сохранение макроса в личной книге макросов
    #37120165
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В этих файлах всего 1 лист, не важно как он называется
...
Рейтинг: 0 / 0
Сохранение макроса в личной книге макросов
    #37120187
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос> Автор: tuandreeva
> В открытую книгу из выбранных файлов листы вставляются


Т.е. тебе нужно собрать в одной книге листя из разных(выбранных) файлов?



ДА
...
Рейтинг: 0 / 0
Сохранение макроса в личной книге макросов
    #37120212
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: tuandreeva
> ДА


И нечего на меня кричать (с) Кролик

добавь в начало макроса две строки:
Код: plaintext
1.
Dim w As Workbook
Set w = Application.ActiveWorkbook
, замени ThisWorkBook на w и в секцию ExitHandler: добавь строку Set w =
Nothing

Это даст тебе возможность хранить макрос в личной книге макросов, но добавлять листя макрос будет в книгу, которая была
активной на момент запуска макроса

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сохранение макроса в личной книге макросов
    #37120241
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
Sub ВставкаЛистов()
'
' ВставкаЛистов Макрос
'
' Сочетание клавиш: Ctrl+й
    Dim w As Workbook
    Set w = Application.ActiveWorkbook
    Dim FilesToOpen
    Dim x As Integer
    On Error GoTo ErrHandler
    Application.ScreenUpdating = False
    FilesToOpen = Application.GetOpenFilename _
                  (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _
                   MultiSelect:=True, Title:="Files to Merge")
    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "Не выбрано ни одного файла!"
        GoTo ExitHandler
    End If
    x =  1 
    While x <= UBound(FilesToOpen)
        Workbooks.Open Filename:=FilesToOpen(x)
        Sheets().Move After:=w.Sheets(w.Sheets.Count)
        x = x +  1 
    Wend
    Set w = Nothing
ExitHandler:
    Application.ScreenUpdating = True
    Exit Sub
ErrHandler:
    MsgBox Err.Description
    Resume ExitHandler
End Sub
Все равно таже ошибка
...
Рейтинг: 0 / 0
Сохранение макроса в личной книге макросов
    #37120283
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: tuandreeva
Лист один и все равно как он называется

> Sheets( 1 ).Move After:=w.Sheets(w.Sheets.Count)


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сохранение макроса в личной книге макросов
    #37120312
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

Спасибо, работает
. Но только в уже сохраненной книге
Может кому пригодится:
Код: plaintext
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.
Option Explicit
Sub ВставкаЛистов()
'
' ВставкаЛистов Макрос
'
' Сочетание клавиш: Ctrl+й
    Dim w As Workbook
    Set w = Application.ActiveWorkbook
    Dim FilesToOpen
    Dim x As Integer
    On Error GoTo ErrHandler
    Application.ScreenUpdating = False
    FilesToOpen = Application.GetOpenFilename _
                  (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _
                   MultiSelect:=True, Title:="Files to Merge")
    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "Не выбрано ни одного файла!"
        GoTo ExitHandler
    End If
    x =  1 
    While x <= UBound(FilesToOpen)
        Workbooks.Open Filename:=FilesToOpen(x)
        Sheets( 1 ).Move After:=w.Sheets(w.Sheets.Count)
        x = x +  1 
    Wend
ExitHandler:
    Application.ScreenUpdating = True
    Set w = Nothing

    Exit Sub
ErrHandler:
    MsgBox Err.Description
    Resume ExitHandler
End Sub
...
Рейтинг: 0 / 0
Сохранение макроса в личной книге макросов
    #37120321
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: tuandreeva
> . Но только в уже сохраненной книге


В смысле?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сохранение макроса в личной книге макросов
    #37120404
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если просто запустишь ексель, но не сохранишь, то ошибка та же. Т.к. в несохраненной книге не посчитаешь количество листов
...
Рейтинг: 0 / 0
Сохранение макроса в личной книге макросов
    #37120761
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: tuandreeva
> Если просто запустишь ексель, но не сохранишь, то ошибка та же.


Все равно не понял
Можно по-шагово расписать что и как делать что-бы получилась ошибка


> Т.к. в несохраненной книге не посчитаешь количество листов

Это не соответствует действительности, в любой книге количество листов
Код: plaintext
1.
Application.Workbooks("Имя 
книги").Sheets.Count
Возможно проблема в другом, но пока непонятно в чем :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сохранение макроса в личной книге макросов
    #37121781
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может лист, который Вы пытаетесь переместить очень скрытый лист ? Это тот, которому присвоено свойство Visible - xlSheetVeryHidden . Такие листы нельзя копировать или перемещать, не отобразив, либо не присвоив значение xlSheetHidden , xlSheetVisible.
...
Рейтинг: 0 / 0
Сохранение макроса в личной книге макросов
    #37121885
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может еще и структура книги защищена....Странный вообще феномен в том, что в несохраненной книге не работает. Я как ни пытался - подобного эффекта не добился, равно как и такого, чтобы листы не считались в новой книге. Т.к. при создании новой книги она является полноценной - только все данные по ней храняться во временной папке и во временном файле. Вот и все. А все свойства, атрибуты и прочее соответствуют шаблону, на основе которого создана данная книга. Советую проверить с какими свойствами и листами создается новая книга.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сохранение макроса в личной книге макросов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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