Тема: Помогите разобраться с Exel

Заказчику понадобились Спецификации в Exel.
Что не так написано? -

    Dim objExel As Object
    On Error Resume Next
    Set objExel = CreateObject("Excel.Application")
    objExel.Visible = True
    objExel.Workbooks.Add Template:= "C:\шаблон.xlt"
    row = 2
    For i = 0 To UBound(razdelTbl, 1)
       Cells(row, 1).value = razdelTbl(i, 1)
       row = row + 1: k=0
       .........
       While tempTbl(k, 0) <> ""
            With Cells(row, 2)
                .value = tempTbl(k, 2)
                .Font.Name = "ISOCPEUR"
                .Font.Size = 12
            End With
            Cells(row, 3).value = tempTbl(k, 3)
            row = row + 1
            k = k + 1
        Wend
    Next
ErrorHandler:
If Err.Number <> 0 Then
' Display error message
    MsgBox Err.Description  & Err.Number
End If
' Release all objects and resume normal error handling
    Set objExel = Nothing
End Sub

Вылетает ошибка - Method Cells of object _Global failed - 1004.
Все библиотеки подключены!
Причем иногда отрабатывает нормально, а потом опять начинает вылетать эта ошибка!

Re: Помогите разобраться с Exel

> Adel
Вообще в учебнике советуют активизировать
лист в который идет запись:

    objExel.Workbooks.Add Template:= "C:\шаблон.xlt"
          dim wbk as WorkBook
          set wbk = objExcel.ActiveWorkBook
          dim sht as WorkSheet
          set sht = wbk.WorkSheets(1)
          sht.Activate
          With sht
    row = 2
    For i = 0 To UBound(razdelTbl, 1)
       .Cells(row, 1).value = razdelTbl(i, 1)
       row = row + 1: k=0
       .........
       While tempTbl(k, 0) <> ""
            With .Cells(row, 2)
                .value = tempTbl(k, 2)
                .Font.Name = "ISOCPEUR"
                .Font.Size = 12
            End With
            .Cells(row, 3).value = tempTbl(k, 3)
            row = row + 1
            k = k + 1
        Wend
    Next
end with

(без проверки)
~'J'~

Re: Помогите разобраться с Exel

Дописала код. Один раз программа отработала нормально, а потом опять стала вылетать эта ошибка.

Re: Помогите разобраться с Exel

Может тогда нужно лист явно задать?.. Может быть даже с документом.
Кто его знает, что там происходит в фоновом режиме.
В описании ошибки даже сообщается, что метод cells неверен (а такого метода и на самом деле нет.)
То есть программа воспринимает этот оператор неоднозначно почему-то..

Re: Помогите разобраться с Exel

Имею в виду попробовать отказаться от

with
end with

и применять свойство Cells в виде

sht.Cells

(относительно примера Fatty)

Re: Помогите разобраться с Exel

Set xlApp = GetObject(, "Excel.Application")
If Err Then
  Err.Clear
  Set xlApp = CreateObject("Excel.Application")
End If
xlApp.Workbooks.Open ("xxxxxx.xlt")
..............
xlApp.Worksheets(n).Cells(j, i)) = x
..............
Set xlApp = Nothing

Re: Помогите разобраться с Exel

Переписала весь код снова пока работает!(По примеру Fatty)
В чем была причина - загадка...

Re: Помогите разобраться с Exel

Adel пишет:

Заказчику понадобились Спецификации в Exel.

Cпецификации в Excel

Re: Помогите разобраться с Exel

> brigval
Спасибо за ссылку.
У меня программа формировала спецификацию в Word и в AutoCAD, а теперь еще в Excel дописываю.

Re: Помогите разобраться с Exel

Еще возник вопрос - как можно сделать, чтобы в одной ячейке длинная строка поместилась бы в ней. На Chr(10) опять вылетает 1004 ошибка.

Re: Помогите разобраться с Exel

У меня код выполняется без каких-либо ошибок, в ячейке появляется текст в две строки
AutoCad 2007(ADT2007), Excel 2003

Sub pp()
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
If Err Then
  Err.Clear
  Set xlApp = CreateObject("Excel.Application")
End If
xlApp.Workbooks.Open ("D:\a.xls")
xlApp.Visible = True
xlApp.Worksheets(1).Cells(1, 1) = "asd" & Chr(10) & "qwe"
Set xlApp = Nothing
End Sub

Re: Помогите разобраться с Exel

> Adel
Установи опцию переноса строк в ячейке:

.Cells(1,1).WrapText = True

~'J'~

Re: Помогите разобраться с Exel

> Fatty
- Получилось!
Спасибо, добрые люди, не оставили без внимания. :)