Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сохранение макроса в личной книге макросов / 19 сообщений из 19, страница 1 из 1
16.02.2011, 15:10
    #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
16.02.2011, 15:11
    #37120058
tuandreeva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение макроса в личной книге макросов
Вот ошибка
...
Рейтинг: 0 / 0
16.02.2011, 15:26
    #37120114
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение макроса в личной книге макросов
Во-первых ThisWorkbook - переводится как ЭТА книга(в которой у тебя макрос находится)
И во-вторых Sheets() - это коллекция и такая запись обозначает сокращенную запись Sheets.Item(). что в свою очередь
обозначает что нужно указывать какой-то идентификатор Item'а из коллекции(в данном случае - это или имя нужного листа
или порядковый номер нужного листа)

:)

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


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

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


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

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


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



ДА
...
Рейтинг: 0 / 0
16.02.2011, 15:46
    #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
16.02.2011, 15:54
    #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
16.02.2011, 16:06
    #37120283
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение макроса в личной книге макросов
> Автор: tuandreeva
Лист один и все равно как он называется

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


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
16.02.2011, 16:16
    #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
16.02.2011, 16:18
    #37120321
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение макроса в личной книге макросов
> Автор: tuandreeva
> . Но только в уже сохраненной книге


В смысле?

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


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


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

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

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


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