создание файла Excel

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Black_T
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 17.01.2006 (Вт) 18:25

создание файла Excel

Сообщение Black_T » 13.02.2006 (Пн) 17:41

Нужно вывести результаты из программы в Excel.
С самим созданием и записью данных проблем нет,
смущает один факт.
Для того что-бы заполнить в Excele к примеру матрицу размером 150х150,
требуется примерно минута,
в текстовый файл результаты сбрасываются за секунду.
Возникает вопрос: можно ли как-нибудь убыстрить процесс в вывода в файл Excel...?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 13.02.2006 (Пн) 17:48

1. писать самому в формате excel-я (примеры есть в инете)
2. использовать возможности ado и соответствующего ISAM-драйвера (примеры есть здесь или в инете)
3. оптимизировать свой код , использующий объект excel , через загрузку целого рекордсета (примеры на этом форуме)
...
удачи

Black_T
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 17.01.2006 (Вт) 18:25

Сообщение Black_T » 14.02.2006 (Вт) 8:48

Konst_One

Если не затруднит, не подскажете где именно можно почитать про пункты 2 и 3. Заранее спасибо!

Black_T
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 17.01.2006 (Вт) 18:25

Сообщение Black_T » 14.02.2006 (Вт) 9:24

Может быть я не совсем правильно выразился,
но вот что нужно.

Есть програма на VB.
В ней получены значения - динамический массив коэффициентов k(i,j) - размер от 150х150 и выше.
Мне нужно эти значения вывести на лист Excel
Вот что я делаю

Код: Выделить всё
Sub excel_export()

Set ExcelApp = New Excel.Application
ExcelApp.Visible = True
Set DocExcel = ExcelApp.Workbooks.Add
DocExcel.Activate
For i = 1 To N
For j = 1 To N
DocExcel.Application.Cells(i,j) = k(i, j)
Next j
Next i

End Sub


Как я могу оптимизировать этот код ?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.02.2006 (Вт) 9:35

Код: Выделить всё
Option Explicit

Private Sub Form_Load()
  Dim k(1 To 100, 1 To 100) As String
  Dim i As Long, j As Long
 
  For i = 1 To 100
    For j = 1 To 100
      k(i, j) = String$(Rnd * 100 + 1, Rnd * 50 + 50)
    Next
  Next
 
  With CreateObject("excel.application")
    With .workbooks.Add.worksheets(1)
      .range(.cells(1, 1), .cells(100, 100)).Value = k
    End With
    .Visible = True
  End With
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Black_T
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 17.01.2006 (Вт) 18:25

Сообщение Black_T » 14.02.2006 (Вт) 14:18

Спасибо!
Теперь гораздо быстрее.
Маленький вопрос : почему не отображается список всех доступных свойств и методов объекта "excel.application" ?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.02.2006 (Вт) 14:34

Потому что позднее связывание. Мне так удобнее по ряду важных причин.
Замени на new excel.application, появятся.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Black_T
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 17.01.2006 (Вт) 18:25

Сообщение Black_T » 14.02.2006 (Вт) 17:07

Спасибо!
И еще нескромный вопросик...
Можно сделать так, что бы столбцы листа нумеровались не буквами,
а цифрами ?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.02.2006 (Вт) 17:12

Когда мы вступаем в фазу самостоятельного изучения F2? Никогда? Прискорбно, прискорбно.

application.referencestyle=xlr1c1
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 76

    TopList