Тема: Сохранение данных в файл *.xls (по ячейкам). Как реализовать?

Очень прошу помочь с записью данных в файл *.xls ! В моем коде программы реализована запись в текстовый файл. Но возникла необходимость добавлять дополнительные характеристики для каждой строки данных boxtext,- хочу рассортировать эти характеристики по соседним ячейкам. Помогите пожалуйста, заранее благодарен!
Dim  boxtext,boxtext1,dollar As String
Open "C:\base.txt" For Output As #1
boxtext = boxtext1 + dollar + Chr(13) + Chr(10)
Print #1, boxtext
  Close #1
А как реализовать запись в файл *.xls ?

Re: Сохранение данных в файл *.xls (по ячейкам). Как реализовать?

> Виктор
Для старта, надеюсь разберешься
(см. также сайт www.excelguru.ca)

Option Explicit
'' Ссылка на библиотеку:
'' Tools->References -> Microsof Excel 11.0 Object Library
'' Обработка ошибок:
'' Tools->Options->General->Break on Unhandled Errors
Sub GetExcel()
'Author       : Ken Puls (www.excelguru.ca)
'Bind to an existing or created instance of Microsoft Excel
Dim objApp As Object
'Attempt to bind to an open instance
On Error Resume Next
Set objApp = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
    'Could not get instance, so create a new one
    Err.Clear
    On Error GoTo ErrHandler
    Set objApp = CreateObject("Excel.Application")
    With objApp
        .Visible = True
        .Workbooks.Add
    End With
Else
    'Bound to instance, activate error handling
    On Error GoTo ErrHandler
End If
'Add some text to the document
With objApp.ActiveWorkbook
'    .Worksheets.Add
    .Worksheets(1).Activate
    .Worksheets(1).Cells(1, 1) = "boxtext1"
    .Worksheets(1).Cells(1, 2) = "dollar"
    .Worksheets(1).Cells(1, 3) = "boxtext1" & "dollar"
End With
ErrHandler:
'Release the object and resume normal error handling
Set objApp = Nothing
On Error GoTo 0
End Sub

~'J'~

Re: Сохранение данных в файл *.xls (по ячейкам). Как реализовать?

Спасибо. Мой макрос выполняет подсчет спецификации (считает число повторений  на пространстве модели тех строк, которые заложены в base.xls): выбирает из пространства модели все текстовые строки и сравнивает их с текстовыми строками из ячеек файла base.xls. Затем выводит каждую строку и число ее повторений. Вопрос в том, как реализовать выборку из ячеек Excel для сравнения с данными на пространстве модели autocad?

Re: Сохранение данных в файл *.xls (по ячейкам). Как реализовать?

Разобрался как добавлять текст в ячейки, но не могу сохранить файл:
Option Explicit
Public objApp As Object
Private Sub GetExcel_Click()
Dim boxtext As String
Set objApp = GetObject("C:\\Autodesk\base.xls")
objApp.Worksheets(1).Cells(1, 1) = "boxtext1"
...
какой командой можно сохранить файл?

Re: Сохранение данных в файл *.xls (по ячейкам). Как реализовать?

> Виктор
Можно так:

Option Explicit
'' Ссылка на библиотеку:
'' Tools->References -> Microsof Excel 1X.0 Object Library
'' Обработка ошибок:
'' Tools->Options->General->Break on Unhandled Errors
Sub GetExcel()
'' Author       : Ken Puls (www.excelguru.ca)
'' Bind to an existing or created instance of Microsoft Excel
Dim objApp As Object
Dim objWbk As Object
Dim flName As String
'Attempt to bind to an open instance
On Error Resume Next
Set objApp = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
    'Could not get instance, so create a new one
    Err.Clear
    On Error GoTo ErrHandler
    Set objApp = CreateObject("Excel.Application")
    With objApp
        .Visible = True
        .Workbooks.Add
    End With
Else
    'Bound to instance, activate error handling
    On Error GoTo ErrHandler
End If
' Get active document (last opened should active)
Set objWbk = objApp.ActiveWorkbook
' Add some text to the document
With objWbk
    .Worksheets(1).Activate
    .Worksheets(1).Cells(1, 1) = "boxtext1"
    .Worksheets(1).Cells(1, 2) = "dollar"
    .Worksheets(1).Cells(1, 3) = "boxtext1" & "dollar"
End With
' Build the full path to save file
flName = ThisDrawing.Path & "\Test001.xls"
' Save and close document
    objWbk.SaveAs flName
    objWbk.Close
' Quit application instance
    objApp.Quit
ErrHandler:
If Err.Number <> 0 Then
' Display error message
    MsgBox Err.Description & " <--> " & Err.Number
End If
' Release all objects and resume normal error handling
    Set objWbk = Nothing
    Set objApp = Nothing
    On Error GoTo 0
End Sub

Кстати, все коды есть в справочной системе Excel,
открой любой файл Эксель, иди в редактор VBA (Alt+F11)
там в Хэлпе все есть
~'J'~

Re: Сохранение данных в файл *.xls (по ячейкам). Как реализовать?

Благодарствую! Просто я не знаю, как реализуется программирование в VBA для Autocad и  VBA в Excel  - как согласуются в программе переключения между этими приложениями:  сложно, начиная писать макрос для текущей модели пространства Автокад, прописывать в нем команды для Экселя . Если есть возможно, посоветуй где можно сопутствующую лит-ру на русском поискать - ведь помимо этого в Каде и в Экселе своих специфических команд немерено.

Re: Сохранение данных в файл *.xls (по ячейкам). Как реализовать?

> Виктор
Я бы мог посоветовать только эту книгу от 'мистера Excel':
"Профессиональное программирование на VBA в Excel 2003",
Джон Уокенбах,
изд-во "Диалектика" 2006
Конкретно для связки АвтоКАД + Excel книг нет
специализированные форумы по Офису
www.sql.ru
www.vbnet.ru и тд
~'J'~

Re: Сохранение данных в файл *.xls (по ячейкам). Как реализовать?

Есть еще маленький вопросик об указании папки сохранения файла.
строки:
------------------------------------------------------
flName = ThisDrawing.Path & "\Test001.xls"
...................................................
  objWbk.SaveAs flName
-----------------------------------------------------
Программа может сохранить только в каталог где лежит файл рисунка? При указании указании полного пути:
  flName = "C:\\base.xls"
выдается ошибка: что-то вроде "в адресе недопустимые символы ":"  "

Re: Сохранение данных в файл *.xls (по ячейкам). Как реализовать?

> Виктор
Двойной backslash замени на простой
и пиши любой путь
~'J'~

Re: Сохранение данных в файл *.xls (по ячейкам). Как реализовать?

:)
Да спасибо, получилось. Все записывается и считывается с ячеек Эксель. Весьма и очень благодарен!

Re: Сохранение данных в файл *.xls (по ячейкам). Как реализовать?

> Виктор
Успехов, рад помочь :)
~'J'~

Re: Сохранение данных в файл *.xls (по ячейкам). Как реализовать?

Пошел дальше - и как всегда масса вопросов. При запуске макроса в Автокаде, не могу найти команду считывания номера строки(столбца) ячейки документа Ексель в переменную. Можете подсказать?

Re: Сохранение данных в файл *.xls (по ячейкам). Как реализовать?

> Виктор
Ну нет времени совсем, так никто и не помог?

Thisdrawing.Setvariable "Users1", cstr(cel.Row)

потом можешь извлечь так

dim strrow as string
strRow=thisdrawing.getvariable("Users1")

где cel - ячейка
~'J'~

Re: Сохранение данных в файл *.xls (по ячейкам). Как реализовать?

Клево! спасиба :)