Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переместить лист в другую книгу 
:(
    Опции темы
Aline
Дата 16.3.2007, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



Всем привет!

Первый раз пишу макрос для Excel. Суть в том что по нажатию кнопки у меня добавляется лист, на нем формируется таблица, а в конце хотелось бы результат этой работы перенести в другую книгу, на новый лист.
В редакторе написала:
    Sheets(inZ).Select
    Sheets(inZ).Move
    Application.WindowState = xlMinimized

Всё замечательно работает, лист перемещается в новую книгу, название которой формирует автоматически Excel (напр, Книга2.xls)

Проблема в том, что хотелось бы всё-таки давать пользоватлю выбор, куда этот лист перемещать, пусть бы появлялось окно сохранения, в котором можно было бы выбрать книгу в которую добавить лист, но вот как это сделать?

Добавлено @ 11:27 
Устроил бы даже такой диалог, как пояляется после выбора команды "Переместить/скопировать лист..." из меню Правка smile
PM MAIL   Вверх
Kirill89
Дата 16.3.2007, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: 3
Всего: 4



Я могу только предположить, так-как неособо знаком с vba, возможно у move указать параметр, или moveto


--------------------
PM MAIL WWW   Вверх
Naghual
Дата 16.3.2007, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Стандартных методов для этого нет. Нужно мутит самим.



--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Akina
Дата 16.3.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



[code=vb]
Sub КопированиеЛистаВНужнуюКнигу()
    Sheets("ИмяКопируемогоЛистаЛиста").Copy After:=Workbooks("ИмяКнигиВКоторуюКопировать.xls").Sheets("ЛистПослеКоторогоВставить")
End Sub
PM MAIL WWW ICQ Jabber   Вверх
Aline
Дата 19.3.2007, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



Я попробовала сделать так:

Код

OpenFileName = Application.GetOpenFilename(FileFilter:="Рабочие книги  (*.xls),*.xls")
    
Workbooks.Open Filename:=OpenFileName
        
Sheets(inZ).Move After:=Workbooks(OpenFileName).Sheets(1)



но на строке
Код

Sheets(inZ).Move After:=Workbooks(OpenFileName).Sheets(1)


появляется ошибка : Subscript out of range
PM MAIL   Вверх
Akina
Дата 19.3.2007, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Aline @  19.3.2007,  11:03 Найти цитируемый пост)
появляется ошибка : Subscript out of range 

На что ругается - на коллекцию книг или на массив листов?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Aline
Дата 19.3.2007, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



похоже, на массив листов

Добавлено @ 10:53 
хотя и на это тоже Workbooks(OpenFileName):  в окне Watches напротив этого значения написано Subscript out of range 

PM MAIL   Вверх
Akina
Дата 19.3.2007, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



А книга, в которую копируется лист, открыта??? 



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Aline
Дата 19.3.2007, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



Книга открыта, но не активна. Когда пытаюсь сделать её активной, тоже ругается
PM MAIL   Вверх
Akina
Дата 19.3.2007, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Aline @  19.3.2007,  12:30 Найти цитируемый пост)
Когда пытаюсь сделать её активной, тоже ругается 

Вот эту проблему и лечите. Ноги растут именно оттуда.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Aline
Дата 19.3.2007, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



если бы ещё знать как лечить, потому как с макросами и Visual Basic'ом я впервые столкнулась на прошлой неделе smile
PM MAIL   Вверх
Naghual
Дата 19.3.2007, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Привожу код модуля книги, в которой формируется Лист:
Код

Option Explicit

Dim DestinationBook As Workbook


Public Sub КопированиеЛистаВНужнуюКнигу()
    Dim SourceSheet As Worksheet
    
    Set SourceSheet = ThisWorkbook.ActiveSheet
    If ВыбратьКнигуПолучатель = True Then
        SourceSheet.Copy After:=DestinationBook.Sheets("Лист1")
    End If
End Sub


Function ВыбратьКнигуПолучатель() As Boolean
    Dim OpenFileName As String
    
    On Error Resume Next
    OpenFileName = Application.GetOpenFilename(FileFilter:="Рабочие книги  (*.xls),*.xls")
    Set DestinationBook = Workbooks.Open(OpenFileName)
    If Err.Number > 0 Then
        ВыбратьКнигуПолучатель = False
    Else
        ВыбратьКнигуПолучатель = True
    End If
End Function




--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Aline
Дата 19.3.2007, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



Naghual, спасибо, сейчас попробую
PM MAIL   Вверх
Aline
Дата 19.3.2007, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



Naghual, всё замечательно работает, спасибо огромное smile
PM MAIL   Вверх
Naghual
Дата 19.3.2007, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Всегда пожалуйста.
Можно еще извернутся и нарисовать диалог выбора Листа, после которого вставлять. smile


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0558 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.