Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > Почему так? Как Войти в Excel?


Автор: Antiochus 14.10.2007, 12:56
С помощью VB 2005, войти в уже открытую презентацию PowerPoint (Office 2003) (и, допустим, считать ее имя):

Dim ppapp As New PowerPoint.Application
MsgBox(ppapp.ActiveWindow.Caption)

Работает. Тогда почему то же с Excel'ем:

Dim xlapp As New Excel.Application
MsgBox(xlapp.ActiveWindow.Caption)

вызывает ошибку "Object reference not set to an instance of an object"?
Это ставит меня в тупик. Как мне войти в лист Excel, который уже открыт и находится на экране? Помогите!

Автор: thomas 14.10.2007, 17:59
Antiochus
Приветствую на форуме.

Для начала, позволю себе, порекомендовать вам изучить http://www.gotdotnet.ru/LearnDotNet/NETFramework/22054.aspx
Надеюсь прочитав эту статью, вы получите некоторое представление об инетересующем вас обьекте.

С наилучшими пожеланиями.  smile 

Зы можно считать это ответом и на другую вашу тему.


Автор: Antiochus 14.10.2007, 21:44
thomas,
Документ, вами рекомендуемый, описывает вещи, многие из которых мне знакомы.

Не могли бы вы, если знаете, конкретно разъяснить, почему мой код не работает и как сделать, чтобы он работал. Это поможет мне сдвинуться с мертвой точки, устранить какое-то недопонимание. Спасибо.

Автор: BOSS1999 12.2.2008, 12:39
Dim xlapp As New Excel.Application
так это же просто создается новый экземпляр но не получаешь открытый Excel

вот как то так я думаю
var
 Excel, WorkBooks: variant;
 OrgNameOpened: boolean;
 i: integer;
begin
 OrgNameOpened := false;
 try
   // Получаем открытый Excel
   Excel := GetActiveOleObject('Excel.Application');
   // Проверяем все открытые рабочие книги, и если в названии одной из них
   // есть 'OrgName', то искомая книга открыта
   WorkBooks := Excel.WorkBooks;
   for i := 1 to WorkBooks.Count do
    if Pos('OrgName', WorkBooks.Item[i].Name) > 0 then
     begin
      OrgNameOpened := true;
      Break;
     end;

  except

  end;
 Excel := Unassigned;
 WorkBooks := Unassigned;

 // Если книга не открыта, то открываем ее
 if not OrgNameOpened then
  begin
   CreateOleObject...
  end;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)