Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Преобразование ТХТ в эксель - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Преобразование ТХТ в эксель
AleksN Дата: Понедельник, 06.02.2017, 11:55 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день.
Есть макрос, преобразует тхт файлы в эксель и сохраняет все на одном листе.
Но некоторые ячейки (цифры) не соответствуют тхт файлу, допустим должно быть 72,04, а в эксель выбирает 26244. не пойму в чем причина
[vba]
Код
Sub Consolidated_Range_of_TXTFiles()
    Dim iBeginRange As Object, lCalc As Long
    Dim sRngAddress As String, oAwb As String, sCopyAddress As String
    Dim lLastrow As Long, lLastRowMyBook As Long, li As Long, iLastColumn As Integer
    Dim wsDataSheet As Object, avFiles

    Set iBeginRange = Range("A1") 'если А1, то копирует данные  с тхт файла с 1-й строки
     avFiles = Application.GetOpenFilename("Text files(*.txt),*.txt", , "????? ??????", , True)
    If VarType(avFiles) = vbBoolean Then Exit Sub

    With Application
        lCalc = .Calculation
        .ScreenUpdating = False: .EnableEvents = False: .Calculation = xlManual
    End With
    ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
    Set wsDataSheet = ThisWorkbook.ActiveSheet
    For li = LBound(avFiles) To UBound(avFiles)
        
        Workbooks.OpenText Filename:=avFiles(li), Origin:=xlWindows, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
        , Space:=False, Other:=True, OtherChar:="|", FieldInfo:= _
        Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 2), Array(7 _
        , 4)), TrailingMinusNumbers:=True
        
        oAwb = Dir(avFiles(li), vbDirectory)
        lLastrow = Cells(1, 1).SpecialCells(xlLastCell).Row
        iLastColumn = Cells.SpecialCells(xlLastCell).Column
        sCopyAddress = Range(Cells(iBeginRange.Row, iBeginRange.Column), Cells(lLastrow, iLastColumn)).Address
        lLastRowMyBook = wsDataSheet.Cells.SpecialCells(xlLastCell).Row + 1
        sRngAddress = Range(Cells(lLastRowMyBook, 1), Cells(lLastRowMyBook + lLastrow, iLastColumn)).Address
        Range(sCopyAddress).Copy wsDataSheet.Range(sRngAddress)
        Workbooks(oAwb).Close False
    Next li
    With Application
        lCalc = .Calculation
        .ScreenUpdating = True: .EnableEvents = True: .Calculation = lCalc
    End With
[/vba]
Если бы неправильно код был, то все ячейки в столбце были бы одинаковые а так, выборочно
К сообщению приложен файл: 11.xlsx (16.4 Kb)
 
Ответить
СообщениеДобрый день.
Есть макрос, преобразует тхт файлы в эксель и сохраняет все на одном листе.
Но некоторые ячейки (цифры) не соответствуют тхт файлу, допустим должно быть 72,04, а в эксель выбирает 26244. не пойму в чем причина
[vba]
Код
Sub Consolidated_Range_of_TXTFiles()
    Dim iBeginRange As Object, lCalc As Long
    Dim sRngAddress As String, oAwb As String, sCopyAddress As String
    Dim lLastrow As Long, lLastRowMyBook As Long, li As Long, iLastColumn As Integer
    Dim wsDataSheet As Object, avFiles

    Set iBeginRange = Range("A1") 'если А1, то копирует данные  с тхт файла с 1-й строки
     avFiles = Application.GetOpenFilename("Text files(*.txt),*.txt", , "????? ??????", , True)
    If VarType(avFiles) = vbBoolean Then Exit Sub

    With Application
        lCalc = .Calculation
        .ScreenUpdating = False: .EnableEvents = False: .Calculation = xlManual
    End With
    ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
    Set wsDataSheet = ThisWorkbook.ActiveSheet
    For li = LBound(avFiles) To UBound(avFiles)
        
        Workbooks.OpenText Filename:=avFiles(li), Origin:=xlWindows, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
        , Space:=False, Other:=True, OtherChar:="|", FieldInfo:= _
        Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 2), Array(7 _
        , 4)), TrailingMinusNumbers:=True
        
        oAwb = Dir(avFiles(li), vbDirectory)
        lLastrow = Cells(1, 1).SpecialCells(xlLastCell).Row
        iLastColumn = Cells.SpecialCells(xlLastCell).Column
        sCopyAddress = Range(Cells(iBeginRange.Row, iBeginRange.Column), Cells(lLastrow, iLastColumn)).Address
        lLastRowMyBook = wsDataSheet.Cells.SpecialCells(xlLastCell).Row + 1
        sRngAddress = Range(Cells(lLastRowMyBook, 1), Cells(lLastRowMyBook + lLastrow, iLastColumn)).Address
        Range(sCopyAddress).Copy wsDataSheet.Range(sRngAddress)
        Workbooks(oAwb).Close False
    Next li
    With Application
        lCalc = .Calculation
        .ScreenUpdating = True: .EnableEvents = True: .Calculation = lCalc
    End With
[/vba]
Если бы неправильно код был, то все ячейки в столбце были бы одинаковые а так, выборочно

Автор - AleksN
Дата добавления - 06.02.2017 в 11:55
Manyasha Дата: Понедельник, 06.02.2017, 12:24 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
AleksN, покажите пример текстового файла. Можно не весь, а только пару строк, которые неправильно копируются в эксель.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеAleksN, покажите пример текстового файла. Можно не весь, а только пару строк, которые неправильно копируются в эксель.

Автор - Manyasha
Дата добавления - 06.02.2017 в 12:24
AleksN Дата: Понедельник, 06.02.2017, 12:29 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Да, пожалуйста
К сообщению приложен файл: 9463760.txt (1.1 Kb)
 
Ответить
СообщениеДа, пожалуйста

Автор - AleksN
Дата добавления - 06.02.2017 в 12:29
Manyasha Дата: Понедельник, 06.02.2017, 13:05 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
AleksN, проблема в параметре FieldInfo
[vba]
Код
        Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 2), Array(7 _
        , 4)), TrailingMinusNumbers:=True
[/vba]

Здесь Вы указываете в каком формате выгружать каждый из перечисленных столбцов.
6-й столбец у Вас выгружается, как текст, а 7-й - как дата. Поставьте для 7го столбца формат Общий (Array(7, 1)).

список форматов для столбцов: https://msdn.microsoft.com/en-us....5).aspx


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеAleksN, проблема в параметре FieldInfo
[vba]
Код
        Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 2), Array(7 _
        , 4)), TrailingMinusNumbers:=True
[/vba]

Здесь Вы указываете в каком формате выгружать каждый из перечисленных столбцов.
6-й столбец у Вас выгружается, как текст, а 7-й - как дата. Поставьте для 7го столбца формат Общий (Array(7, 1)).

список форматов для столбцов: https://msdn.microsoft.com/en-us....5).aspx

Автор - Manyasha
Дата добавления - 06.02.2017 в 13:05
AleksN Дата: Понедельник, 06.02.2017, 13:19 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо большое, Вам :)
 
Ответить
СообщениеСпасибо большое, Вам :)

Автор - AleksN
Дата добавления - 06.02.2017 в 13:19
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2026 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!