Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сортировка в таблице / 2 сообщений из 2, страница 1 из 1
05.10.2007, 22:45:51
    #34851427
Alexandr_80
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в таблице
Помогите разобраться.

У меня есть написанный макрос, который берет данные из текстового файла, и вносит их в эксель.
Название каждого файла упорядоченено. то есть 1.txt, 2.txt... n.txt.
Часть кода:
авторWith Application.FileSearch
.NewSearch
.LookIn = ThisWorkbook.Path & "\"
'.SearchSubFolders = True
.Filename = "*.txt"
If .Execute > 0 Then
For ii = 1 To .FoundFiles.Count
ArrName = Split(.FoundFiles(ii), "\")

lngPos1 = InStr(1, ArrName(UBound(ArrName)), ".")
Fname = Mid(ArrName(UBound(ArrName)), 1, lngPos1 - 1)
ActiveSheet.Range("A" & ii + 1).End(xlUp).Offset(1) = Fname
Next ii
Else
MsgBox "There were no files found."
End If
End With

Почему-то нумерация в колонке "А" выводится следуюшим образом:

1
10
11
12
14
15
16
2
3
4
5
6
8
9

1. Как упорядочить все это по возрастанию?
2. Как сделать так, чтобы при появлении нового файла, например, 17, 18... данные уже заполненные, занова не перечитывались и не заполнялись?

За ранее благодарен!
...
Рейтинг: 0 / 0
05.10.2007, 22:58:13
    #34851438
Alexandr_80
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в таблице
Полный текст кода:

Код: plaintext
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.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
Option Explicit

Private Sub cmdFindData_Click()
    Dim strFile As String
    Dim strInput As String
    Dim myArray() As Variant, n As String
    Dim hFile As String
    Dim intI As Integer
    Dim lngPos1 As Integer
    Dim st_file As Integer
    Dim MyName As String
    Dim Fname As String
    Dim MyPath As String
    Dim MyPath2 As String
    Dim ii As Long


Dim ArrName As Variant
 Columns( 1 ).ClearContents
    
    With Application.FileSearch
        .NewSearch
        .LookIn = ThisWorkbook.Path & "\"
        '.SearchSubFolders = True
        .Filename = "*.txt"
        If .Execute >  0  Then
            For ii =  1  To .FoundFiles.Count
                ArrName = Split(.FoundFiles(ii), "\")
                
                lngPos1 = InStr( 1 , ArrName(UBound(ArrName)), ".") 
                Fname = Mid(ArrName(UBound(ArrName)),  1 , lngPos1 -  1 )
                ActiveSheet.Range("A" & ii +  1 ).End(xlUp).Offset( 1 ) = Fname
            Next ii
        Else
            MsgBox "There were no files found."
        End If
    End With

With Application.FileSearch
        .NewSearch
        '.SearchSubFolders = True
        .Filename = "*.txt"
If .Execute >  0  Then
For st_file =  2  To .FoundFiles.Count +  1 

    If Not IsEmpty(Cells(st_file,  1 )) Then
        strFile = fnFixPath(ThisWorkbook.Path) _
          & CStr(Cells(st_file,  1 )) & ".txt"
        
        If fnFileExists(strFile) Then
          hFile = FreeFile
            Open strFile For Input Access Read As hFile
            
            n =  1 
            Do Until EOF(hFile)
                Line Input #hFile, strInput
               intI = intI +  1 
               ReDim Preserve myArray(n) As Variant
               myArray(n) = strInput
               If Trim(myArray(n -  1 )) = "Salon:" And Trim(myArray(n)) = "Service:" Then
                  intI = intI +  1 
               
                  Cells(st_file, intI) = fnExtractData(strInput, True)
               Else
                    Cells(st_file, intI +  1 ) = fnExtractData(strInput, True)
               End If
               n = n +  1 
            Loop
                intI =  0 
            Close hFile
        Else
            MsgBox ("No file for...!")
        End If
    Else
        MsgBox ("No number!")
    End If
Next st_file

End If
End With
End Sub

Функция:

Код: plaintext
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.
Function fnExtractData( _
  strData As String, _
  Optional fHeader As Boolean = False) As String
    Dim lngPos As Long
    'Dim PosColum As Boolean
    
    
    lngPos = InStr( 1 , strData, ":")     
    If lngPos =  0  Then 
        If Not fHeader Then
            fnExtractData = RTrim(Mid(strData,  1 , lngPos -  1 ))
             
        Else
            fnExtractData = LTrim(Mid(strData, lngPos +  2 ))
            'PosColum = False
        End If
    Else
        If Not fHeader Then
            fnExtractData = RTrim(Mid(strData,  1 , lngPos -  1 ))
             
        Else
            fnExtractData = LTrim(Mid(strData, lngPos +  2 ))
        End If
    
    End If
End Function
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сортировка в таблице / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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