Передача массива данных в Excel или создание двумерного динамического массива - VB

Узнай цену своей работы

Формулировка задачи:

Нашел на просторах вот такое:
Листинг программы
  1. Dim oExcel As Object
  2. Dim oBook As Object
  3. Dim oSheet As Object
  4. 'Открыть новую книгу Excel
  5. Set oExcel = CreateObject("Excel.Application")
  6. Set oBook = oExcel.Workbooks.Add
  7. 'Создать массив с 3 столбцами и 100 строками
  8. Dim DataArray(1 To 100, 1 To 3) As Variant
  9. Dim r As Integer
  10. For r = 1 To 100
  11. DataArray(r, 1) = "ORD" & Format(r, "0000")
  12. DataArray(r, 2) = Rnd() * 1000
  13. DataArray(r, 3) = DataArray(r, 2) * 0.7
  14. Next
  15. 'Добавить заголовки в строку 1
  16. Set oSheet = oBook.Worksheets(1)
  17. oSheet.Range("A1:C1").Value = Array("Order ID", "Amount", "Tax")
  18. 'Передать массив на лист, начиная с ячейки A2
  19. oSheet.Range("A2").Resize(100, 3).Value = DataArray
  20. 'Сохранить книгу и закрыть Excel
  21. oBook.SaveAs "C:\Book1.xls"
  22. oExcel.Quit
В таком виде все прекрасно работает, но мне нужен либо двумерный динамический массив, либо 2 одномерных. В таком виде уже ничего не работает:
Листинг программы
  1. Private Sub Command1_Click()
  2. Dim oExcel As Object
  3. Dim oBook As Object
  4. Dim oSheet As Object
  5. Dim m
  6. Dim n
  7. Set oExcel = CreateObject("Excel.Application")
  8. Set oBook = oExcel.Workbooks.Add
  9.  
  10. Dim DataArray(m, 1)
  11. Dim r As Integer
  12. For r = 1 To 100
  13. ReDim Preserve DataArray(m, 0)
  14. DataArray(m, 0) = "ORD" & Format(r, "0000")
  15. ReDim Preserve DataArray(m, 1)
  16. DataArray(m, 1) = Rnd() * 1000
  17. m = m + 1
  18. Next
  19.  
  20. Set oSheet = oBook.Worksheets(1)
  21. oSheet.Range("A1:C1").Value = Array("Order ID", "Amount", "Tax")
  22. oSheet.Range("A2").Resize(m, n).Value = DataArray
  23. oBook.SaveAs "C:\Book1.xls"
  24. oExcel.Quit
  25. End Sub
А в таком виде в ексель во всех 100 ячейках один и тот же, первый элемент массива
Листинг программы
  1. Private Sub Command1_Click()
  2. Dim oExcel As Object
  3. Dim oBook As Object
  4. Dim oSheet As Object
  5. Set oExcel = CreateObject("Excel.Application")
  6. Set oBook = oExcel.Workbooks.Add
  7.  
  8. Dim DataArray()
  9. Dim r As Integer
  10. For r = 1 To 100
  11. ReDim Preserve DataArray(m)
  12. DataArray(m) = Rnd() * 1000
  13. m = m + 1
  14. Next
  15.  
  16. Set oSheet = oBook.Worksheets(1)
  17. oSheet.Range("A1:C1").Value = Array("Order ID", "Amount", "Tax")
  18.  
  19. oSheet.Range("A2").Resize(m).Value = DataArray
  20.  
  21. oBook.SaveAs "C:\Book1.xls"
  22. oExcel.Quit
  23. End Sub

Решение задачи: «Передача массива данных в Excel или создание двумерного динамического массива»

textual
Листинг программы
  1. oSheet.Range("A2").Resize(m).Value = DataArray

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.556 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут