powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Access to Excel (Срочно!!!)
7 сообщений из 7, страница 1 из 1
Access to Excel (Срочно!!!)
    #33052309
Фотография xax_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите кто может!
Формирую в Access на основе шаблона xls доумент. Все работает пркрасно, но при определенной длине текста, вставляемого в ячейку Excel, возникает Error 2015. Причем это зависит именно от длины текста, а не от количества знаков.
При ручной вставке этого же текста - все OK. Формат ячейки - текстовый. Данные из Access тоже.
Фрагмент кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
..................Dim xl As Excel.Application
Dim wb As Workbook, ws As Worksheet
Set rs_1=db.OpenRecordset(....)    
Set xl = CreateObject("Excel.Application")
Set wb = xl.Workbooks.Add("D:\Шаблон.xlt")
Set ws = wb.ActiveSheet
Set db = CurrentDb
.............................

ws.Cells( 10 ,  8 ) = rs_1![Бла-бла-бла]

...........................
...
Рейтинг: 0 / 0
Access to Excel (Срочно!!!)
    #33052368
Ты пишешь сначала:

Код: plaintext
Set rs_1=db.OpenRecordset(....)

А потом:

Код: plaintext
Set db = CurrentDb

А надо вообще-то наоборот.

Попробуй так, может поможет:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    Dim rst As DAO.Recordset

    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet

    Set xlApp = New Excel.Application
    Set xlBook = xlApp.Workbooks.Add("D:\Шаблон.xlt")

    Set xlSheet = xlBook.ActiveSheet

    Set rst = CurrentDb.OpenRecordset("Query1", dbOpenDynaset)

    With xlSheet
        .Range("B1") = rst.Fields( 0 )
        ' Или .Range("B1") = rst.Fields("Bla-bla")
    End With
...
Рейтинг: 0 / 0
Access to Excel (Срочно!!!)
    #33052526
Фотография xax_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На счет Set db и Set rs_1 просто описка, спешил.
А вчем разница между
Код: plaintext
ws.Cells( 10 ,  8 ) = rs_1![Бла-бла-бла]
и
Код: plaintext
Range("B1") = rst.Fields("Bla-bla")
, разве это не одно и тоже? (В смысле результата). Но всетаки попробую.
...
Рейтинг: 0 / 0
Access to Excel (Срочно!!!)
    #33052695
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
длина этого текста какая?
средсвами ws.Cells(10, 8) = rs_1![Бла-бла-бла]
можно передать не более 255 символов
...
Рейтинг: 0 / 0
Access to Excel (Срочно!!!)
    #33052800
На пальцах трудно добиться правильного результата. Неплохо было бы примерчик с базой.

Еще интересен следующий момент.

xax_nvПричем это зависит именно от длины текста, а не от количества знаков

А разве длина текста формируется не из количества знаков?
...
Рейтинг: 0 / 0
Access to Excel (Срочно!!!)
    #33052832
И еще хочу добавить.

Раз не получается передать данные через Recordset, можно воспользоваться другим способом, например, через буфер обмена.

Об этих способах можешь прочитать тут .
...
Рейтинг: 0 / 0
Access to Excel (Срочно!!!)
    #33053654
Фотография xax_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем, кто откликнулся. Действительно, все дело в том, что средсвами ws.Cells(10, 8) = rs_1![Бла-бла-бла] можно передать не более 255 символов. А на счет "длины" текта сбило с толку то, что при
Код: plaintext
 LCase(rs_1![Бла-бла-бла])
все работало, вот и решил, что это связано с длиной текта в см или в мм и т.д. Выход такой: присвоить значение поля рекордсета како-либо переменной, а затем ячейке Excel присвоить значение этой переменной. Помагает так же
Код: plaintext
 LTrim(rs_1![Бла-бла-бла])
Главное, чтобы не напрямую рекордсет-ячейка Excel. Еще раз всем спасибо.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Access to Excel (Срочно!!!)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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