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

Зада стоит в том что, есть 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
Загрузка файлов в Excel!
    #38259799
Joris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при таких нагрузка почти 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
Загрузка файлов в Excel!
    #38259818
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Структуры txt и xls файлов нам нужно угадать?
Выкладывайте примеры.
...
Рейтинг: 0 / 0
Загрузка файлов в Excel!
    #38260121
Joris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
...
Рейтинг: 0 / 0
Загрузка файлов в Excel!
    #38260123
Joris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
...
Рейтинг: 0 / 0
Загрузка файлов в Excel!
    #38260300
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joris,

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


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