powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / вывод в Excel
6 сообщений из 6, страница 1 из 1
вывод в Excel
    #33657307
Plux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте все, объясните пожалуйста что я делаю не так. для вывода в Excel использую такой код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
        ReDim locarr( 0  To rcd2.RecordCount,  1  To rcd2.Fields.Count)
        i =  0 
        Do Until rcd2.EOF
            For j =  1  To rcd2.Fields.Count -  1 
                locarr(i, j) = rcd2.Fields(j).Value
            Next j
            i = i +  1 
            rcd2.MoveNext
        Loop
    
  Xl.Range(Xl.Cells( 4 ,  1 ), Xl.Cells(UBound(locarr,  1 ) +  4 , UBound(locarr,  2 ))).Value = locarr
Xl.Range(Xl.Cells( 4 ,  1 ), Xl.Cells(UBound(locarr,  1 ) +  4 , UBound(locarr,  2 ))).Borders.LineStyle = xlContinuous

При этом он не выводит первый столбец. Что не так?

Или может кто подскажет другой способ вывода данных в excel?
...
Рейтинг: 0 / 0
вывод в Excel
    #33657376
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может дело в этом
Код: plaintext
For j =  1  To rcd2.Fields.Count -  1 
если предположить что в таблице один столбец
тогда "rcd2.Fields.Count - 1" будет равно 0
...
Рейтинг: 0 / 0
вывод в Excel
    #33657387
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тебе нужно просто отладить этот кусок. Ошибка в этом фрагменте:

Plux For j = 1 To rcd2.Fields.Count - 1
locarr(i, j) = rcd2.Fields(j).Value
Next j
Получается цикл от 1 до 1.

Исправь на:

Код: plaintext
1.
2.
        For j =  1  To rst.Fields.Count
            locarr(i, j) = rst.Fields(j -  1 ).Value
        Next j

Цикл от 1 до 2, соответсвующий размерности второго измерения массива, но нумерация полей в рекодсете начитаеся с 0.

И здесь:

авторReDim locarr(0 To rcd2.RecordCount, 1 To rcd2.Fields.Count)
Нужно бы так:

Код: plaintext
ReDim locarr( 0  To rcd2.RecordCount -  1 ,  1  To rcd2.Fields.Count)

Общие комментарии.

1. Почему бы вам не воспользоваться методом "CopyFromRecordset".
2. Зачем все вручную перегонять в массив, когда есть метод "GetRows" объекта Recordset, который позволяет представить набор записей в виде массива.

CopyFromRecordset.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Sub ExportToExcel()
    Dim xlApp As Excel.Application
    Dim xlWb As Excel.Workbook
    Dim rst As ADODB.Recordset
    
    Set rst = New ADODB.Recordset
    Set xlApp = New Excel.Application
    Set xlWb = xlApp.Workbooks.Add
    xlApp.Visible = True
    
    rst.Open "SELECT * " & _
      "FROM Таблица1", CurrentProject.Connection, adOpenStatic
      
    xlApp.Cells( 4 ,  1 ).CopyFromRecordset rst
End Sub
...
Рейтинг: 0 / 0
вывод в Excel
    #33657518
Plux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ashton
Общие комментарии.

1. Почему бы вам не воспользоваться методом "CopyFromRecordset".
2. Зачем все вручную перегонять в массив, когда есть метод "GetRows" объекта Recordset, который позволяет представить набор записей в виде массива.

CopyFromRecordset.



Получилось, только он говорит, что число сохранено как текст, можно этого избежать?
...
Рейтинг: 0 / 0
вывод в Excel
    #33657600
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так понимаю у вас Excel версии 2002 или 2003. Числа в каком формате, разделитель соответсвует региональным установкам, числовой формат ячеек не пробовали задавать?
...
Рейтинг: 0 / 0
вывод в Excel
    #33657629
Plux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
выводимая колонка типа string, т.к. могут встречаться значения "МОЛ 65", а могут просто "85", и вот когда просто он выдает "число сохранено как текст"

Числовой формат при передаче? если да, то как?
Если уже в книге ставить формат, то не помогает, помогает действие "Сохранить как число"
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / вывод в Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]