VFP.Перехват ошибок COM - PullRequest
       33

VFP.Перехват ошибок COM

0 голосов
/ 13 октября 2018

Перехват ошибок Excel COM из программы VFP.

Программа записывает выдержку из нескольких больших таблиц в Excel с помощью автоматизации.Типичные инструкции включают в себя:

lCell = "I1234”
.sSheet1.Range(lCell).value = cCust.Name

Обычно это работает нормально, но если cCust.name имеет значение, например '=' (что не нравится Excel), это вызывает ошибку OLE COM.Пытался использовать TRY ...ЛОВИТЬ .,,ENDTRY, чтобы перехватить эту ошибку, но ошибка OLE COM по-прежнему сообщает.

Я полагаю, что я мог бы найти все возможные ошибки в данных и очистить их, но есть ли способ заставить Automation игнорироватьОшибка и продолжить (оставляя поле незаполненным)?Спасибо.

1 Ответ

0 голосов
/ 16 октября 2018

Я добавляю это как ответ, так как он содержит некоторый код, который в противном случае вызвал бы беспорядок.С ошибкой ON он работает отлично для меня.т.е.:

*** Constant Group: XlSaveAction
#Define xlDoNotSaveChanges                                2
#Define xlSaveChanges                                     1

Local loExcel As Excel.Application
Local lcValue
loExcel = Createobject('Excel.Application')
loExcel.Workbooks.Add()
loExcel.ActiveWorkbook.SaveAs('c:\temp\ExcelReadTest.xlsx')
loExcel.DisplayAlerts = .F.
*loExcel.Visible = .T.
On Error lcValue = .Null.
With loExcel.ActiveWorkbook.ActiveSheet
    .Range('A5').Value = '=Like me'
    lcValue = .Range('A5').Value
    ? m.lcValue
Endwith
On Error
loExcel.ActiveWorkbook.Close(xlSaveChanges)
loExcel.Quit()
...