Консультация № 63948
24.11.2006, 02:30
0.00 руб.
0 3 1
Здраствуйте!
Подскажите новичку...пожалуйста.
мне нужно взять данные из таблицы Excel завести их в расчеты в программу написанную на Basic и результаты сохранить в другую таблицу Excel. Подскажите, пожалуста как происходит импорт, экспорт, а лучше скиньте ссылочки на книжки в инете которые можно скачать...Если можно вышлите книжки на мэйл.
Заранее большое спасибо.

Обсуждение

давно
Профессионал
848
1596
24.11.2006, 10:19
общий
это ответ
Здравствуйте, Артемова Марина!
1. Подключить в референсах микрософт ексель
2.
==========================================================
Dim myExcel As Excel.Application
Dim lVar As Long
Set myExcel = New Excel.Application

‘открываем и читаем в lVar
myExcel.Workbooks.Open ("c:\Test.xls")
lVar = Val(myExcel.Range("A1").Value)
‘закрываем файл
myExcel.ActiveWorkbook.Close
‘делаем расчет
lVar = lVar * 1000 / 2
‘открываем новый файл и вносим новые данные
myExcel.Workbooks.Open ("c:\Test1.xls")
myExcel.Range("A1").Value = "Result:"
myExcel.Range("B1").Value = Str(lVar)
‘если надо печатаем на принтере
‘myExcel.Sheets.PrintOut
‘сохраняем изменения если нужно
myExcel.ActiveWorkbook.Save
‘если изменения не сохранияем, выставим флаг, чтоб
‘эксель не задавал вопросов при закрытии файла
‘myExcel.ActiveWorkbook.Saved = True
‘если надо сохраним под другим именем
‘myExcel.ActiveWorkbook.Save "C:\test2.xls"
‘и закрываем всё это дело, затем очищаем объект
myExcel.ActiveWorkbook.Close
myExcel.Quit
Set myExcel = Nothing
Неизвестный
25.11.2006, 13:48
общий
В ответе товарища PsySex все правильно, за исключением одной мелочи: вместо функции Val, конвертирующей текст в число, лучше использовать CLng (для Long-чисел), т. к. иногда (не всегда) по некоей, неизвестной пока мне закономерности, Val выдает ошибку при конвертации дробных чисел. Почему так - незнает никто. Ну и, в качестве хорошего тона, надобы было проверить Isnumeric‘ом, число ли вообще в ячейке.
Неизвестный
27.11.2006, 13:35
общий
Могу добавить, что Value от нескольких ячеек вернет двумерный массив, где первое измерение - строка, второе - столбец, также можно присваивать значения сразу нескольким ячейкам. Dim a Dim r, c As Integer a = Source.Range("A1:C8").Value For r = LBound(a, 1) To UBound(a, 1) For c = LBound(a, 2) To UBound(a, 2) a(r, c) = Val(Replace(a(r, c), ",", ".")) * 2 Next c, r Destination.Range("A1:C8").Value = aПо литературе,к сожалению, конкретно не скажу, если знаете английский - стандартная справка VBA для Excel + "записывальщик" макросов - лучшее, что знаю, а так нужно искать что-то вроде "Автоматизация Excel" з/ыФункция Val() в качестве разделителя целой и дробной части всегда использует (.)точку. Если используется другой (в русском языке обычно (,)запятая) то для дробных чисел можно использовать CDbl() с проверкой IsNumeric(), или Val(Replace(Value , "," , "." )) можно без проверки, а CLng() будет округлять до ближайшего четного.
Форма ответа