Страницы: 1 2 След.
RSS
Открыть все файлы в папке, скопировать содержимое и вставить в активную книгу
 

Друзья, добрый день.

Помогите пожалуйста доработать макрос.

На текущий момент он работает неправильно.

Задача следующая:

1. Необходимо по очереди открыть все файлы в папке с разрешением html. В папке будет много файлов с разными названиями

2. Скопировать содержимое каждого отдельного файла html

3. Создать вкладку в файле «Макрос» и вставить содержимое html в отдельную вкладку

3. Закрыть файлы с разрешением html.

Изменено: Maksimelyan - 05.08.2018 08:09:29
 
См. вариант: макрос.
Используйте свою папку с файлами html!
Изменено: Мотя - 05.08.2018 22:14:10
 
Код
Sub Макрос1()
    Dim sFolder As String, sFiles As String, wb As Workbook
    'диалог запроса выбора папки с файлами
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub
        sFolder = .SelectedItems(1)
    End With
    sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
    'отключаем обновление экрана, чтобы наши действия не мелькали
    Application.ScreenUpdating = False
    'отключаю появление всплывающего окна
    Application.DisplayAlerts = False
    sFiles = Dir(sFolder & "*.html*")
    Do While sFiles <> ""
        'открываем книгу
        Set wb = Workbooks.Open(sFolder & sFiles)
        wb.Sheets(1).Copy after:=ThisWorkbook.Sheets(Sheets.Count)
        wb.Close False
        sFiles = Dir
    Loop
    'возвращаем ранее отключенное обновление экрана
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
 
RAN,Спасибо,супер  Ваш вариант работает. Небольшое уточнение, а можно сделать так чтоб информация копировалась как значения?
 
Мотя, у меня выдаёт ошибку. НАзвание папки имеет значение?
 
Цитата
Maksimelyan написал:
НАзвание папки имеет значение?
Разумеется, НЕТ!  :D
А вот имя файлов html - ДА!
Я попробовала ввести - 45_12345678912345678999999999999.html - получила Вашу ошибку!
Рекомендую внимательно прочесть текст про Вашу ошибку - мое название > 31 символа.
Проверяйте свои названия.  :D  
 
Цитата
Maksimelyan написал:
Небольшое уточнение, а можно сделать так чтоб информация копировалась как значения?
Разумеется, можно!
Но информация в этом варианте выглядит "очень криво"!  :D
Замените:
Код
      Cells.Select
      ActiveSheet.Paste
на:
Код
    Cells.Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Изменено: Мотя - 06.08.2018 08:34:18
 
По моему в файле Мотя, в папке должны содержаться только файлы "HTML", потому, что массив обрабатывает все файлы в папке независимо от расширения. Хотя навряд ли в этом ошибка. Уважаемая Мотя, позвольте полюбопытствовать, почему Вы в макросах упорно продолжаете использовать "Select" и "Activate",хотя не раз на форуме упоминалось о вреде использования данных методов?
Изменено: Nordheim - 06.08.2018 09:09:22
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
"Select" и "Activate",хотя не раз на форуме упоминалось о вреде использования данных методов?
А можно ссылочку на обсуждения? Буду повышать свой уровень знаний. :)
 
Цитата
Dost1369 написал:
А можно ссылочку
Select и Activate - зачем нужны и нужны ли?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, спасибо.  
 
Цитата
Nordheim написал:
позвольте полюбопытствовать, почему Вы в макросах упорно продолжаете использовать "Select" и "Activate",хотя не раз на форуме упоминалось о вреде использования данных методов?
Уважаемый Nordheim!
Специально для Вас:
1. Я - НЕ ПРОФЕССИОНАЛ!
2. К программированию не имею никакого отношения!
3. Макросы пишу НАИТРИВИАЛЬНЕЙШИЕ: "Select" и "Activate" мне абсолютно не мешают!  :D

С уважением, Мотя.
 
Цитата
Мотя написал:
"Select" и "Activate" мне абсолютно не мешают!
Но Вы же показываете плохой пример другим )
 
Мотя, Разобрался, действительно файлы переименовал и файл с макросом убрал из папки где лежат html. Все сработало.

извините что напрягаю, но хорошая мысля приходит опосля, и у меня такой вопрос.

1. Как прописать вариант чтобы не нужно было выбирать папку а положил в папку с файлами и обработка шла в этой папке?

2. Как прописать вариант чтобы макрос при выборе основной папке обрабатывал файлы которые лежат в отдельных папках основной папки.
Изменено: Maksimelyan - 06.08.2018 21:57:55
 
Цитата
Мотя написал:
3. Макросы пишу НАИТРИВИАЛЬНЕЙШИЕ: "Select" и "Activate" мне абсолютно не мешают!  
На счет "Тривиальности" можно поспорить, у вас настолько оригинальные макросы, что  ходу сложно понять что откуда берется   :D .
И только путем прогона через F8, и то не с первого раза  8)
К слову, макрос из сообщения №3 мне понятен, потому как не один раз по данному алгоритму сам писал такой код.
Изменено: Nordheim - 06.08.2018 21:43:31
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Maksimelyan написал:
Макрос обрабатывается но результата нет.((
Результат: вновь созданные листы (кроме листа "111") в файле Maksimelyan.xlsb с именами - Dir(FILE).  ;)  
 
Цитата
Мотя написал:
кроме листа "111"
Да,всё работает спасибо. Мотя а уточните какую роль играет вкладка 111 -она всегда должна быть?  
 
Цитата
Maksimelyan написал:
какую роль играет вкладка 111 -она всегда должна быть?
В книге должен быть хотя-бы 1 лист. Все остальное, связанное с 111 - от лукавого Моти
 
Цитата
Maksimelyan написал:
какую роль играет вкладка 111
Один лист в файле всегда должен присутствовать.
Если будете его переименовывать, то в макросе его тоже надо изменить:
Код
lst = "111"
 
Макрос я писала почти "от Балды", поэтому умнее "изменения" названия листа - не придумала!  :D  
 
RAN, уточните пожалуйста как в Вашем варианте прописать чтобы информация копировалась как значение?
Изменено: Maksimelyan - 06.08.2018 22:20:11
 
Цитата
Maksimelyan написал:
файл с макросом убрал из папки где лежат html
Макросный файл, по умолчанию, не должен лежать в папке html-файлов.
Правда, я забыла сразу об этом сказать... :)  
 
Цитата
Maksimelyan написал:
прописать чтобы информация копировалась как значение
Лично мне не удалось найти ни одной формулы.

Если я суслика не вижу, а он есть, его нужно показать.  :)
 
Цитата
Maksimelyan написал:
Как прописать вариант чтобы не нужно было выбирать папку а положил в папку с файлами и обработка шла в этой папке?
Для этого надо в макросе жестко задать имя этой папки: но это же неудобно!
А вдруг - чьи-то шаловливые ручки переименуют папку!  :D  
 
Цитата
Maksimelyan написал:
Как прописать вариант чтобы макрос при выборе основной папке обрабатывал файлы которые лежат в отдельных папках основной папки.
Над этим надо думать, а это иногда бывает - ОЧЕНЬ ЛЕНИВО...  :D
Для меня, будет сложновато: Я - не ПРОФЕССИОНАЛ!
 
Цитата
Мотя написал:
Для этого надо в макросе жестко задать имя этой папки: но это же неудобно!
Путь к папке в которой находится книга с макросом.
Код
ThisWorkbook.Path
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Maksimelyan написал:
2. Как прописать вариант чтобы макрос при выборе основной папке обрабатывал файлы которые лежат в отдельных папках основной папки.
Тут нужно воспользоваться FileSystemObject. но это уже совсем другая история. Хотя можно и через Dir
Изменено: Nordheim - 06.08.2018 22:29:43
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
RAN написал:
Лично мне не удалось найти ни одной формулы.
Формул действительно нет, но я потом планирую как раз использовать формулы ВПР для обработки данных и так как там есть ячейки объединенные и мне нужны от туда данные, то хотел чтобы информация была вставлена как значение
 
Цитата
Nordheim написал:
Хотя можно и через Dir
А это будет интересно.
 
Цитата
Мотя написал:
Для меня, будет сложновато: Я - не ПРОФЕССИОНАЛ!
Ваш Вариант работает,мне это было не под силу. Так что для меня Вы профессионал. Спасибо что уделили время, вы мне очень помогли.
Страницы: 1 2 След.
Читают тему
Наверх