Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Обьясните! Добавлено: 21.11.06 22:05  

Автор вопроса:  Demаn | ICQ: 409503304 
Вот часть кода программы, помогите кто могет, надо тока обьяснить как эта прога работает, по операторам, а то препод порвёт! I need help!

Dim appwd As Word.Application

Dim c As Variant
Err.Number = 0
'обработка ошибки 429
On Error GoTo notloaded
Set appwd = GetObject(, "Word.application")
notloaded:
   If Err.Number = 429 Then
      'открытие excel
      Set appwd = CreateObject("Word.Application")
      theError = Err.Number

   End If
' сделать excel видимым
appwd.Visible = True

Set MYDOC = Word.Application.Documents.Add
Dim appex As Excel.Application
With appex

Selection.Copy 'копировать выделенное
End With
'всавить скопированное в excel
Word.Application.Selection.Paste

    
End Function

Ответить

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

Номер ответа: 1
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #1
Добавлено: 21.11.06 22:40
Вот часть кода программы, помогите кто могет, надо тока обьяснить как эта прога работает, по операторам, а то препод порвёт! I need help!
А по-моему все опнятно, даже с комментариями
Я даж не знаю, что тебе объяснять. Ты спроси конкретно, что в этом коде тебе не понятно?

Ответить

Номер ответа: 2
Автор ответа:
 Demаn



ICQ: 409503304 

Вопросов: 6
Ответов: 18
 Профиль | | #2 Добавлено: 21.11.06 22:50
просто я не очень разбираюсь в VB мне бы неплохо, если не затруднит что означают опереторы и как они действуют

Ответить

Номер ответа: 3
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #3 Добавлено: 21.11.06 23:42
'открытие excel
      Set appwd = CreateObject("Word.Application";)

Это шутка такая?

Ответить

Номер ответа: 4
Автор ответа:
 GenyaA



Вопросов: 0
Ответов: 185
 Web-сайт: www.genyaa.nm.ru
 Профиль | | #4
Добавлено: 21.11.06 23:44

'объявляем переменную для объекта - "Word.Application" из MS Office - объектом будет собственно само приложение редактора word
Dim appwd As Word.Application

'объявляется переменная типа Variant - этот тип переменных может принимать любое значение любого типа, кроме объектов (правда в представленном коде эта переменная не используется)
Dim c As Variant
'сброс значения системной переменной, которая по ходу исполнения программы может менять свое значение, если возникает какая-либо ошибка (код завешения). Каждый тип ошибки имеет свой код и описание, встроенные в стандартный интерпретатор или транслятор соответствующего языка программирования. (Вообще-то для сброса значения этой переменной есть свой оператор (точнее метод) - Err.Clear)
Err.Number = 0
'обработка ошибки 429
'назначение метки (отмеченного места) в коде, куда будет сразу передаваться управление, если ошибка возникает. В данном случае метка стоит сразу после оператора, который вероятнее всего может завершиться с ошибкой, значит программа при возникновении ошибки просто перейдет на следующую строку, после ошибки. Однако, если в этой процедуре какой-нибудь другой оператор выполнится с ошибкой, то программа так же перейдет к указанному месту. Мне кажется это не совсем корректно. (Я бы использовал On Error Resume Next)
On Error GoTo notloaded
'инициализация объекта Word.Application (вероятно предполагается, что приложение уже загружено, его просто нужно инициализировать, как объект данного процесса. Инициализируемый объект (ссылка на объект) будет содержаться в переменной appwd.
Set appwd = GetObject(, "Word.application";)
'метка места в коде
notloaded:
'проверка значения переменной кода завершения (ошибки) - если это 429 - код НЕуспешной инициализации объекта Application - то:
   If Err.Number = 429 Then
      'открытие excel <-здесь веротно ошибка в комментарии - далее предпринимается попытка уже СОЗДАТЬ объект Appliction (т.е. загрузить приложение) - но НЕ Excel, а WORD!
      Set appwd = CreateObject("Word.Application";) '<-вот кстати, тут то-то и проблема. Если этот оператор также завершится с ошибкой, то программа вновь перейдет к метке выше по коду - а значит возникает вероятность зацикливания исполнения программы (и зацикливание произойдет, если код ошибки будет 429).
'переменной theError присваивается текущее значение системной переменной кода завершения
      theError = Err.Number

   End If
' сделать excel видимым <-опять ошибка в комментарии - на самом деле word - назначается значение свойства объекта - видимый (т.е. если был скрытым, то станет видимым)
appwd.Visible = True

'создается новый объект с помощью метода Добавить - документ - являющийся дочерним для объекта Application (в нашем случае word)
Set MYDOC = Word.Application.Documents.Add
'объявляется переменая для объекта Excel.Application
Dim appex As Excel.Application
'начало блока, внутри которого операнды, начинающиеся с точки, будут относиться к объекту appex - т.е. к excel (честно говоря, судя по дальнейшему коду, нет особого смысла в этом объявлении блока. Но если бы оператор Selection начинался с точки - .Selection, то тогда другое дело.)
With appex

Selection.Copy 'копировать выделенное (вероятно имелось в виду - выделенное в excel, но без точки перед selection это может и не получиться.)
'конец блока
End With
'вставить скопированное в excel
Word.Application.Selection.Paste

'конец функции
End Function


PS:
Я не уверен, что данная часть кода процедуры работает корректно.

Ответить

Номер ответа: 5
Автор ответа:
 Demаn



ICQ: 409503304 

Вопросов: 6
Ответов: 18
 Профиль | | #5 Добавлено: 22.11.06 00:08
Спасибо GenyaA, обьяснил реа, те бы вместо аншего препода идти =) давай я те по мылу саму прогу кину посмотри пожалста что в ней лишнее именно в той части которая отвечает за перекидывание из экселя в ворд?

Ответить

Номер ответа: 6
Автор ответа:
 GenyaA



Вопросов: 0
Ответов: 185
 Web-сайт: www.genyaa.nm.ru
 Профиль | | #6
Добавлено: 22.11.06 00:31
А стимул у меня какой?

Ответить

Номер ответа: 7
Автор ответа:
 Demаn



ICQ: 409503304 

Вопросов: 6
Ответов: 18
 Профиль | | #7 Добавлено: 22.11.06 00:35
я просто попросил, мне нечего предложить тебе, нет так нет, и так много помог.....

Ответить

Номер ответа: 8
Автор ответа:
 GenyaA



Вопросов: 0
Ответов: 185
 Web-сайт: www.genyaa.nm.ru
 Профиль | | #8
Добавлено: 22.11.06 00:41
Извини. И не обижайся. Лучше попробуй сам.

Ответить

Страница: 1 |

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



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