Страница: 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
 EROS
      
       
  
 
    
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 6
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа: vig11
 vig11


ICQ: 213777061 
Вопросов: 21
Ответов: 159
      
 Профиль |  | #1
       
Добавлено:  02.01.03 10:59
       
    
       
  
 
    
      SheetActive.Name = SheetName
		
	  
			 
	
		 
    
       
    
Номер ответа: 2 
      
Автор ответа: EROS
 EROS




Вопросов: 58
Ответов: 4255
 Профиль |  | #2
       
Добавлено:  02.01.03 12:51
       
    
       
  
vig11!!! Ты, видимо, не понял... Проблема не в том, чтобы вставить рабочий лист с именем(что указано в твоем примере), а в том чтобы вставить в указанное место... ( например после листа 2). Первый раз вставляет, а на 2 -ОШИБКА! Если использовать без параметра After:=Sheets(2),  то никаких проблем. Но мне надо чтобы лист вставлялся в указанную позицию. Пробовал передвинуть вставленный лист, используя Move After:=Sheets(2), та же самая ерунда. При первом запуске двигает, а на 2-й ошибка.... 
     
		
	  
			 
	
		 
    
       
    
Номер ответа: 3 
      
Автор ответа: vig11
 vig11


ICQ: 213777061 
Вопросов: 21
Ответов: 159
      
 Профиль |  | #3
       
Добавлено:  02.01.03 13:05
       
    
       
  
Подожди я не понял, а имя новому листу Ты даёшь новое? Может быть программа пытается вставить лист с прежним именем и падает? 
     
		
	  
			 
	
		 
    
       
    
Номер ответа: 4 
      
Автор ответа: EROS
 EROS




Вопросов: 58
Ответов: 4255
 Профиль |  | #4
       
Добавлено:  02.01.03 13:11
       
    
       
  
А разве она не автоматом присваивает новое имя листу???
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 5 
      
Автор ответа: vig11
 vig11


ICQ: 213777061 
Вопросов: 21
Ответов: 159
      
 Профиль |  | #5
       
Добавлено:  02.01.03 13:37
       
    
       
  
Не пробовал, - незнаю. Но просто проверь, может быть проблемма в этом?
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 6 
      
Автор ответа: EROS
 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