Страница: 1 |
Парни, вот код который я использую, чтобы вставить новую страницу в рабочую книгу, причем вставить в указанное место. Создаю рабочую книгу с 3 листами, заполняю... потом- objExcel.ActiveWorkbook.Sheets.Add After:=Sheets(2) Первый раз все работает, вставляет куда надо... Закрываю Excel, и запускаю всё по новой.И вот тут вываливается ошибка run-time(1004)! Чего тут не так,может кто подскажет?
А попробуй так: Dim SheetActive As Worksheet Dim SheetName As String SheetName = "имя новой страницы" Set SheetActive = objExcel.Worksheets.Add Я получил кучу писем с вопросом по этой теме,поэтому отвечаю на форуме... Вся фишка заключается в том,что при выполнении операций копиравания,вырезания,вставки и некоторых других Excel сбрасывает все ссылки на ActiveWorkbook,поэтому в коде на VB это желательно не использовать,иногда этот оператор дает трудноустранимый глюк.Хотя в VBA это работает отлично...И еще одно! При использовании необязательного параметра After,Before, и т.д. необходимо ЯВНО указывать ссылку на Workbook!!! Итак,вот пример кода который решает данную проблему... Dim objE As Excel.Application Страница: 1 |
Вопрос: Excel
Добавлено: 01.01.03 21:03
Автор вопроса: EROS
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
vig11
ICQ: 213777061
Вопросов: 21
Ответов: 159
Профиль | | #1
Добавлено: 02.01.03 10:59
SheetActive.Name = SheetName
Номер ответа: 2
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #2
Добавлено: 02.01.03 12:51
vig11!!! Ты, видимо, не понял... Проблема не в том, чтобы вставить рабочий лист с именем(что указано в твоем примере), а в том чтобы вставить в указанное место... ( например после листа 2). Первый раз вставляет, а на 2 -ОШИБКА! Если использовать без параметра After:=Sheets(2), то никаких проблем. Но мне надо чтобы лист вставлялся в указанную позицию. Пробовал передвинуть вставленный лист, используя Move After:=Sheets(2), та же самая ерунда. При первом запуске двигает, а на 2-й ошибка....
Номер ответа: 3
Автор ответа:
vig11
ICQ: 213777061
Вопросов: 21
Ответов: 159
Профиль | | #3
Добавлено: 02.01.03 13:05
Подожди я не понял, а имя новому листу Ты даёшь новое? Может быть программа пытается вставить лист с прежним именем и падает?
Номер ответа: 4
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #4
Добавлено: 02.01.03 13:11
А разве она не автоматом присваивает новое имя листу???
Номер ответа: 5
Автор ответа:
vig11
ICQ: 213777061
Вопросов: 21
Ответов: 159
Профиль | | #5
Добавлено: 02.01.03 13:37
Не пробовал, - незнаю. Но просто проверь, может быть проблемма в этом?
Номер ответа: 6
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #6
Добавлено: 02.05.03 04:00
Dim wb As Workbook
Set objE = New Excel.Application
Set wb = objE.Workbooks.Add
objE.Visible = True
wb.Sheets.Add After:=wb.Sheets(1)'вот тут вся фишка
objE.Workbooks.Close
objE.Application.Quit
Set wb = Nothing
Set objE = Nothing