Вот часть кода программы, помогите кто могет, надо тока обьяснить как эта прога работает, по операторам, а то препод порвёт! 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
'объявляем переменную для объекта - "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:
Я не уверен, что данная часть кода процедуры работает корректно.
Спасибо GenyaA, обьяснил реа, те бы вместо аншего препода идти давай я те по мылу саму прогу кину посмотри пожалста что в ней лишнее именно в той части которая отвечает за перекидывание из экселя в ворд?