Обработка файлов
Данный макрос позволяет быстро (одним нажатием кнопки) пересохранить текущий файл Excel в другом формате.Например, вы работаете с книгой Excel в формате Excel 97-2003 (расширение XLS), и вам понадобилось преобразовать этот файл в формат «двоичная книга Excel» (расширение XLSB)Для чего это нужно? К примеру, файлы в формате XLSB занимают намного меньше места на диске, и не будут открываться в Excel 2007 и новее в режиме совместимости (еслои вам вдруг перестало хватать 65 тысяч строк) Поместите этот макрос в любую из подключенных надстроек Excel (или в личную книгу макросов Personal.xlsb), и назначьте этот макрос кнопке на панели быстрого вызова:
|
|||
Функция предназначена для получения файлов, извлечённых из архива ZIP.Разархивирование выполняется средствами Windows, файлы извлекаются в специально созданную папку в каталоге для временных файлов (C:\WINDOWS\Temp\) При запуске макроса папка UNZIPPED FILES сначала удаляется, а потом создаётся заново. Функция возвращает коллекцию, содержащую полные пути к извлечённым файлам.
См. также функцию UnZip_File, предназначенную для разархивирования файлов
|
|||
При загрузке данных в Excel с веб-страниц порой оказывается, что некоторая необходимая нам информация (например, адреса электронной почты) представлена в графическом виде (текст на картинке).
|
|||
При попытке сохранить файл под именем, заданным пользователем, вы можете получить ошибку - если в имени файла (папки) присутствуют запрещённые символы. Этого легко избежать, если в процессе формирования имени файла удалить из него недопустимые символы, заменив их символом подчёркивания: Function Replace_symbols(ByVal txt As String) As String St$ = "~!@/\#$%^&*=|`""" For i% = 1 To Len(St$) txt = Replace(txt, Mid(St$, i, 1), "_") Next Replace_symbols = txt End Function Пример использования: ' формируем путь к новому файлу
|
|||
В некоторых случаях, при запуске файла Excel с макросами (к примеру, надстройки Excel), для обеспечения работы макросов требуется, чтобы был полный доступ к файлу (а не "только чтение"), или же файл был сохранён в заданной папке.Полный доступ к файлу необходим, например, для работы автоматического обновления надстройки, В этом вам поможет макрос SaveAddinToPermanentPath, который проверяет, из какой папки запущен файл, и предлагает, в случае необходимости, переместить файл в постоянную папкуВ качестве постоянной папки макрос использует папку «UserLibrary», путь к которой можно получить из свойства Application.UserLibraryPath На моём компьютере, эта папка расположена по пути Код макроса SaveAddinToPermanentPath:
|
|||
Надстройка предназначена для облегчения импорта данных в Excel из текстовых файлов с разделителями (например, из CSV)Пока во вложении - обычный файл Excel с нужными макросами, надстройку выложу позже В надстройке применена функция получения ссылки на заданную пользователем ячейку. Основой для надстройки послужила функция загрузки CSV файла в двумерный массив
|
|||
Функция TextFile2Array предназначена для преобразования файла CSV в двумерный массивОчень часто при работе с текстовыми файлами (и, в частности, с файлами CSV) приходится их загружать на лист Excel, предварительно производя фильтрацию данных в этом файле. Чтобы упростить весь процесс - от выбора файла CSV в диалоговом окне, до разбиения загруженного из файла текста в двумерный массив, и была написана эта функция. В качестве параметров функции можно задать разделители строк и столбцов текстового файла, так что при помощи этой функции можно загружать данные не только из файлов CSV, но и из любых других текстовых файлов, имеющих аналогичную структуру. Пример использования функции для загрузки данных из файла CSV: Sub ЗагрузкаДанныхИзCSV() ' выбор файла по умолчанию предлагается в той же папке, ' где расположен текущий файл Excel CSVarr = TextFile2Array(, ThisWorkbook.Path, , "*.csv") ' проверка результата загрузки данных (выход из макроса, если данные не загружены) If Not IsArray(CSVarr) Then MsgBox "Файл CSV не обработан", vbCritical, "Ошибка": Exit Sub ' ваш код обработки двумерного массива Debug.Print "Загружен двумерный массив размерами " & _ UBound(CSVarr, 1) & " строк на " & UBound(CSVarr, 2) & " столбцов" End Sub
|
|||
Function PasteOLEobject(ByVal filename$, ByRef TopLeftCell As Range, _ Optional ByVal Width%, Optional ByVal Height%) As ShapeRange ' вставляет на лист объект OLE (из файла filename$) ' и размещает его в нужном месте, совмещая левый верхний угол с ячейкой TopLeftCell ' если указаны размеры Width% или Height% - они задаются вствляемому объекту On Error Resume Next: Err.Clear Set PasteOLEobject = TopLeftCell.Worksheet.OLEObjects.Add(, filename$).ShapeRange If Err Then MsgBox "Вставка объекта невозможна!", vbCritical: End
|
|||
Функция GetValue предназначена для получения данных из закрытой книги ExcelИспользовать такой способ имеет смысл только в том случае, если из большого файла надо получить значения только нескольких ячеек (или одного диапазоная ячеек), и при этом точно известно расположение на листе интересующих нас ячеек, и имена листов Пример использования функции: Sub ПримерИспользования_GetValue() p = "C:\Documents and Settings\Бухгалтерия" ' папка с файлом f = "расход.xls" ' имя файла s = "доходы" ' название листа a = "D145" ' интересующая нас ячейка ' выполняем загрузку данных из закрытой книги Excel ЗначениеЯчейки = GetValue(p, f, s, a) Debug.Print ЗначениеЯчейки ' выводим результат в окно Immediate End Sub Посмотрите также результат использования этой функции внутри цикла
|
|||
Надстройка, позволяющая загрузить из выбранной папки список файлов на лист Excel.Автор: VictorM Особенности надстройки:
|
|||
