Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / медленно, происходит замена символа в колонке Excel-файла программой из VB6 / 10 сообщений из 10, страница 1 из 1
11.05.2007, 13:10
    #34518904
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
медленно, происходит замена символа в колонке Excel-файла программой из VB6
Извините короче не получается!

Excel-евский файл создаю так:
Код: plaintext
1.
xl.Application.ScreenUpdating = False
xl.Cells( 2 ,  1 ).CopyFromRecordset rst  ' информация со следующей строки, первая строка шапка
если не менять значения в колонке, Книга1.xls появляется на экране за 10 секунд ( супер )
но мне надо заменить запятую на точку по всей колонке Excel-файла из VB6
потому что в этом 9-том столбце пользователь будет получать разные суммы, а с запятой они не считаются.

Решаю установить во всей колонке формат:
Код: plaintext
1.
xl.Columns("I:I").Select
xl.Selection.NumberFormat = "0.00"
всё равно не помогло. Excel-файл не считает суммы.

Тогда делаю цикл, а он работает медленно
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim RowMax:	RowMax = xl.ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Dim i As Long
Dim summa As String
For i =  2  To RowMax
     summa = xl.Cells(i,  9 )	'  9 колонка
     summa = Replace(summa, Chr( 44 ), ".", , , vbTextCompare)	'  Chr(44) -это запятая
     xl.Cells(i,  9 ) = Val(summa)
Next
xl.Visible = True
xl.Application.ScreenUpdating = True
работает минут ~ 5 ( а у пользователя комп вообще тормоз )
Как сделать, чтоб работало быстрее?
...
Рейтинг: 0 / 0
11.05.2007, 13:30
    #34519019
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
медленно, происходит замена символа в колонке Excel-файла программой из VB6
В рекордсете девятый столбец числовой?
Если числовой, то excel должен сам распознать при вставки и вставить уже как число
Форматом точно ничего не добьешся.
Замену можно делать сразу во всём столбце, а не в каждой ячейке.
т.е. вместо
Код: plaintext
1.
2.
3.
4.
For i =  2  To RowMax
     summa = xl.Cells(i,  9 )	'  9 колонка
     summa = Replace(summa, Chr( 44 ), ".", , , vbTextCompare)	'  Chr(44) -это запятая
     xl.Cells(i,  9 ) = Val(summa)
Next
попробуй

Код: plaintext
xl.Range("I2:I" & RowMax).Replace(",",".")
...
Рейтинг: 0 / 0
11.05.2007, 14:28
    #34519334
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
медленно, происходит замена символа в колонке Excel-файла программой из VB6
Код: plaintext
xl.Range("I2:I" & RowMax).Replace ",","."
заменила лишь некоторые записи верно
например 1,5 стало 18264.00
...
Рейтинг: 0 / 0
11.05.2007, 15:17
    #34519555
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
медленно, происходит замена символа в колонке Excel-файла программой из VB6
Так откудо данные тянутся?
Какой тип в девятом столбце?
Попробуй вставку пошаговую
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
            j =  2 
            Do While Not rst.EOF
                For i =  1  To rst.Fields.Count
                    If i =  9  Then
                        xl.Cells(j, i) = Val(replace(rst.Fields(i -  1 ),",","."))
                    Else
                        xl.Cells(j, i) = rst.Fields(i -  1 )
                    End If
                Next
                j = j +  1 
                rst.MoveNext
            Loop
...
Рейтинг: 0 / 0
11.05.2007, 16:10
    #34519824
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
медленно, происходит замена символа в колонке Excel-файла программой из VB6
попробую, благодарю
...
Рейтинг: 0 / 0
11.05.2007, 16:31
    #34519939
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
медленно, происходит замена символа в колонке Excel-файла программой из VB6
На входе то же excel-евский файл из центрального узла связи, откуда-то из Москвы.
Этот файл отрывается на моём компе за 20 минут, а на компьютере пользователя ещё дольше.
Вот мне дали задание, написать прогу, которая прочтёт это excel-евский файл, и создаст
нормальный xls ( такой файл надо формировать 1 раз в месяц )

вот так я его открываю
Код: plaintext
1.
2.
3.
4.
    Dim db As ADODB.Connection:     Set db = New ADODB.Connection
    Dim t1 As ADODB.Recordset:      Set t1 = New ADODB.Recordset
    db.ConnectionString = "DRIVER={Microsoft Excel Driver (*.xls)};" & "DBQ=" & pth & "\" & xls & ";" & "DefaultDir=" & pth
    db.Open
    t1.Open "SELECT F1, F2, F5, F8, F13, F14, F15, F16, F17 FROM [" & lst & "$]" & " WHERE (((Sheet1$.F1) Is Not Null) AND ((Sheet1$.F15)>0))", db
вот так создаю новый Книга1.xls
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    Dim xl As Object
    Set xl = CreateObject("Excel.Application")
    xl.Visible = False
    xl.Workbooks.Add
    xl.Sheets("Лист1").Name = "Sheet1"
    xl.Application.ScreenUpdating = False

    xl.Cells( 2 ,  1 ).CopyFromRecordset t1 ' со следующей строки

всё формируется, буквально секунд за 10
...
Рейтинг: 0 / 0
11.05.2007, 16:56
    #34520048
Guest11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
медленно, происходит замена символа в колонке Excel-файла программой из VB6
Попробуй в самом запросе преобразование сделать:
SELECT F1, F2, F5, F8, F13, F14, F15, F16, CDbl(F17) FROM
...
Рейтинг: 0 / 0
11.05.2007, 17:39
    #34520195
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
медленно, происходит замена символа в колонке Excel-файла программой из VB6
попробуй на своем компе поменять локаль с Eng на RUS
или на время работы макроса меняй разделитель с точки на запятую
это можно делать как вручную делать так и програмно
...
Рейтинг: 0 / 0
11.05.2007, 20:41
    #34520510
NF
NF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
медленно, происходит замена символа в колонке Excel-файла программой из VB6
Нам бы кусочек твоего файлика...
...
Рейтинг: 0 / 0
14.05.2007, 08:35
    #34522252
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
медленно, происходит замена символа в колонке Excel-файла программой из VB6
Всех благодарю.
Всё заработало и работает буквально 8 секунд
я сделал CDbl(F17)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / медленно, происходит замена символа в колонке Excel-файла программой из VB6 / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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