Передача массива данных в Excel или создание двумерного динамического массива - VB
Формулировка задачи:
Нашел на просторах вот такое:
В таком виде все прекрасно работает, но мне нужен либо двумерный динамический массив, либо 2 одномерных.
В таком виде уже ничего не работает:
А в таком виде в ексель во всех 100 ячейках один и тот же, первый элемент массива
Листинг программы
- Dim oExcel As Object
- Dim oBook As Object
- Dim oSheet As Object
- 'Открыть новую книгу Excel
- Set oExcel = CreateObject("Excel.Application")
- Set oBook = oExcel.Workbooks.Add
- 'Создать массив с 3 столбцами и 100 строками
- Dim DataArray(1 To 100, 1 To 3) As Variant
- Dim r As Integer
- For r = 1 To 100
- DataArray(r, 1) = "ORD" & Format(r, "0000")
- DataArray(r, 2) = Rnd() * 1000
- DataArray(r, 3) = DataArray(r, 2) * 0.7
- Next
- 'Добавить заголовки в строку 1
- Set oSheet = oBook.Worksheets(1)
- oSheet.Range("A1:C1").Value = Array("Order ID", "Amount", "Tax")
- 'Передать массив на лист, начиная с ячейки A2
- oSheet.Range("A2").Resize(100, 3).Value = DataArray
- 'Сохранить книгу и закрыть Excel
- oBook.SaveAs "C:\Book1.xls"
- oExcel.Quit
Листинг программы
- Private Sub Command1_Click()
- Dim oExcel As Object
- Dim oBook As Object
- Dim oSheet As Object
- Dim m
- Dim n
- Set oExcel = CreateObject("Excel.Application")
- Set oBook = oExcel.Workbooks.Add
- Dim DataArray(m, 1)
- Dim r As Integer
- For r = 1 To 100
- ReDim Preserve DataArray(m, 0)
- DataArray(m, 0) = "ORD" & Format(r, "0000")
- ReDim Preserve DataArray(m, 1)
- DataArray(m, 1) = Rnd() * 1000
- m = m + 1
- Next
- Set oSheet = oBook.Worksheets(1)
- oSheet.Range("A1:C1").Value = Array("Order ID", "Amount", "Tax")
- oSheet.Range("A2").Resize(m, n).Value = DataArray
- oBook.SaveAs "C:\Book1.xls"
- oExcel.Quit
- End Sub
Листинг программы
- Private Sub Command1_Click()
- Dim oExcel As Object
- Dim oBook As Object
- Dim oSheet As Object
- Set oExcel = CreateObject("Excel.Application")
- Set oBook = oExcel.Workbooks.Add
- Dim DataArray()
- Dim r As Integer
- For r = 1 To 100
- ReDim Preserve DataArray(m)
- DataArray(m) = Rnd() * 1000
- m = m + 1
- Next
- Set oSheet = oBook.Worksheets(1)
- oSheet.Range("A1:C1").Value = Array("Order ID", "Amount", "Tax")
- oSheet.Range("A2").Resize(m).Value = DataArray
- oBook.SaveAs "C:\Book1.xls"
- oExcel.Quit
- End Sub
Решение задачи: «Передача массива данных в Excel или создание двумерного динамического массива»
textual
Листинг программы
- oSheet.Range("A2").Resize(m).Value = DataArray
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д