Страницы: 1
RSS
Импорт содержимого группы файлов TXT на Листы Excel
 
Добрый день!
Прилагаю рабочий код, с помощью которого копируется содержимое файлов TXT в отдельные файлы Excel. Помогите, пожалуйста, доработать код, чтобы содержимое каждого выбранного текстового файла размещалось на отдельный Лист активной Книги, а имя новых Листов совпадало с именем файла TXT, откуда копируются данные.

Код
Option Explicit
Public Sub Alltext_to_exell()
    Dim oFD As FileDialog
    Dim x, lf As Long
Application.DisplayAlerts = 0
    'назначаем переменной ссылку на экземпляр диалога
    Set oFD = Application.FileDialog(msoFileDialogFilePicker)
    With oFD 'используем короткое обращение к объекту
    'With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True 'мультивыбор
        .Title = "Выбрать TXT-профили" 'заголовок окна диалога
        .Filters.Clear 'очищаем установленные ранее типы файлов
        .Filters.Add "Text files", "*.txt", 1 'добавляем возможность выбора текстовых файлов
        '.Filters.Add "Excel files", "*.xls*;*.xlsx", 2 'устанавливаем возможность выбора только файлов Excel
        .FilterIndex = 1 'устанавливаем тип файлов по умолчанию
        .InitialFileName = ThisWorkbook.Path & "\" 'назначаем папку отображения и имя файла по умолчанию
        .InitialView = msoFileDialogViewDetails 'вид диалогового окна
        If .Show = 0 Then Exit Sub 'показывает диалог
        'цикл по коллекции выбранных в диалоге файлов
        For lf = 1 To .SelectedItems.Count
            x = .SelectedItems(lf) 'считываем полный путь к файлу
            Workbooks.Open x 'открытие книги
        Next
    End With
Application.DisplayAlerts = -1
End Sub
 
Цитата
aesp написал:
с помощью которого копируется содержимое файлов TXT в отдельные файлы Excel
в приложенном коде ничего никуда не копируется - просто открывается книга(даже не текстовый файл). Поэтому по факту нечего дорабатывать.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, очень странно.. У меня работает : открывается диалог выбора текстовых файлов, выбираю два файла из каталога  и их содержимое вставляется в две новые книги.. Имена созданных книг совпадает с именами соответствующих текстовых файлов. Сейчас перепроверил, работает!
 
Цитата
aesp написал:
У меня работает
Если для вас понятия "открыть текстовый файл с помощью Excel", и "копировать данные" являются синонимами, то, тогда, конечно... Но для Excel, как и для всех остальных, они таковыми не являются.
Поэтому см. #2.
 
RAN, согласитесь, к сожалению, "умников" всегда больше, чем готовых поделиться умением...  Если бы был асом, как, наверное, Вы, не обращался бы на форум. Код, указанный выше, не моего авторства, а результат его выполнения вполне устраивает, за исключением того, о чём прошу помощи..
 
Цитата
aesp написал:
"умников" всегда больше, чем готовых поделиться умением
а вот так делать не надо. Вам здесь никто ничего не должен. Все делается по желанию. У меня после таких вот высказываний от участников напрочь пропадает желание им помогать(особенно учитывая тот факт, что даже код из первого сообщения и тот из моей статьи взят).
Пользуйтесь:
Код
Option Explicit

Public Sub Alltext_to_exell()
    Dim oFD As FileDialog
    Dim x, lf As Long
    Dim wb As Workbook, wbRes As Workbook
    
    Set wbRes = Workbooks.Add(xlWBATWorksheet)
    Application.DisplayAlerts = 0
    'назначаем переменной ссылку на экземпляр диалога
    Set oFD = Application.FileDialog(msoFileDialogFilePicker)
    With oFD 'используем короткое обращение к объекту
    'With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True 'мультивыбор
        .Title = "Выбрать TXT-профили" 'заголовок окна диалога
        .Filters.Clear 'очищаем установленные ранее типы файлов
        .Filters.Add "Text files", "*.txt", 1 'добавляем возможность выбора текстовых файлов
        '.Filters.Add "Excel files", "*.xls*;*.xlsx", 2 'устанавливаем возможность выбора только файлов Excel
        .FilterIndex = 1 'устанавливаем тип файлов по умолчанию
        .InitialFileName = ThisWorkbook.Path & "\" 'назначаем папку отображения и имя файла по умолчанию
        .InitialView = msoFileDialogViewDetails 'вид диалогового окна
        If .Show = 0 Then Exit Sub 'показывает диалог
        'цикл по коллекции выбранных в диалоге файлов
        For lf = 1 To .SelectedItems.Count
            x = .SelectedItems(lf) 'считываем полный путь к файлу
            Set wb = Workbooks.Open(x) 'открытие книги
            wb.Sheets(1).Move after:=wbRes.Sheets(wbRes.Sheets.Count)
        Next
    End With
    If wbRes.Sheets.Count > 1 Then
        wbRes.Sheets(1).Delete
    End If
Application.DisplayAlerts = -1
End Sub


Цитата
aesp написал:
Если бы был асом
Вы им никогда не станете, если будете каждый раз при любой возможности просить на форуме доработать Вам код, не пытаясь сделать это самостоятельно.
Изменено: Дмитрий(The_Prist) Щербаков - 28.11.2020 13:02:06
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
aesp написал:
их содержимое вставляется в две новые книги.. Имена созданных книг совпадает с именами соответствующих текстовых файлов
aesp, а Вы ТОЧНОГО говорите про код, который показан в  стартовом сообщении? В какой строке кода происходит присвоение новой книге имени и её сохранение?
 
Цитата
Юрий М написал:
В какой строке кода происходит присвоение новой книге имени и её сохранение?
Юра, про сохранение там речи-то не шло. А открываются файлы действительно под своими именами(даже расширение у них в заголовке txt).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Юрий М, не ведомым мне способом)) Но факт!
 
Дмитрий(The_Prist) Щербаков, благодарю за помощь!
Цитата
Дмитрий(The_Prist) Щербаков написал:
а вот так делать не надо.
- не согласен..
Цитата
Дмитрий(The_Prist) Щербаков написал:
Вам здесь никто ничего не должен.
-АБСОЛЮТНО с Вами согласен.
Цитата
Дмитрий(The_Prist) Щербаков написал:
каждый раз при любой возможности просить на форуме доработать Вам код, не пытаясь сделать это самостоятельно.
- категорически не согласен.
Ну да ладно! За усилия и терпение благодарю ещё раз!
Тема закрыта)
 
aesp, солидарен с Дмитрием: слово "умник" в данном случае приобретает негативный смысл. Избегайте такого общения - Вам просто перестанут помогать. И абсолютно не важно, согласны Вы с этим или нет. Просто перестанут, и всё.
 
Юрий М, учту.
Страницы: 1
Наверх