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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос экспорта данных в txt - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос экспорта данных в txt (Макросы/Sub)
Макрос экспорта данных в txt
Noober89 Дата: Среда, 10.08.2016, 09:01 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем доброго времени суток! Помогите пожалуйста написать макрос. Есть таблица с данными разного типа (числа, буквы). Нужен макрос, который проверял бы на соответствие нужные ячейки и при положительной проверке добавлял данные в создаваемый txt файл.
Многие примеры перелопатил но отредактировать до нужного результата пока не удается. Даже элементарный экспорт из одной ячейки в txt не знаю как написать, и найти не получается. Все, что нашел, это:

[vba]
Код
Sub ExportAsText()
Open "C:\primer.txt" For Output As #1
Print #1, Join(Application.Transpose([c7:d7].Value), vbLf)
Close #1
End Sub
[/vba]

Но почему то не работает...
В прикрепленных файлах примеры того, что есть и должно быть.
Надеюсь на отзывчивость и адекватность.
К сообщению приложен файл: 3366365.xlsx(9Kb) · ex1.txt(0Kb)
 
Ответить
СообщениеВсем доброго времени суток! Помогите пожалуйста написать макрос. Есть таблица с данными разного типа (числа, буквы). Нужен макрос, который проверял бы на соответствие нужные ячейки и при положительной проверке добавлял данные в создаваемый txt файл.
Многие примеры перелопатил но отредактировать до нужного результата пока не удается. Даже элементарный экспорт из одной ячейки в txt не знаю как написать, и найти не получается. Все, что нашел, это:

[vba]
Код
Sub ExportAsText()
Open "C:\primer.txt" For Output As #1
Print #1, Join(Application.Transpose([c7:d7].Value), vbLf)
Close #1
End Sub
[/vba]

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

Автор - Noober89
Дата добавления - 10.08.2016 в 09:01
SLAVICK Дата: Среда, 10.08.2016, 09:57 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 1836
Репутация: 613 ±
Замечаний: 0% ±

2007,2010,2013,2016
Надеюсь на отзывчивость и адекватность.

не уверен в своей адекватности :D , но давно использую для сохранения в тхт такую ЮДФку:
[vba]
Код
Function txt_write_from_ARR(m As Variant, Optional filename$)
Dim i#, ii#, s$, n&
m = m
n = FreeFile()
On Error GoTo er
If filename = "" Then filename = ActiveWorkbook.Path & "\file.csv"
Open filename For Output As #n
    For i = 1 To UBound(m)
    s = m(i, 1)
        For ii = 2 To UBound(m, 2)
            s = s & vbTab & m(i, ii)
        Next
        Print #n, s
            If i Mod 10000 = 0 Then
            DoEvents
            Application.StatusBar = Format(i / UBound(m), "0%") & ". " & i & " из " & UBound(m)
            End If
    Next
Close #1
Application.StatusBar = False
txt_write_from_ARR = True
Exit Function
er:
txt_write_from_ARR = False
End Function
[/vba]
К сообщению приложен файл: 3366365.xlsm(20Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
Надеюсь на отзывчивость и адекватность.

не уверен в своей адекватности :D , но давно использую для сохранения в тхт такую ЮДФку:
[vba]
Код
Function txt_write_from_ARR(m As Variant, Optional filename$)
Dim i#, ii#, s$, n&
m = m
n = FreeFile()
On Error GoTo er
If filename = "" Then filename = ActiveWorkbook.Path & "\file.csv"
Open filename For Output As #n
    For i = 1 To UBound(m)
    s = m(i, 1)
        For ii = 2 To UBound(m, 2)
            s = s & vbTab & m(i, ii)
        Next
        Print #n, s
            If i Mod 10000 = 0 Then
            DoEvents
            Application.StatusBar = Format(i / UBound(m), "0%") & ". " & i & " из " & UBound(m)
            End If
    Next
Close #1
Application.StatusBar = False
txt_write_from_ARR = True
Exit Function
er:
txt_write_from_ARR = False
End Function
[/vba]

Автор - SLAVICK
Дата добавления - 10.08.2016 в 09:57
Noober89 Дата: Среда, 10.08.2016, 12:21 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
не уверен в своей адекватности :D , но давно использую для сохранения в тхт такую ЮДФку:


Очень интересно! А у Вас исправно функционирует предоставленный Вами код? У меня при запуске ошибок не возникает, но файл остается так же пустым, как и раньше. Видимо что-то делаю не так...
 
Ответить
Сообщение
не уверен в своей адекватности :D , но давно использую для сохранения в тхт такую ЮДФку:


Очень интересно! А у Вас исправно функционирует предоставленный Вами код? У меня при запуске ошибок не возникает, но файл остается так же пустым, как и раньше. Видимо что-то делаю не так...

Автор - Noober89
Дата добавления - 10.08.2016 в 12:21
SLAVICK Дата: Среда, 10.08.2016, 12:28 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 1836
Репутация: 613 ±
Замечаний: 0% ±

2007,2010,2013,2016
Вы из моего файла запускали?
А перед нажатием на кнопку какие ячейки выделили?


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеВы из моего файла запускали?
А перед нажатием на кнопку какие ячейки выделили?

Автор - SLAVICK
Дата добавления - 10.08.2016 в 12:28
Noober89 Дата: Среда, 10.08.2016, 12:45 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Вы из моего файла запускали?
А перед нажатием на кнопку какие ячейки выделили?

Да, из вложенного файла. Разные диапазоны выделял (например B6:D6), и по одной ячейке тоже.
Возможно я запутал с этим примерным кодом, что в описании. Вообще нужно, чтобы макрос проходил по определенным ячейкам и проверял на соответствие, после чего исходя из проверки формировал файл в формате txt с содержанием, что во вложении. Допустим на каждую "АБВГ" приходится 3 "бвг" и 9 строк "ежз". Это неизменно. Этих АБВГ может быть несколько, и соответственно прямопропорционально увеличится количество остальных "бвг" и "ежз" строк. ДЕЖЗ тут лишнее.
Ох, такое страшное и запутанное описание, что боюсь тут мало кто разберется )))
 
Ответить
Сообщение
Вы из моего файла запускали?
А перед нажатием на кнопку какие ячейки выделили?

Да, из вложенного файла. Разные диапазоны выделял (например B6:D6), и по одной ячейке тоже.
Возможно я запутал с этим примерным кодом, что в описании. Вообще нужно, чтобы макрос проходил по определенным ячейкам и проверял на соответствие, после чего исходя из проверки формировал файл в формате txt с содержанием, что во вложении. Допустим на каждую "АБВГ" приходится 3 "бвг" и 9 строк "ежз". Это неизменно. Этих АБВГ может быть несколько, и соответственно прямопропорционально увеличится количество остальных "бвг" и "ежз" строк. ДЕЖЗ тут лишнее.
Ох, такое страшное и запутанное описание, что боюсь тут мало кто разберется )))

Автор - Noober89
Дата добавления - 10.08.2016 в 12:45
SLAVICK Дата: Среда, 10.08.2016, 13:03 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 1836
Репутация: 613 ±
Замечаний: 0% ±

2007,2010,2013,2016
Давайте постепенно:
Выделяйте B6:D6 и жмите кнопку.
Теперь смотрите файл "C:\primer.txt"
Если пусто, тогда:
вместо
[vba]
Код
Debug.Print
[/vba]
напишите:
[vba]
Код
MsgBox
[/vba]
Повторите действия - что выдаст в сообщении?
Если не выйдет - см. файл с примера - сделал экспорт [a1:h14]
Ох, такое страшное и запутанное описание, что боюсь тут мало кто разберется )))

Хорошо, что Вы сами это понимаете - пример нагляднее нужен.
К сообщению приложен файл: 3366365-3-.xlsm(20Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеДавайте постепенно:
Выделяйте B6:D6 и жмите кнопку.
Теперь смотрите файл "C:\primer.txt"
Если пусто, тогда:
вместо
[vba]
Код
Debug.Print
[/vba]
напишите:
[vba]
Код
MsgBox
[/vba]
Повторите действия - что выдаст в сообщении?
Если не выйдет - см. файл с примера - сделал экспорт [a1:h14]
Ох, такое страшное и запутанное описание, что боюсь тут мало кто разберется )))

Хорошо, что Вы сами это понимаете - пример нагляднее нужен.

Автор - SLAVICK
Дата добавления - 10.08.2016 в 13:03
Noober89 Дата: Пятница, 12.08.2016, 09:39 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Повторите действия - что выдаст в сообщении?

Спасибо большое! Вроде немного разобрался. Теперь все работает, но там какая-то своя система.
А можно ли подредактировать код таким образом, чтобы макрос автоматически, без выделения вручную, формировал результат?
 
Ответить
Сообщение
Повторите действия - что выдаст в сообщении?

Спасибо большое! Вроде немного разобрался. Теперь все работает, но там какая-то своя система.
А можно ли подредактировать код таким образом, чтобы макрос автоматически, без выделения вручную, формировал результат?

Автор - Noober89
Дата добавления - 12.08.2016 в 09:39
SLAVICK Дата: Пятница, 12.08.2016, 09:59 | Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 1836
Репутация: 613 ±
Замечаний: 0% ±

2007,2010,2013,2016
это у меня пользовательская функция - как хотите так и передавайте. в нее данные.
Можно управляющим макросом, можно в листе формулу написать - см. пример - в зеленой ячейке формула, и макрос отдельно для сохранения данных до последней строки и столбца.
[vba]
Код
Sub ExportAsText()
    With ActiveSheet
        LastRow = .Range("A1").SpecialCells(xlCellTypeLastCell).Row
        LastColumn = .Range("A2").SpecialCells(xlCellTypeLastCell).Column
        MsgBox txt_write_from_ARR(.Range(.Cells(2, 1), .Cells(LastRow, LastColumn)), "C:\primer.txt") & vbCr & LastRow & " x " & LastColumn
    End With
End Sub
Function txt_write_from_ARR(m As Variant, Optional filename$)
Dim i#, ii#, s$, n&
m = m
n = FreeFile()
On Error GoTo er
If filename = "" Then filename = ActiveWorkbook.Path & "\file.csv"
'Open filename For Append As #n'If append_to_last_row Then
Open filename For Output As #n
    For i = 1 To UBound(m)
    s = m(i, 1)
        For ii = 2 To UBound(m, 2)
            s = s & vbTab & m(i, ii)
        Next
        Print #n, s
            If i Mod 10000 = 0 Then
            DoEvents
            Application.StatusBar = Format(i / UBound(m), "0%") & ". " & i & " èç " & UBound(m)
            End If
    Next
Close #1
Application.StatusBar = False
txt_write_from_ARR = True
Exit Function
er:
txt_write_from_ARR = False
End Function
[/vba]
К сообщению приложен файл: 3366365-4-.xlsm(22Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщениеэто у меня пользовательская функция - как хотите так и передавайте. в нее данные.
Можно управляющим макросом, можно в листе формулу написать - см. пример - в зеленой ячейке формула, и макрос отдельно для сохранения данных до последней строки и столбца.
[vba]
Код
Sub ExportAsText()
    With ActiveSheet
        LastRow = .Range("A1").SpecialCells(xlCellTypeLastCell).Row
        LastColumn = .Range("A2").SpecialCells(xlCellTypeLastCell).Column
        MsgBox txt_write_from_ARR(.Range(.Cells(2, 1), .Cells(LastRow, LastColumn)), "C:\primer.txt") & vbCr & LastRow & " x " & LastColumn
    End With
End Sub
Function txt_write_from_ARR(m As Variant, Optional filename$)
Dim i#, ii#, s$, n&
m = m
n = FreeFile()
On Error GoTo er
If filename = "" Then filename = ActiveWorkbook.Path & "\file.csv"
'Open filename For Append As #n'If append_to_last_row Then
Open filename For Output As #n
    For i = 1 To UBound(m)
    s = m(i, 1)
        For ii = 2 To UBound(m, 2)
            s = s & vbTab & m(i, ii)
        Next
        Print #n, s
            If i Mod 10000 = 0 Then
            DoEvents
            Application.StatusBar = Format(i / UBound(m), "0%") & ". " & i & " èç " & UBound(m)
            End If
    Next
Close #1
Application.StatusBar = False
txt_write_from_ARR = True
Exit Function
er:
txt_write_from_ARR = False
End Function
[/vba]

Автор - SLAVICK
Дата добавления - 12.08.2016 в 09:59
Noober89 Дата: Пятница, 12.08.2016, 13:50 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Вдруг кому будет интересно, тема так же обсуждается на:
planetaexcel.ru
programmersforum.ru
excel-vba.ru
 
Ответить
СообщениеВдруг кому будет интересно, тема так же обсуждается на:
planetaexcel.ru
programmersforum.ru
excel-vba.ru

Автор - Noober89
Дата добавления - 12.08.2016 в 13:50
Noober89 Дата: Пятница, 12.08.2016, 14:31 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
это у меня пользовательская функция - как хотите так и передавайте. в нее данные.
Можно управляющим макросом, можно в листе формулу написать - см. пример - в зеленой ячейке формула, и макрос отдельно для сохранения данных до последней строки и столбца.

Очень благодарен за предоставленный макрос!
Подробнее я объяснить пока не могу, т.к. сам не до конца понимаю, что нужно)). В ближайшее время уточню и обязательно дополню свой вопрос.
Только тему пока не закрывайте пожалуйста...
 
Ответить
Сообщение
это у меня пользовательская функция - как хотите так и передавайте. в нее данные.
Можно управляющим макросом, можно в листе формулу написать - см. пример - в зеленой ячейке формула, и макрос отдельно для сохранения данных до последней строки и столбца.

Очень благодарен за предоставленный макрос!
Подробнее я объяснить пока не могу, т.к. сам не до конца понимаю, что нужно)). В ближайшее время уточню и обязательно дополню свой вопрос.
Только тему пока не закрывайте пожалуйста...

Автор - Noober89
Дата добавления - 12.08.2016 в 14:31
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос экспорта данных в txt (Макросы/Sub)
Страница 1 из 11
Поиск:

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