Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Загрузка файлов в Excel! / 9 сообщений из 9, страница 1 из 1
16.05.2013, 10:11
    #38259683
Joris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка файлов в Excel!
Добрый день!

Зада стоит в том что, есть xls и txt файл который каждый день формируется около 10-20 файлов и каждый файл содержит минимум 2500 запись. Их надо загружать в основной файл Excel который содержит 950 запись.
Из форума нашел макрос для загрузка файлов но к сожалению он работает очень медленно…, есть какой небуд другой способ???
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
Sub WU_Eiiiea1_Uaeeioou()
  Dim i As Integer
  Dim j As Integer
  Dim MySheet As Worksheet
  Dim MySheet1 As Worksheet
  Dim TxtFileName As Variant
  Dim TxtBook As Workbook
  Application.ScreenUpdating = False
  Set MySheet = ActiveSheet
  
  TxtFileName = Application.GetOpenFilename("TXT For Microsoft Office Excel (*.txt), *.txt")
  
  If TxtFileName <> False Then
  
    Workbooks.OpenText Filename:=TxtFileName _
                                , Origin:=xlWindows _
                                , DataType:=xlDelimited _
                                , Other:=True, OtherChar:=";"
    Set TxtBook = Workbooks(Workbooks.Count)
    
    'MsgBox ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count
    
    'MsgBox TxtFileName
    
    If Mid(TxtFileName, 8, 2) = "01" Then
    
        For i = 6 To 195 'ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count
            For j = 6 To 125 'ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count
                If TxtBook.Worksheets(1).Range("B" & (j)) = MySheet.Range("B" & (i)) Then
                        TxtBook.Worksheets(1).Range("C" & (j)) = -(TxtBook.Worksheets(1).Range("D" & (j)) + TxtBook.Worksheets(1).Range("E" & (j)))
                        TxtBook.Worksheets(1).Range("N" & (j)) = -(TxtBook.Worksheets(1).Range("O" & (j)) + TxtBook.Worksheets(1).Range("P" & (j)))
                        TxtBook.Worksheets(1).Range("C" & (j)).Copy MySheet.Range("C" & (i))
                        TxtBook.Worksheets(1).Range("N" & (j)).Copy MySheet.Range("D" & (i))
                Else
                        MySheet.Range("C" & (i)).Copy MySheet.Range("C" & (i))
                End If
                x = 195 + 6 - i
                
                Application.StatusBar = "Wait:  " & x    ' Это для визуализации работы макроса

            Next
        Next
    End If
    
     Application.StatusBar = False
     Application.ScreenUpdating = True
    
    TxtBook.Saved = True
    TxtBook.Close

End If
End Sub


Заранее благодарен!
...
Рейтинг: 0 / 0
16.05.2013, 10:59
    #38259799
Joris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка файлов в Excel!
при таких нагрузка почти 1,5 часа будет обработать одного файла, как ускорить процесс обработка файла???
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
    If Mid(TxtFileName, 8, 2) = "01" Then
    
        For i = 6 To 950 'ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count
            For j = 6 To 2500 'ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count
                If TxtBook.Worksheets(1).Range("B" & (j)) = MySheet.Range("B" & (i)) Then
                        TxtBook.Worksheets(1).Range("C" & (j)) = -(TxtBook.Worksheets(1).Range("D" & (j)) + TxtBook.Worksheets(1).Range("E" & (j)))
                        TxtBook.Worksheets(1).Range("N" & (j)) = -(TxtBook.Worksheets(1).Range("O" & (j)) + TxtBook.Worksheets(1).Range("P" & (j)))
                        TxtBook.Worksheets(1).Range("C" & (j)).Copy MySheet.Range("C" & (i))
                        TxtBook.Worksheets(1).Range("N" & (j)).Copy MySheet.Range("D" & (i))
                Else
                        MySheet.Range("C" & (i)).Copy MySheet.Range("C" & (i))
                End If
                x = 950 + 6 - i
                
                Application.StatusBar = "Wait:  " & x    ' Это для визуализации работы макроса

            Next
        Next
    End If
...
Рейтинг: 0 / 0
16.05.2013, 11:12
    #38259818
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка файлов в Excel!
Структуры txt и xls файлов нам нужно угадать?
Выкладывайте примеры.
...
Рейтинг: 0 / 0
16.05.2013, 13:02
    #38260121
Joris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка файлов в Excel!
Shocker.Pro,
...
Рейтинг: 0 / 0
16.05.2013, 13:03
    #38260123
Joris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка файлов в Excel!
Shocker.Pro,
...
Рейтинг: 0 / 0
16.05.2013, 14:20
    #38260300
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка файлов в Excel!
Joris,

Я бы сделал так :
1. Файлы загружать в Access через [Text;FMT=Delimited;HDR=Yes;DATABASE=C:\data\;].test.txt
2. На стороне Access выполнить все вычисления
3. Сформировать в Access результирующую вьюху
4. Через CopyFromRecordset вставлять данные в Excel.
...
Рейтинг: 0 / 0
16.05.2013, 20:25
    #38261006
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка файлов в Excel!
Все можно сделать внутренним запросом sql.
...
Рейтинг: 0 / 0
17.05.2013, 14:12
    #38262020
Gosha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка файлов в Excel!
еще совет - отключите прорисовку листа во время вставки данных, будет работать быстрее
...
Рейтинг: 0 / 0
17.05.2013, 14:13
    #38262021
Gosha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка файлов в Excel!
Goshaеще совет - отключите прорисовку листа во время вставки данных, будет работать быстрее
Блин, не заметил... уже отключено, извините :(
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Загрузка файлов в Excel! / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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