Зацикливание через файлы Txt с использованием проблемы VBA – DIR ()
У меня есть следующий код, где я пытаюсь изменить некоторые файлы Txt в определенной папке. Сначала я хочу проверить, работает ли Loop. Однако, когда я запускаю макрос, код может читать только первый файл, а затем появляется ошибка времени выполнения в strFileName = Dir (). Я не уверен, в чем проблема. Единственная проблема, о которой я могу думать, это то, что я перемещаю код между двумя модульными листами. Местоположение папки сохраняется в поле txt в Листе 1 книги Excel.
Sub Txt_File_Loop() Public TextFile As String Dim FolderLocation As String Dim strFielName As String Dim SaveLocation As String 'Location is present in a Text box FolderLocation = Sheets(1).FolderLocationTXTBX.Text strFileName = Dir(FolderLocation & " \ * ") Do Until strFileName = "" TextFile = FolderLocation & "\" & strFileName Module2.Macro1 strFileName = Dir() 'ERROR is Here Loop End Sub Sub Macro1() Dim x As String Open TextFile For Input As #1 Do Until EOF(1) Line Input #1, textline x = x & textline Loop Close #1 MsgBox x End Sub
- Управление текстовым полем в Excel - как ссылаться в Perl
- Код VBA / Macro для получения значения текстового поля
- Как установить имя текстового поля как переменную и разрешить изменять имя в цикле?
- Текстовое поле ActiveX на листе листа Excel заменяет границу и шрифт при утрате фокуса
- Код устранения неполадок для макросов и текстовых полей
- Определите номер недели, номер месяца, год с момента управления DatePicker в пользовательской форме VBA
- Значение по умолчанию для текстового поля VBA Userform и выделено
- Ячейка, подключенная средствами управления, продолжает терять формулу
- Удалить строку из текстового поля, форм и т. Д., Которые могут быть сгруппированы
- Присоединение текстового поля к точке или строке на диаграмме в Excel / VBA
- Excel VBA - Shapes Текстовое поле OnChange событие
- Автоматическое создание текстовых полей на основе количества строк
- Возвращаемое значение в текстовом поле из Combobox в Excel
Взгляните на эти изменения. Кажется, они исправляют несколько вещей и хорошо проходят.
Option Explicit Sub Txt_File_Loop() Dim FolderLocation As String Dim strFileName As String Dim SaveLocation As String 'Location is present in a Text box FolderLocation = Sheets(1).FolderLocationTXTBX.Text 'Environ("TMP") strFileName = Dir(FolderLocation & "\*.txt") Do Until strFileName = "" Debug.Print FolderLocation & "\" & strFileName Module2.Macro1 FolderLocation & "\" & strFileName strFileName = Dir() 'ERROR is Here Loop End Sub Sub Macro1(sFPFN As String) Dim x As String, textline As String Debug.Print sFPFN Open sFPFN For Input As #1 Do Until EOF(1) Line Input #1, textline x = x & textline Loop Close #1 MsgBox x End Sub
Я передал имя папки и имени файла как параметр строкового типа. Кроме того, я не знаю, почему у вас были дополнительные пробелы в (FolderLocation & " \ * "
, я затягивал это. Было несколько ошибок и необъявленных переменных, которых можно избежать с помощью Option Explicit
¹ в верхней части модуля введите код стандартного отступа с кодом. Это, безусловно, улучшает читаемость, если ничего другого.
¹ Настройка Требовать декларацию переменных в инструментах VBE ► Опции ► Страница свойств редактора помещает оператор Option Explicit в начало каждого вновь созданного кодового листа. Это позволит избежать ошибок глупого кодирования, таких как орфографические ошибки, а также повлиять на использование правильного типа переменной в объявлении переменной. Переменные, созданные на лету без объявления, представляют собой тип варианта / объекта. Использование Option Explicit широко считается «лучшей практикой».