Работа с файлами в vba excel

Задача по объединению данных из нескольких Excel-файлов, или подгрузка доп.данных из внешнего файла решается достаточно просто: создается объект Excel, который можно скрыть визуально, затем открывается необходимый файл и выполняются нужные действия. Просто приведу несколько примеров.

Открытие файла Excel

В первой строке запускаем новый Excel, затем делаем его невидимым, в 3-й строке открываем файл fname. В последней строке получаем первый лист открытого excel-кого файла.

Альтернативный вариант открытия файла

При открытии файла можно использовать доп.параметры (приведу некоторые):

UpdateLinks — обновлять или нет внешние ссылки при открытии файла;
ReadOnly — открытие в режиме только для чтения;
Format — используемый при открытии разделитель (1 — символ tab, 2 — запятые, 3 — пробелы, 4 — точка с запятой, 5 — без разделителя, 6 — пользовательский разделитель, заданный в Delimiter);
Delimiter — пользовательский разделитель (в случае, если Format = 6);
Origin — тип операционной системы (xlMacintosh, xlWindows или xlMSDOS);
Local — использование в Excel языка такого же, как в открываемом файле.

Теперь можно выполнять какие-то действия с открытым файлом, просто обращаясь через wb и ws.

Записать книгу и закрыть

Для записи текущей книги (где находится макрос), можно использовать:

Чтобы сохранить или перезаписать книгу Excel без вопросов, можно применить такой вариант:

У метода SaveAs есть несколько параметров сохранения, с ними можно ознакомиться на сайте Microsoft.

Если нужно, можно закрыть книгу Excel без сохранения изменений таким образом:

Приветствую! Сегодня мы поговорим о файлах, а точнее, как получать информацию из текстовых файлов в VBA. И будем повышать ваше умение программировать, как обычно, на примере.

В обычном текстовом файле содержатся строки:

Приветствуем Вас на сайте CodeTown.ru
здесь Вы найдёте много интересных
примеров на разные темы
и на разных языках.
Наслаждайтесь=)

Необходимо вывести их на лист в Excel, чтобы каждое слово находилось в своей ячейки с учётом пробелов.

Open «file.txt» For Input As #1 — таким образом прописываем путь к файлу, который мы хотим прочитать. Помните, что наши пути могут различаться. Также в конце команды мы присваиваем файлу идентификационный номер. В нашем случае 1.

Do Until EOF(1) — инициализация цикла чтения файла, пока не кончится файл (End Of File). В скобках функции указываем идентификационный номер файла, с которым мы работаем.

Line Input #1, Data — построчное считывание информации из файла. То есть, за каждую итерацию цикла Do Until EOF(1)F(1) мы обрабатываем одну строку.
Функция Line Input является наследуемой функцией от функции Input, которая в свою очередь позволяет считывать данные разного формата из открытых файлов разного типа. Подробный синтаксис вы можете найти здесь.

Как видите, программа небольшая и мы прошли уже основную часть. Мы смогли считать данные в виде строки, теперь, необходимо её обработать. То есть, поделить на слова и записать каждое в ячейку.

Do While InStr(Data, " " ) <> 0 — инициализирует цикл разделения строки на слова по пробелам. Собственно, сама функция InStr(Data, " ") занимается поиском символа, указанного на второй позиции (в нашем случае пробел) в строке, указанной на первой позиции (Data). Поиск осуществляется слева направо. Результатом функции является позиция найденного символа. Подробнее читайте тут. Таким образом, цикл не закончится, пока не закончатся пробелы. Однако, следует помнить, что пробел редко стоит в конце строки(обычно из-за ошибки автора). По этому после выхода из цикла в переменной Data останется последнее слово строки. Не забудем его вывести.

Читайте также  Синдром поиска скрытого смысла

Напоследок, обратите внимание на расположение обнуляющих операций переменный c и r. Нам приходится обнулять переменную r перед началом обработки строки, чтобы реализовать перенос между строк.

Если Вам какие-то команды остались не ясны, советую почитать предыдущие статьи, там вы найдёте примеры на работу с ними.

Наш вывод:

Вот, собственно, и всё, разобрали некоторые моменты работы с файлами в VBA. Задавайте вопросы в комментариях. Надеюсь вы прониклись магией VBA, если же нет, читайте продолжение. =)

В этом пошаговом руководстве приводятся основные сведения о файловом вводе-выводе в Visual Basic. This walkthrough provides an introduction to the fundamentals of file I/O in Visual Basic. В нем описывается создание небольшого приложения, перечисляющего текстовые файлы в каталоге и анализирующего их. It describes how to create a small application that lists and examines text files in a directory. Для каждого выбранного текстового файла приложение предоставляет атрибуты файла и первую строку содержимого. For each selected text file, the application provides file attributes and the first line of content. Кроме того, предоставляется возможность записать информацию в файл журнала. There is an option to write information to a log file.

В этом пошаговом руководстве используются члены My.Computer.FileSystem Object , доступные в Visual Basic. This walkthrough uses members of the My.Computer.FileSystem Object , which are available in Visual Basic. Дополнительные сведения см. в разделе FileSystem. See FileSystem for more information. В конце пошагового руководства приводится эквивалентный пример, в котором используются классы пространства имен System.IO. At the end of the walkthrough, an equivalent example is provided that uses classes from the System.IO namespace.

Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. The Visual Studio edition that you have and the settings that you use determine these elements. Дополнительные сведения см. в разделе Персонализация среды IDE. For more information, see Personalizing the IDE.

Создание проекта To create the project

В меню Файл выберите пункт Создать проект. On the File menu, click New Project.

Откроется диалоговое окно Новый проект . The New Project dialog box appears.

В области Установленные шаблоны разверните узел Visual Basic и выберите элемент Windows. In the Installed Templates pane, expand Visual Basic, and then click Windows. В середине области Шаблоны щелкните Приложение Windows Forms. In the Templates pane in the middle, click Windows Forms Application.

В поле Имя введите FileExplorer , чтобы задать имя проекта, а затем нажмите кнопку ОК. In the Name box, type FileExplorer to set the project name, and then click OK.

Visual Studio добавит проект в обозреватель решений, после чего откроется конструктор Windows Forms. Visual Studio adds the project to Solution Explorer, and the Windows Forms Designer opens.

Добавьте в форму элементы управления из приведенной ниже таблицы и установите для их свойств соответствующие значения. Add the controls in the following table to the form, and set the corresponding values for their properties.

Элемент управления Control Свойство. Property Значение Value
ListBox ListBox Name Name filesListBox
Button Button Name Name

Text Text

browseButton

Обзор Browse

Button Button Name Name

Text Text

examineButton

Исследовать Examine

CheckBox CheckBox Name Name

Text Text

saveCheckBox

Сохранить результатыSave Results

FolderBrowserDialogFolderBrowserDialog NameName FolderBrowserDialog1

Выбор папки и перечисление файлов в ней To select a folder, and list files in a folder

Создайте обработчик событий нажатия Click для кнопки browseButton , дважды щелкнув этот элемент управления в форме. Create a Click event handler for browseButton by double-clicking the control on the form. Откроется редактор кода. The Code Editor opens.

Читайте также  Программа для изучения новых слов

Добавьте следующий код в обработчик событий Click . Add the following code to the Click event handler.

Вызов FolderBrowserDialog1.ShowDialog открывает диалоговое окно Выбор папки. The FolderBrowserDialog1.ShowDialog call opens the Browse For Folder dialog box. Когда пользователь нажимает OK, свойство SelectedPath передается как аргумент методу ListFiles , который добавляется в следующем шаге. After the user clicks OK, the SelectedPath property is sent as an argument to the ListFiles method, which is added in the next step.

Добавьте приведенный ниже метод ListFiles . Add the following ListFiles method.

Этот код сперва очищает элемент ListBox. This code first clears the ListBox.

Затем метод GetFiles возвращает коллекцию строк — по одной для каждого файла в каталоге. The GetFiles method then retrieves a collection of strings, one for each file in the directory. Метод GetFiles принимает аргумент шаблона поиска, чтобы извлечь файлы, соответствующие определенному шаблону. The GetFiles method accepts a search pattern argument to retrieve files that match a particular pattern. В этом примере возвращаются только файлы с расширением TXT. In this example, only files that have the extension .txt are returned.

Строки, возвращаемые методом GetFiles , затем добавляются в элемент управления ListBox. The strings that are returned by the GetFiles method are then added to the ListBox.

Запустите приложение. Run the application. Нажмите кнопку Обзор. Click the Browse button. В диалоговом окне Выбор папки перейдите в папку, содержащую TXT-файлы, выберите папку и нажмите кнопку ОК. In the Browse For Folder dialog box, browse to a folder that contains .txt files, and then select the folder and click OK.

Элемент ListBox содержит список TXT-файлов в выбранной папке. The ListBox contains a list of .txt files in the selected folder.

Остановите работу приложения. Stop running the application.

Получение атрибутов файла и содержимого текстового файла To obtain attributes of a file, and content from a text file

Создайте обработчик событий нажатия Click для кнопки examineButton , дважды щелкнув этот элемент управления в форме. Create a Click event handler for examineButton by double-clicking the control on the form.

Добавьте следующий код в обработчик событий Click . Add the following code to the Click event handler.

Этот код проверяет, выбран ли элемент в элементе ListBox . The code verifies that an item is selected in the ListBox . Затем он получает запись пути к файлу из элемента ListBox . It then obtains the file path entry from the ListBox . Метод FileExists позволяет проверить, существует ли файл. The FileExists method is used to check whether the file still exists.

Путь к файлу передается как аргумент методу GetTextForOutput , который добавляется в следующем шаге. The file path is sent as an argument to the GetTextForOutput method, which is added in the next step. Этот метод возвращает строку, содержащую информацию о файле. This method returns a string that contains file information. Информация о файле отображается в элементе MessageBox. The file information appears in a MessageBox.

Добавьте приведенный ниже метод GetTextForOutput . Add the following GetTextForOutput method.

Метод GetFileInfo используется в коде для получения параметров файла. The code uses the GetFileInfo method to obtain file parameters. Параметры файла добавляются в StringBuilder. The file parameters are added to a StringBuilder.

Метод OpenTextFileReader считывает содержимое файла в StreamReader. The OpenTextFileReader method reads the file contents into a StreamReader. Первая строка содержимого файла извлекается из StreamReader и добавляется в StringBuilder . The first line of the contents is obtained from the StreamReader and is added to the StringBuilder .

Читайте также  Программы для hackrf one

Запустите приложение. Run the application. Нажмите кнопку Обзор и перейдите в папку с TXT-файлами. Click Browse, and browse to a folder that contains .txt files. Нажмите кнопку ОК. Click OK.

Выберите файл в элементе ListBox и щелкните Исследовать. Select a file in the ListBox , and then click Examine. В окне MessageBox будет выведена информация о файле. A MessageBox shows the file information.

Остановите работу приложения. Stop running the application.

Добавление записи в журнал To add a log entry

В конец обработчика событий examineButton_Click добавьте приведенный ниже код. Add the following code to the end of the examineButton_Click event handler.

Код задает путь к файлу журнала, чтобы файл журнала помещался в тот же каталог, где находится выбранный файл. The code sets the log file path to put the log file in the same directory as that of the selected file. Запись журнала должна содержать текущие дату и время, а далее информацию о файле. The text of the log entry is set to the current date and time followed by the file information.

Метод WriteAllText, которому передается аргумент append со значением True , используется для создания записи в журнале. The WriteAllText method, with the append argument set to True , is used to create the log entry.

Запустите приложение. Run the application. Перейдите к текстовому файлу, выберите его в элементе ListBox , установите флажок Сохранить результаты и щелкните Исследовать. Browse to a text file, select it in the ListBox , select the Save Results check box, and then click Examine. Проверьте, добавлена ли запись в файл log.txt . Verify that the log entry is written to the log.txt file.

Остановите работу приложения. Stop running the application.

Использование текущего каталога To use the current directory

Создайте обработчик событий для события Form1_Load , дважды щелкнув форму. Create an event handler for Form1_Load by double-clicking the form.

Добавьте в обработчик событий приведенный ниже код. Add the following code to the event handler.

Этот код задает текущий каталог в качестве каталога по умолчанию для обозревателя папок. This code sets the default directory of the folder browser to the current directory.

Запустите приложение. Run the application. При первом нажатии кнопки Обзор открывается диалоговое окно Выбор папки с текущим каталогом. When you click Browse the first time, the Browse For Folder dialog box opens to the current directory.

Остановите работу приложения. Stop running the application.

Выборочное включение элементов управления To selectively enable controls

Добавьте приведенный ниже метод SetEnabled . Add the following SetEnabled method.

Метод SetEnabled включает и отключает элементы управления в зависимости от того, выбран ли элемент в элементе ListBox . The SetEnabled method enables or disables controls depending on whether an item is selected in the ListBox .

Создайте обработчик событий SelectedIndexChanged для элемента filesListBox , дважды щелкнув элемент управления ListBox в форме. Create a SelectedIndexChanged event handler for filesListBox by double-clicking the ListBox control on the form.

Добавьте вызов метода SetEnabled в новый обработчик событий filesListBox_SelectedIndexChanged . Add a call to SetEnabled in the new filesListBox_SelectedIndexChanged event handler.

Добавьте вызов метода SetEnabled в конце обработчика событий browseButton_Click . Add a call to SetEnabled at the end of the browseButton_Click event handler.

Добавьте вызов метода SetEnabled в конце обработчика событий Form1_Load . Add a call to SetEnabled at the end of the Form1_Load event handler.

Запустите приложение. Run the application. Флажок Сохранить результаты и кнопка Исследовать отключены, если элемент не выбран в элементе ListBox . The Save Results check box and the Examine button are disabled if an item is not selected in the ListBox .

Полный пример с использованием My.Computer.FileSystem Full example using My.Computer.FileSystem

Ниже приведен полный пример. Following is the complete example.

Ссылка на основную публикацию
Adblock
detector