Глюки с сортировкой.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
sYstEmiZer
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 18.03.2004 (Чт) 13:06
Откуда: Москва

Глюки с сортировкой.

Сообщение sYstEmiZer » 18.03.2004 (Чт) 14:43

Заметил странную вещь - есть код:

Public Sub test()
Dim Exx As Excel.Application
Dim Exx1 As Excel.Workbook
Dim Exx2 As Excel.Worksheet
Set Exx = New Excel.Application
Set Exx1 = Exx.Workbooks.Open("c:\Terminal\srez12.xls")
Set Exx2 = Exx1.Sheets(1)
Exx2.Range("A:D").Sort Key1:=Range("B2") 'ключевая строка
Exx1.Close True
Exx.Quit
Set Exx1 = Nothing
Set Exx = Nothing
End Sub

VB по какой-то причине не может закрыть Excel (точнее выгрузить его из памяти), если мы что-либо отсортировали :shock:. Убираем ключевую строку - все работает. Глюк или фича. Если не сложно - попробуйте кто-нибудь у себя.

sYstEmiZer
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 18.03.2004 (Чт) 13:06
Откуда: Москва

Сообщение sYstEmiZer » 18.03.2004 (Чт) 17:30

Еще маленькое замечание. Я не совсем точно сказал. В случае наличия сортировки, ёксель выгружается только после выгрузки самой программы, что недопустимо, т.к. прога все время должна быть запущена. В случае, если еще раз запустить эту процедуру (не выгружая старого экселя) выпадает на сортировке с ошибкой 1004 "Метод Range failed", а если выгрузить эксель , то с ошибкой 462 "The remote server machine doesn't exist". Вот такая вот история.

Кто чего может посоветовать?
С переподвыподвертом!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 18.03.2004 (Чт) 17:51

Попробуй Exx2.Range("A:D").Sort Key1:=Exx2.Range("B2")
Lasciate ogni speranza, voi ch'entrate.

sYstEmiZer
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 18.03.2004 (Чт) 13:06
Откуда: Москва

Сообщение sYstEmiZer » 18.03.2004 (Чт) 18:02

Помогло!!!! Большой фенкс. Меня смутило, то что при первом запуске он сортировал и не ругался. Почему такое могло быть?

Всем спасибо за участие, особенно alibek!
С переподвыподвертом!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.03.2004 (Пт) 3:07

А больше никто и не участвовал :lol:
А на будущее просто запомни - range, когда вызывается из экселя, относится к global и может использоваться сам по себе, а когда извне - нет.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 19.03.2004 (Пт) 11:52

Код: Выделить всё
Private Sub Form_Load()
  Dim Exx As Excel.Application
  Dim Exx1 As Excel.Workbook
  Dim Exx2 As Excel.Worksheet
  Set Exx = New Excel.Application
  Set Exx1 = Exx.Workbooks.Add
  Exx.Visible = True
 
  Range("B2:C4").Select 'ключевая строка

  Unload Me
End Sub

И полюбуйся, что на активном листе выделены "B2:C4". Так что Range отрабатывает как надо.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.03.2004 (Пт) 13:08

А если у меня два excel.application, мне компилятор-провидец нужен? Чтобы угадал, к какому я обращаюсь?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 19.03.2004 (Пт) 16:41

8)
Согласен.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 55

    TopList