Изучаю VBA по Уокенбаху Эксель 2010 профессиональное программирование на ВБА по рекомендации преподавателя с Курсов Специлаист из Бауманки... К сожалению, в этой книжке большинство примеров даны просто как данность без подробного объяснения как и для чего работает каждая строка кода...
Сейчас ломаю голову над примером Пакетная обработка файлов:
[vba]
Код
Option Explicit
Sub BatchProcess() Dim FileSpec As String Dim i As Integer Dim FileName As String Dim FileList() As String Dim FoundFiles As Integer
' Указание пути и файла 10 FileSpec = ThisWorkbook.Path & "\" & "text??.txt" 20 FileName = Dir(FileSpec)
' Был ли найден файл? 30 If FileName <> "" Then 40 FoundFiles = 1 50 ReDim Preserve FileList(1 To FoundFiles) 60 FileList(FoundFiles) = FileName 70 Else 80 MsgBox "Не найдены файлы, которые соответствуют " & FileSpec 90 Exit Sub 100 End If
' Получение других имен файлов 110 Do 120 FileName = Dir 130 If FileName = "" Then Exit Do 140 FoundFiles = FoundFiles + 1 150 ReDim Preserve FileList(1 To FoundFiles) 160 FileList(FoundFiles) = FileName & "*" 170 Loop
' Циклический обход и обработка файлов 180 For i = 1 To FoundFiles 190 Call ProcessFiles(FileList(i)) 200 Next i End Sub
Sub ProcessFiles(FileName As String) ' Import the file 210 Workbooks.OpenText FileName:=FileName, _ Origin:=xlWindows, _ StartRow:=1, _ DataType:=xlFixedWidth, _ FieldInfo:= _ Array(Array(0, 1), Array(3, 1), Array(12, 1)) ' Ввод итоговых формул 220 Range("D1").Value = "A" 230 Range("D2").Value = "B" 240 Range("D3").Value = "C" 250 Range("E1:E3").Formula = "=COUNTIF(B:B,D1)" 260 Range("F1:F3").Formula = "=SUMIF(B:B,D1,C:C)" End Sub
[/vba]
Помогите пожалуйста разобраться. 1.При выполнении код выдает ошибку , что не найден файл Text01.txt хотя он (и другие два файла Text02 и Text03)лежит в том же каталоге, что и рабочая книга... 2.Почему, когда в строке 40 написано [vba]
Код
40 FoundFiles = 1
[/vba] в строке 50 переменная FoundFiles при пошаговом Дебаге показывает значение =3 [vba]
Код
50 ReDim Preserve FileList(1 To FoundFiles)
[/vba]
Архив в файлом с макросом и текстовыми файлами во вложении.
Изучаю VBA по Уокенбаху Эксель 2010 профессиональное программирование на ВБА по рекомендации преподавателя с Курсов Специлаист из Бауманки... К сожалению, в этой книжке большинство примеров даны просто как данность без подробного объяснения как и для чего работает каждая строка кода...
Сейчас ломаю голову над примером Пакетная обработка файлов:
[vba]
Код
Option Explicit
Sub BatchProcess() Dim FileSpec As String Dim i As Integer Dim FileName As String Dim FileList() As String Dim FoundFiles As Integer
' Указание пути и файла 10 FileSpec = ThisWorkbook.Path & "\" & "text??.txt" 20 FileName = Dir(FileSpec)
' Был ли найден файл? 30 If FileName <> "" Then 40 FoundFiles = 1 50 ReDim Preserve FileList(1 To FoundFiles) 60 FileList(FoundFiles) = FileName 70 Else 80 MsgBox "Не найдены файлы, которые соответствуют " & FileSpec 90 Exit Sub 100 End If
' Получение других имен файлов 110 Do 120 FileName = Dir 130 If FileName = "" Then Exit Do 140 FoundFiles = FoundFiles + 1 150 ReDim Preserve FileList(1 To FoundFiles) 160 FileList(FoundFiles) = FileName & "*" 170 Loop
' Циклический обход и обработка файлов 180 For i = 1 To FoundFiles 190 Call ProcessFiles(FileList(i)) 200 Next i End Sub
Sub ProcessFiles(FileName As String) ' Import the file 210 Workbooks.OpenText FileName:=FileName, _ Origin:=xlWindows, _ StartRow:=1, _ DataType:=xlFixedWidth, _ FieldInfo:= _ Array(Array(0, 1), Array(3, 1), Array(12, 1)) ' Ввод итоговых формул 220 Range("D1").Value = "A" 230 Range("D2").Value = "B" 240 Range("D3").Value = "C" 250 Range("E1:E3").Formula = "=COUNTIF(B:B,D1)" 260 Range("F1:F3").Formula = "=SUMIF(B:B,D1,C:C)" End Sub
[/vba]
Помогите пожалуйста разобраться. 1.При выполнении код выдает ошибку , что не найден файл Text01.txt хотя он (и другие два файла Text02 и Text03)лежит в том же каталоге, что и рабочая книга... 2.Почему, когда в строке 40 написано [vba]
Код
40 FoundFiles = 1
[/vba] в строке 50 переменная FoundFiles при пошаговом Дебаге показывает значение =3 [vba]
Код
50 ReDim Preserve FileList(1 To FoundFiles)
[/vba]
Архив в файлом с макросом и текстовыми файлами во вложении.t330
При выполнении код выдает ошибку , что не найден файл Text01.txt хотя он (и другие два файла Text02 и Text03)лежит в том же каталоге, что и рабочая книга...
но открыть вы пытаетесь его из текущей папки, а не из паки ThisWorkbook.Path или менять в коде [vba]
При выполнении код выдает ошибку , что не найден файл Text01.txt хотя он (и другие два файла Text02 и Text03)лежит в том же каталоге, что и рабочая книга...
но открыть вы пытаетесь его из текущей папки, а не из паки ThisWorkbook.Path или менять в коде [vba]
boa, не совсем так. Это папка по молчанию, но она может быть изменена во время работы при открытии файла например, но направление верное. t330, ? curdir - покажет текущую.
boa, не совсем так. Это папка по молчанию, но она может быть изменена во время работы при открытии файла например, но направление верное. t330, ? curdir - покажет текущую.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Сообщение отредактировал bmv98rus - Вторник, 12.02.2019, 19:39