Elettracompany.com

Компьютерный справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как написать парсер vba excel

Парсер сайтов и файлов (парсинг данных с сайта в Excel)

Надстройка Parser для Excel — простое и удобное решение для парсинга любых сайтов (интернет-магазинов, соцсетей, площадок объявлений) с выводом данных в таблицу Excel (формата XLS* или CSV), а также скачивания файлов.

Особенность программы — очень гибкая настройка постобработки полученных данных (множество текстовых функций, всевозможные фильтры, перекодировки, работа с переменными, разбиение значения на массив и обработка каждого элемента в отдельности, вывод характеристик в отдельные столбцы, автоматический поиск цены товара на странице, поддержка форматов JSON и XML).

В парсере сайтов поддерживается авторизация на сайтах, выбор региона, GET и POST запросы, приём и отправка Cookies и заголовков запроса, получение исходных данных для парсинга с листа Excel, многопоточность (до 200 потоков), распознавание капчи через сервис RuCaptcha.com, работа через браузер (IE), кеширование, рекурсивный поиск страниц на сайте, сохранение загруженных изображений товара под заданными именами в одну или несколько папок, и многое другое.

Поиск нужных данных на страницах сайта выполняется в парсере путем поиска тегов и/или атрибутов тегов (по любому свойству и его значению). Специализированные функции для работы с HTML позволяют разными способами преобразовывать HTML-таблицы в текст (или пары вида название-значение), автоматически находить ссылки пейджера, чистить HTML от лишних данных.

За счёт тесной интеграции с Excel, надстройка Parser может считывать любые данные из файлов Excel, создавать отдельные листы и файлы, динамически формировать столбцы для вывода, а также использовать всю мощь встроенных в Excel возможностей.
Поддерживается также сбор данных из текстовых файлов (формата Word, XML, TXT) из заданной пользователем папки, а также преобразование файлов Excel из одного формата таблицы в другой (обработка и разбиение данных на отдельные столбцы)

В программе «Парсер сайтов» можно настроить обработку нескольких сайтов. Перед запуском парсинга (кнопкой на панели инструментов Excel) можно выбрать ранее настроенный сайт из выпадающего списка.

На видео рассказывается о работе с программой, и показан процесс настройки парсера интернет-магазина:

Дополнительные видеоинструкции, а также подробное описание функционала, можно найти в разделе Справка по программе

В программе можно настроить несколько парсеров (обработчиков сайтов).
Любой из парсеров настраивается и работает независимо от других.

Настройка программы, — дело не самое простое (для этого, надо хоть немного разбираться в HTML)

Если вам нужен готовый парсер, но вы не хотите разбираться с настройкой,
— закажите настройку парсера разработчику программы. Стоимость настройки под конкретный сайт — от 1500 рублей.
(настройка под заказ выполняется только при условии приобретения лицензии на надстройку «Парсер» (2700 руб)

Программа не привязана к конкретному файлу Excel.
Вы в настройках задаёте столбец с исходными данными (ссылками или артикулами),
настраиваете формирование ссылок и подстановку данных с сайта в нужные столбцы,
нажимаете кнопку, — и ваша таблица заполняется данными с сайта.

Программа «Парсер сайтов» может быть полезна для формирования каталога товаров интернет-магазинов,
поиска и загрузки фотографий товара по артикулам (если для получения ссылки на фото, необходимо анализировать страницу товара),
загрузки актуальных данных (цен и наличия) с сайтов поставщиков, и т.д. и т.п.

Можно попробовать разобраться с работой программы на примерах настроенных парсеров

Как скачать и протестировать программу

Для загрузки надстройки Parser воспользуйтесь кнопкой Скачать программу

Если не удаётся скачать надстройку, читайте инструкцию про антивирус

Если скачали файл, но он не запускается, читайте почему не появляется панель инструментов

Это полнофункциональная пробная (TRIAL) версия, у вас есть 10 дней бесплатного использования ,
в течение которых вы можете протестировать работу программы.

Этого вполне достаточно, чтобы всё настроить и проверить, используя раздел Справка по программе

Если вам понравится, как работает программа, вы можете Купить лицензию

Лицензия (для постоянного использования) стоит 2700 рублей .

В эту стоимость входит активация на 2 компьютера (вы сможете пользоваться программой и на работе, и дома).
Если нужны будут дополнительные активации, их можно будет в любой момент приобрести по 600 рублей за каждый дополнительный компьютер.

  • 564506 просмотров

Комментарии

подскажите, как можно в таблице html убрать строку (целиком) содержащую определенный параметр (например бренд, срок поставки).
И еще после «преобразовать таблицы в список..» получается массив равный количеству ячеек (например 2-сроки на 5-столбцов получится 10 элементов массива) как сделать массив по количеству строк?

Да, работает. С любой версией Excel под windows.

Подскажите а работает ли парсер с excel 2016

Всё должно загружать. Что-то не так настроили, видимо.

пейджер в пробной версии загружает только 7 ссылок из 100. Это правильно так и должно быть?

Алексей, да, может.

Скажите а ваш парсер может собирать данные с джава таблицы, все скрытые строки.
Например вот здесь выводится только 50 строк, мне нужны все

Заказы на парсер принимаются в таком виде
https://excelvba.ru/programmes/Parser/order
Для начала, высылайте заказ, чтобы было что обсуждать.

Как с вами связаться?

Здравствуйте, возможно сделать:
Программа выделяет в столбце экселя данные и вносит в поисковую строку на сайте, вбивает еще один стобец, а результат первой и второй строки заменяется резултатом с сайта и вносится еще один стобец данных с сайта в таблицу эксель.

Очень нужно, очень интересно

Илья, можем настроить под заказ, если у вас до сих пор не получилось.
Я не консультирую по вопросам настройки парсеров.

Игорь, здравствуйте! Повторю вопрос))) На сайте ссылки дублируются, одна находится в названии товара, вторая в его каталожном номере. Проблема в том, что эти ссылки находятся в одном блоке, с одинаковыми тэгами, отличаются только анкорами. Как можно реализвать удаление (не обработку) дублей? Или, чтоб как то парсер брал ссылки через 1 в пейджере?
Или такая функция не предусмотрена в парсере?

И еще такой вопрос, с чем может быть связано то, что с разными проходами по сайту получаются разные результаты, например первый проход — 3567 строчек, второй 8370 строк, третий 4000?

Здравствуйте! Подскажите, как парсер завершает работу? Наблюдаю следующую картину: excel перестает заполняться данными, висят 2 окошка парсера: «Инициализация исходных данных (00:00:01)» и «Обработка результатов 100%» и ничего не происходит, из активных кнопок только «отменить»

Добрый день, как можно симитировать нажатие на скриптовую ссылку (которая не содержит привычный тег a)? Необходимые данные выводятся в модальном окне.

Здравствуйте, Сергей.
Тут возможны 2 причины:
1. Что-то недоустановлено в системе. Найти и решить проблему сложно.
2. Парсер несовместим с office 2003.
У остальных программ и поддерживаю ещё пока совместимость с 2003 версией, а вот насчёт парсера уже и не помню, — там сложный функционал, возможно пришлось пожертвовать совместимостью (сейчас 2003 версию почти никто не использует). Рекомендую установить Office 2010.

Здравствуйте. На втором компе подряд не получается запустить триал парсера. Выдаёт ошибку «Compile error in hidden module: mod_Declaration». Оба компа Win7, Office 2003, файл разблокирован, безопасность: низкая.
Что я делаю не так?

Есть разные способы.
Либо брать все товары из главных категорий (вообще не перебирая вложенные), либо, если во вложенных категориях присутствуют товары, отсутствующие в родительских, то можно перебирать все категории, добавив проверку на их наличие.
Если сами не разберётесь, можем настроить под заказ.

Здравствуйте, подскажите, как парсить каталог, у которого разная вложенность карточек товаров? Например, одна категория находится catalog/dvs, другая catalog/hodovka/kolesa, и т.п.

Читать еще:  Бесплатный плагин для excel

Азамат, значит, сработала защита сайта.
Нужно настраивать решение капчи, или использовать прокси серверы.
В справке по программе написано и про одно и про другое.

Не загружает исходный код, выдает:
«Мы заметили подозрительную активность с вашего IP адреса.Чтобы подтвердить, что вы не робот, пожалуйста. «

Спасибо! Действительно ссылки дублируются, одна находится в названии товара, вторая в его каталожном номере. Проблема в том, что эти ссылки находятся в одном блоке, с одинаковыми тэгами, отличаются только анкорами. Как можно реализвать удаление (не обработку) дублей? Или, чтоб как то парсер брал ссылки через 1 в пейджере?
Еще раз спасибо)

Илья, в списке товаров (в разделах сайта) ссылки на товары дублируются (одна и та же ссылка в 2 экземплярах, — на названии товара, и на фото товара).
Надо брать только одну ссылку из каждого результата поиска, а вы берёте все.
Перенастроить легко.

Здравстуйте! Подскажите пожалуйста, в чем может быть проблема, настроил парсер, всё хорошо, но все позиции почему-то выводятся с дублями, т.е. сразу по 2 товара. В какую сторону копать? Спасибо)

Александр, на разных компьютерах съемному диску могут назначаться разные буквы.
Если не получается, сохраняйте в другую папку (например, на рабочем столе, — там точно проблем с доступом не будет)

Здравствуйте!
На одном из компьютеров перестали загружаться картинки с сайта, хотя папки для них парсер создает нормально. Пишет, что «Ошибка скачивания файла (попыток: 2)Не удалось скачать файл по ссылке: https://www.PPP.com/PPP.jpg Путь к создаваемому файлу: V:PPPIMG6705_4.jpg»
На другом компьютере этот же файл и диск (переносной HDD) отрабатывают загрузку как положено. Подскажите в каком направлении копать. Доступы к папкам я уже дал максимальные.

Здравсвуйте, нет кнопки создать подуровень

Дима, попробуйте указать префикс пейджера /#
Ну либо можно другими способами получить список ссылок на страницы результатов.
Один из вариантов:
https://excelvba.ru/programmes/Parser/manuals/setting/procedure/pager/en.
Другие варианты можете поискать в комментариях к справке по этому действию:
https://excelvba.ru/programmes/Parser/actions/GetPagerLinks

Привет! Подскажите пожалуйста, если при настройке парсера в момент настройки «Пейджера», на сайте с которого я буду парсить, нет определяющего «суффикса». На вашем видео есть пример /_ofset_60html, у моего же сайта «суфикса» нет, phones/apple/3, phones/apple/4, phones/apple/5. Надеюсь понятно написал. Что мне делать в таком случае, что бы продолжить настройку парсера успешно?

Игорь, от того и не напоминал, что думал у вас и так голова забита, что в первую очередь сделать, что в третью, и элементарно не хотел быть назойливым, да и ваш ответ на мой взгляд звучал весьма не двусмысленно именно исходя из того, что последующие вопросы по функционалу имели весьма четкий ответ, что о подобном никто не просил, раз не просил и сам автор не видит нужды, то очевидно: нужно-реализую. Платите. А раз относительно указанной функции было вполне ясное «но могу добавить в следующих версиях программы». а теперь оказывается, что и не «обещал», да и не нужна и снова платите. в таком случае спасибо, поищу этот макрос на три строки. Я не против платить, но простите не на каждый «чих». Не скажу что в безумные деньги выливается лично мое пользование программой, но потихоньку политика именно платы за каждый чих уже немного отталкивает. Нет, я все понимаю, время деньги, труд деньги, и все из этой области. Я даже как то смирился, без смены ПК а лишь переустановка Винды и снова деньги. но спасибо нет, значит обойдусь. И впредь воздержусь от вопросов и просьб.

Parse HTML in Excel VBA – Learn by parsing hacker news home page

Why parse HTML in Excel VBA? There may be different cases where we need to parse HTML in Excel. Few cases are generating multiple HTML files based on excel data, editing multiple HTML files, scraping some data etc.

I’m using Hacker News homepage for this example where we parse all the posts from homepage. Of course, Hacker News has its own API which can be used to pull latest topics but this example is just to learn how to parse HTML.

Why Hacker News? Because everyone knows Hacker News!

Final output looks like image below.

Getting started

  1. Microsoft HTML object library is used in parsing HTML.

Open script editor in excel (alt + f11) and add a reference to Microsoft HTML object library (Tools > references > select)

A few basics first and then dive into code!

Defining and setting HTML

HTML object can be defined using :

HTML can be set to this object using this syntax :

Useful methods and properties

There are many methods and properties of HTML object and elements. You can have a look at all the methods using autocomplete but most useful methods are properties are as follows:

Steps

First, we pull Hacker News homepage by making a basic HTTP GET request. Read more about HTTP requests here – Http requests in Excel VBA

Set HTTP response to our HTML object.

Get all the latest topics using getElementsByClass method

Loop through each topic, parse each topic’s title, link, upvotes and username using different methods.

Enter all parsed values to sheet 1

Complete Code

Have a look at the code first.

When I say topics, I mean posts.

Code Explanation

  1. First we define all the required objects like HTMLDocument , MSXML2.XMLHTTP

Topics object to store topics which will be used to loop. I’ve defined few other objects like titleElem and detailsElem to make code readable.

get homepage and set its HTML to our HTML object in line 7

Now we have to get all the topic elements. We have to identify those elements to get them. In this htmlpage, all topic elements have a class named athing so we can use getElementsByClassName method to get those elements.

How to identify elements? By viewing page source or inspecting element in chrome (right click on element > inspect)

In line 8, We get all the topics using getElementsByClassName method by specifying the class name athing . Next we loop through all the topics using a For loop

All the topics are in a table element and each topic is a tr element (row) and topic’s details are in the next tr element. Each row has sub-parts : td elements which have the content like topic name, domain name, upvotes, username etc.

    Topic title and domain are in the third td element so we get it using getElementsByTagName(«td»)(2) (Index starts at 0). Topic name and link is in another a element so we get it using getElementsByTagName(«a»)(0) and enter its values in sheet 1

Topic details like upvotes and username are in the next element to topic element so we get it using NextSibling method. Get upvotes and username which are in span and a elements and enter in sheet 1.

Integer i is used to store row number which starts at 2 and increments with every topic.

Wrapping up

HTML Elements can also be defined as HTMLBaseElement for auto completion.

There are many ways of identifying an element in HTML. Using ID, Class name, Tag name etc. XPath can also be using to identify element but VBA doesn’t have built-in support for XPath. Here’s a custom function to identify elements using XPath.

Читать еще:  Линия тренда в excel 2003

If you have any questions or feedback, comment below.

Парсинг JSON в Excel VBA

У меня та же проблема, что и в Excel VBA: проанализирован JSON объектный цикл , но не может найти никакого решения. Мой JSON имеет вложенные объекты, поэтому предлагаемые решения, такие как VBJSON и vba-json, не работают для меня. Я также исправил один из них, чтобы работать должным образом, но результатом было переполнение стека вызовов из-за многих рекурсий функции doProcess.

Лучшим решением, по-видимому, является функция jsonDecode, показанная в исходном сообщении. Это очень быстро и очень эффективно эффективно; моя объектная структура-это все, что есть в универсальном объекте VBA типа JScriptTypeInfo.

Проблема на данном этапе заключается в том, что я не могу определить, какова будет структура объектов, поэтому я не знаю заранее ключи, которые будут находиться в каждом универсальном объекте. Мне нужно пройти через общий объект VBA, чтобы получить keys/properties.

Если бы моя функция разбора javascript могла вызвать функцию VBA или sub, это было бы отлично.

9 Ответов

Если вы хотите построить поверх ScriptControl , вы можете добавить несколько вспомогательных методов, чтобы получить необходимую информацию. Объект JScriptTypeInfo немного неудачен: он содержит всю необходимую информацию (как вы можете видеть в окне часов ), но кажется, что его невозможно получить с помощью VBA. Однако движок Javascript может нам помочь:

  • Если экземпляр JScriptTypeInfo ссылается на объект Javascript, то For Each . Next не будет работать. Однако он работает, если ссылается на массив Javascript (см. функцию GetKeys ).
  • Свойства доступа, имя которых известно только во время выполнения, используют функции GetProperty и GetObjectProperty .
  • Массив Javascript предоставляет свойства length , 0 , Item 0 , 1 , Item 1 и т.д. С обозначением точки VBA ( jsonObject.property )доступно только свойство length и только при объявлении переменной с именем length со всеми строчными буквами. В противном случае дело не совпадает, и он не найдет его. Остальные свойства недопустимы в VBA. Поэтому лучше использовать функцию GetProperty .
  • Код использует раннее связывание. Поэтому вы должны добавить ссылку на «Microsoft Script Control 1.0».
  • Вы должны вызвать InitScriptEngine один раз, прежде чем использовать другие функции для выполнения некоторой базовой инициализации.

Вот еще один метод для разбора JSON в VBA, основанный на ScriptControl ActiveX, без внешних библиотек:

UPDATE

Обратите внимание, что описанный выше подход делает систему уязвимой в некоторых случаях, так как он позволяет прямой доступ к дискам (и другим вещам) для вредоносного кода JS через ActiveX. предположим, вы анализируете ответ веб-сервера JSON, как JsonString = «)()>» . Оценив его, вы найдете новый созданный файл C:Test.txt . Так что разбор JSON с ScriptControl ActiveX-это не очень хорошая идея.

Пытаясь избежать этого, я создал парсер JSON на основе RegEx. объекты <> представлены словарями, что позволяет использовать свойства и методы словаря: .Count , .Exists() , .Item() , .Items , .Keys . Массивы [] -это обычные нулевые массивы VB, поэтому UBound() показывает количество элементов. Вот код с некоторыми примерами использования:

Проверьте VBA-JSON-parser на GitHub для последней версии (импорт модуля JSON.bas в проект VBA для обработки JSON).

Еще одна возможность этого парсера JSON RegEx заключается в том, что он работает на 64-битном Office, где ScriptControl недоступен.

Обновление 2

Однако если вы хотите проанализировать JSON на 64-битном Office с ScriptControl , то этот ответ может помочь вам заставить его работать.

Более простым способом вы можете перейти array.myitem(0) в VB код

Используйте объект ‘this’ в js

Тогда вы можете пойти array.myitem(0)

Поскольку Json — это не что иное, как строки, поэтому его можно легко обрабатывать, если мы сможем правильно манипулировать им, независимо от того, насколько сложна структура. Я не думаю, что для этого нужно использовать какую-либо внешнюю библиотеку или конвертер. Вот пример, где я проанализировал данные json с помощью строковых манипуляций.

Большое спасибо Кодо.

Я только что обновил и завершил то, что вы сделали, чтобы :

    сериализуйте json (мне это нужно, чтобы ввести json в текстовый документ)

добавить, удалить и обновить узел (кто знает)

Microsoft: потому что VBScript является подмножеством Visual Basic для Приложения.

Приведенный ниже код является производным от сообщения Codo, если его также полезно иметь в форме класса и использовать как VBScript :

Еще один парсер Regex на основе JSON (только декодирование)

Два небольших вклада в ответ Кодо:

Так что теперь я могу делать такие вещи как:

Это работает для меня под Excel и большой JSON файлов, используя JSON запрос переведен в родной форме. https://github.com/VBA-tools/VBA-JSON я могу разобрать узел типа » item.something » и получить значение с помощью простой команды:

А что тут хорошего?

Похожие вопросы:

Мне нужно преобразовать данные из таблицы excel с примерно двадцатью столбцами и большим количеством строк в json. Я не нашел короткого примера кода для этой цели в vba. Я нашел этот.

У меня есть следующий массив json, к которому вы можете легко получить доступ на следующем url: https://crowdfluttr.firebaseio.com/test/array.json Он имеет следующий выход.

Я хочу проанализировать котировки акций от Robin Hood API через Excel VBA. Скажем, я хочу Amazon, то есть https://api.robinhood.com/quotes/?symbols=AMZN . Производящий: < results:[ <.

Я пытаюсь проанализировать данные JSON с веб-сайта. Я успешно получаю строку JSON,но не могу ее разобрать. В приведенном ниже коде возникает исключение: Ошибка Выполнения 424. Требуется Объект Это.

В чем преимущество и недостаток парсинга json? Почему разработчики предпочитают использовать парсинг json вместо xml?

Я знаю, что подобный вопрос уже задавался и отвечал на него несколько раз: Парсинг JSON в Excel VBA , Excel VBA: Проанализирован JSON Объектный Цикл Однако вышеприведенное решение не работает, если.

отвечая на мой собственный вопрос здесь. Я проделал некоторую работу с JSON в Excel VBA и много выводов для публикации, которые я сделаю в формате Q & A.

В Примере below. Looping через объект из проанализированной строки JSON возвращает ошибку Object doesn’t support this property or method. Может ли кто-нибудь посоветовать, как это сделать? Очень.

отвечая на мой собственный вопрос здесь. Я проделал некоторую работу с JSON в Excel VBA и много выводов для публикации, которые я сделаю в формате Q & A.

отвечая здесь на мой собственный вопрос. Я проделал некоторую работу с JSON в Excel VBA и много выводов для публикации, которые я сделаю в формате Q & A.

Парсер Выдачи Яндекса С Поиском Почты Vba Excel

Длительность: 56 сек

Cлушайте онлайн и cкачивайте песню Парсер Выдачи Яндекса С Поиском Почты Vba Excel размером 1.23 MB и длительностью 56 сек в формате mp3.

Похожие песни

Автоматический Импорт Данных С Сайтов В Excel

Работа С Интернетом Через Vba Excel

Руслан Щербаков kursoft ru

Get Web Page Data Into Excel Using Vba

Automate Internet Explorer With Excel Vba Part 2

Automate Copying Of Column Data From Sheet To Sheet Using Excel Vba

Программирование Макросов На Vba В Excel

Excel Импорт Данных Из Internet

Scraping Webpage Tables Data Using Vba

Excel 2010 Vba Tutorial 32 Passing Multiple Variables

Automated Data Scraping From Websites Into Excel

Using Excel And Vba To Get Api Data

Читать еще:  Поле имени в excel

Bane Data Solutions Ltd

Создание Сводной Таблицы В Excel

Jira Rest Api Tutorial Parse Json Data With Excel Vba

Самоучитель Vba Excel 2013 2016 Для Чайников Базовый Курс 32 Урока Урок 1

Skill.im — качественные видеокурсы

Excel Vba Pull Data From A Website

Excel Vba Easily Parse Xml Data From A File Or Website Using Xml Maps

Excel Vba Introduction Part 47 1 Browsing To Websites And Scraping A Web Page

5 Простых Вариантов Как Удалить Пустые Строки В Excel

Гиперссылка В Excel

Как Удалить Пустые Строки В Excel

Слушают

Zahiriddin Muhammad Bobur Заҳириддин Муҳаммад Бобур Mp4

Rolling Sky Reggae Nights Mental Parties Re Skinned Versions Shavibe

Bad Karma Bass Boosted

Қыдыр Атаның Батасы

Tiësto And Sevenn Tiësto And Sevenn Boom Remix Мощные Басы 2018 Boom Remix Мощные Басы 2018

Ay Sev Acherov Aghchik Bartev 2017

Ateez 으르렁 Growl Performance Video

Pearland Tx Lady Gets Her First Chiropractic Adjustment At Advanced Chiropractic Relief

Истории На Ночь Несчастливый Брак

Апакем Ар Бир Тилегим Айласын Тапкан Тун Бою Уктабай Тербете Жаткан Бейишим Озунсун Асылым Апам

Михаил Фейман Рахманинов Вокализ

Long John Baldry K Mcdonald Loving Feeling

Natalie Taylor In The Air Tonight Lyrics

Шахриёр Хаста Бўлма Юлдуз Усмонова Совғаси

Sog Ingan Qizim

Чехов Толстый И Тонкий

სოსო მიქელაძე ახალი სიმღერა

Yasuha Flyday Chinatown

Жития Иоанн Креститель

Atabay Çarygulyýew Işanym

Аудикнига Исповедь Матери Бывшего Наркомана

Sea Of Sand March Bbc Concert Orchestra Rumon Gamba

Aåÿk Laftan Anlamaz Hayat Murat Klip Sokak Lambasä

Growth Ray Muscle Growth

Жарқын Мырзатаи Алланың 99 Есімі Жаңа Уағыз 2019

Бала Тәрбиесі Туралы Ролик

東方ボーカル サヨナラダイアリー Their Whereabouts 凋叶棕

John Gibbons Suite In C Major Z 665 Ii Almond

Captain From Castile Charles Gerhardt National Philharmonic Orchestra

Как средствами VBA переименовать/переместить/скопировать файл

В этой статье я хотел бы рассказать как средствами VBA переименовать, переместить или скопировать файл. В принципе методы переименования, перемещения и копирования, так сказать, встроены в VBA. Это значит что можно без вызова сторонних объектов переименовать, переместить или копировать любой файл. Все это делается при помощи всего двух команд: FileCopy и Name [Исходный файл] As [Новый файл] . Притом команда FileCopy выполняет только копирование, а Name [Исходный файл] As [Новый файл] — как переименование, так и перемещение. Разница лишь в том, что при переименовании мы указываем только новое имя файла, а при перемещении — другую директорию(папку), в которую следует переместить файл. И в дополнение я приведу пример удаления файла. Теперь можно рассмотреть несложные примеры использования этих команд:

Sub Copy_File() Dim sFileName As String, sNewFileName As String sFileName = «C:WWW.xls» ‘имя файла для копирования sNewFileName = «D:WWW.xls» ‘имя копируемого файла. Директория(в данном случае диск D) должна существовать If Dir(sFileName, 16) = «» Then MsgBox «Нет такого файла», vbCritical, «Ошибка»: Exit Sub FileCopy sFileName, sNewFileName ‘копируем файл MsgBox «Файл скопирован», vbInformation, «www.excel-vba.ru» End Sub

Sub Move_File() Dim sFileName As String, sNewFileName As String sFileName = «C:WWW.xls» ‘имя исходного файла sNewFileName = «D:WWW.xls» ‘имя файла для перемещения. Директория(в данном случае диск D) должна существовать If Dir(sFileName, 16) = «» Then MsgBox «Нет такого файла», vbCritical, «Ошибка»: Exit Sub Name sFileName As sNewFileName ‘перемещаем файл MsgBox «Файл перемещен», vbInformation, «www.excel-vba.ru» End Sub

Sub Rename_File() Dim sFileName As String, sNewFileName As String sFileName = «C:WWW.xls» ‘имя исходного файла sNewFileName = «C:WWW1.xls» ‘имя файла для переименования If Dir(sFileName, 16) = «» Then MsgBox «Нет такого файла», vbCritical, «Ошибка»: Exit Sub Name sFileName As sNewFileName ‘переименовываем файл MsgBox «Файл переименован», vbInformation, «www.excel-vba.ru» End Sub

Sub Delete_File() Dim sFileName As String sFileName = «C:WWW.xls» ‘имя файла для удаления If Dir(sFileName, 16) = «» Then MsgBox «Нет такого файла», vbCritical, «Ошибка»: Exit Sub Kill sFileName ‘удаляем файл MsgBox «Файл удален», vbInformation, «www.excel-vba.ru» End Sub

Вот так. Вроде ничего сложного.

Так же я хотел бы описать как можно проделать те же операции с файлами при помощи объекта FileSystemObject. Строк кода несколько больше и выполняться операции будут медленнее(хотя вряд ли это будет заметно на примере одного файла). Но раз начал разбирать эту тему — решил показать и эти методы. Прежде всего следует, я думаю, пояснить что за зверь такой — FileSystemObject.
FileSystemObject (FSO) — содержится в библиотеке типов Scripting, расположенной в файле библиотеки scrrun.dll. Объектная модель FSO дает возможность создавать, изменять, перемещать и удалять папки и файлы, собирать о них различную информацию: имена, атрибуты, даты создания или изменения и т.д. Чтобы работать с FSO необходимо создать переменную со ссылкой на объект библиотеки. Сделать это можно двумя способами: через ранее связывание и позднее. Я не буду сейчас вдаваться в подробности этих методов — тема довольно обширная и я опишу её в другой статье.
Ранее связывание: для начала необходимо подключить библиотеку Microsoft Scripting Runtime. Делается это в редакторе VBA: References-находите там Microsoft Scripting Runtime и подключаете. Объявлять переменную FSO при раннем связывании следует так:

Dim objFSO As New FileSystemObject

Плюсы раннего связывания: с помощью Object Browser можно просмотреть список объектов, свойств, методов, событий и констант, включенных в FSO. Но есть значительный минус: если планируется использовать программу на нескольких компьютерах, то есть большая вероятность получить ошибку(читать подробнее).
Позднее связывание: ничего нигде не надо подключать, а просто используем метод CreateObject(именно этот способ используется мной в примерах ниже). Методы таким образом просмотреть не получится, но зато работать будет без проблем на любых компьютерах без дополнительных действий.

Sub Copy_File() Dim objFSO As Object, objFile As Object Dim sFileName As String, sNewFileName As String sFileName = «C:WWW.xls» ‘имя исходного файла sNewFileName = «D:WWW.xls» ‘имя файла для переименования If Dir(sFileName, 16) = «» Then MsgBox «Нет такого файла», vbCritical, «Ошибка»: Exit Sub ‘копируем файл Set objFSO = CreateObject(«Scripting.FileSystemObject») Set objFile = objFSO.GetFile(sFileName) objFile.Copy sNewFileName MsgBox «Файл скопирован», vbInformation, «www.excel-vba.ru» End Sub

Sub Move_File() Dim objFSO As Object, objFile As Object Dim sFileName As String, sNewFileName As String sFileName = «C:WWW.xls» ‘имя исходного файла sNewFileName = «D:WWW.xls» ‘имя файла для переименования If Dir(sFileName, 16) = «» Then MsgBox «Нет такого файла», vbCritical, «Ошибка»: Exit Sub ‘перемещаем файл Set objFSO = CreateObject(«Scripting.FileSystemObject») Set objFile = objFSO.GetFile(sFileName) objFile.Move sNewFileName MsgBox «Файл перемещен», vbInformation, «www.excel-vba.ru» End Sub

Sub Rename_File() Dim objFSO As Object, objFile As Object Dim sFileName As String, sNewFileName As String sFileName = «C:WWW.xls» ‘имя исходного файла sNewFileName = «WWW1.xls» ‘имя файла для переименования If Dir(sFileName, 16) = «» Then MsgBox «Нет такого файла», vbCritical, «Ошибка»: Exit Sub ‘переименовываем файл Set objFSO = CreateObject(«Scripting.FileSystemObject») Set objFile = objFSO.GetFile(sFileName) objFile.Name = sNewFileName MsgBox «Файл переименован», vbInformation, «www.excel-vba.ru» End Sub

Хочу обратить внимание, что при переименовании файла через FileSystemObject необходимо указать только имя нового файла — путь указывать не надо. Иначе получите ошибку.

Sub Delete_File() Dim objFSO As Object, objFile As Object Dim sFileName As String sFileName = «C:WWW.xls» ‘имя файла для удаления If Dir(sFileName, 16) = «» Then MsgBox «Нет такого файла», vbCritical, «Ошибка»: Exit Sub ‘удаляем файл Set objFSO = CreateObject(«Scripting.FileSystemObject») Set objFile = objFSO.GetFile(sFileName) objFile.Delete MsgBox «Файл удален», vbInformation, «www.excel-vba.ru» End Sub

Вот теперь вроде бы все.

Статья помогла? Поделись ссылкой с друзьями!

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