Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Excel Добавлено: 01.01.03 21:03  

Автор вопроса:  EROS

Парни, вот код который я использую, чтобы вставить новую страницу в рабочую книгу, причем вставить в указанное место.

Создаю рабочую книгу с 3 листами, заполняю... потом-

  objExcel.ActiveWorkbook.Sheets.Add After:=Sheets(2)

Первый раз все работает, вставляет куда надо... Закрываю Excel, и запускаю всё по новой.И вот тут вываливается ошибка run-time(1004)! Чего тут не так,может кто подскажет?

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 vig11



ICQ: 213777061 

Вопросов: 21
Ответов: 159
 Профиль | | #1 Добавлено: 02.01.03 10:59

А попробуй так:

Dim SheetActive As Worksheet

Dim SheetName As String

SheetName = "имя новой страницы"

Set SheetActive = objExcel.Worksheets.Add
      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

Я получил кучу писем с вопросом по этой теме,поэтому отвечаю на форуме... Вся фишка заключается в том,что при выполнении операций копиравания,вырезания,вставки и некоторых других Excel сбрасывает все ссылки на ActiveWorkbook,поэтому в коде на VB это желательно не использовать,иногда этот оператор дает трудноустранимый глюк.Хотя в VBA это работает отлично...И еще одно! При использовании необязательного параметра After,Before, и т.д.  необходимо ЯВНО указывать ссылку на Workbook!!!

Итак,вот пример кода который решает данную проблему...

    Dim objE As Excel.Application
    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

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам