Страницы: 1
RSS
Экспорт/Импорт в текстовый фаил
 
Всем привет. Пожалуйста подскажите как можно макросами осуществить экспорт и импорт в блокнот, строки А1
 
так в блокнот (в программу), или в текстовый файл?

http://excelvba.ru/code/txt

Код
SaveTXTfile "c:\myfile.txt", [a1]
[a1] = ReadTXTfile("c:\myfile.txt")
 
Немного не правильно я задал вопрос! Как записать в текстовый блокнот 1ю строку, ну и соответственно обратно импортировать в таблицу!
 
Строка в Excel и в текстовике - вещи разные.
Для записи сцепляйте все ячейки в текстовую строку.
При чтении - разбивайте по ячейкам.
Как работать с текстовой строкой - см.№2
 
Цитата
bulgakov написал:
Как записать в текстовый блокнот 1ю строку
Может всё же в текстовый файл? Или нужно сначала открыть "Блокнот" и вставить туда?
 
В текстовый фаил нужно. То что таблица экселя и txt разные вещи, я понимаю. Вижу выход из этой ситуации записывать каждую ячейку с новой строки!
 
Доброе время суток
Туда
Код
Public Sub WriteToNotepad()
    Dim nId
    nId = Shell("notepad.exe", vbNormalFocus)
    AppActivate nId
    SendKeys Range("A1").Text & vbCr
    SendKeys Range("A2").Text
End Sub

Обратно по сложнее
1. Активировать блокнот
1. Постслать Ctrl+A и Ctrl+C
2. Через объект буфера обмена получить текст
3. Через Split разбить на массив строк и по индексу забрать требуемую строку

P. S. А можно полюбопытствовать - зачем так нужно для вас делать?
 
Да почему же нельзя? Можно..)) есть лист на котором ведётся учёт заявок, данные записаны в строку. По этим данным формируется заявка. На который нужно поставить Эл. Печать. Которую может поставить только руководитель отдела. Как то так.  
 
Появились схожие задачи, нашел много похожего, но всё, как говорится не то.
Суть задач:
1. Экспорт. Выделить ячейки, нажать горячие кнопки, диалог с выбором папки куда сохранить, затем экспорт данных из выделенных ячеек в "имя_ячейки.txt". Соответственно, сколько выделено ячеек, столько и текстовых файлов должно получиться.
2. Обратный процесс (импорт). Из текущего листа запускается макрос, выбор папки с txt файлами и происходит импорт данных с перезаписью из текстовых файлов, где "имя_ячейки.txt" --> ячейка текущего листа.
Буду признателен любой помощи!
 
Newsky13, Вы эту тему читали, или ограничились только названием?
 
Не жирно ли по файлу на ячейку? Первая часть хотелки - выбор папки, запись в файлы содержимое выделенных ячеек.
Код
Sub test()
Dim wb As Workbook, wbn$, fw$, obj As Object
Dim fn$, a%, arr(), xx
Set obj = Application.FileDialog(msoFileDialogFolderPicker)
obj.AllowMultiSelect = False: obj.Show
fw = obj.SelectedItems.Item(1) & "\"
Set obj = Nothing: arr = Selection.Value
Set wb = ThisWorkbook: wbn = wb.Name
fn = fw & wbn & "_": a = 1
For Each xx In arr
  fn = fn & a & ".txt"
  Open fn For Output As #1
  Print #1, xx: a = a + 1
  Close #1
  fn = Left$(fn, Len(fn) - 5)
Next
End Sub
Изменено: Anchoret - 19.03.2018 11:00:34
 
Позвольте полюбопытствовать, что есть
Цитата
Newsky13 написал:
"имя_ячейки.txt"
? Т.е. что подразумевается по "именем_ячейки" - содержимое?
Изменено: Nordheim - 19.03.2018 10:15:02
"Все гениальное просто, а все простое гениально!!!"
 
"ямя_ячейки.txt" - при таком подходе нужно учитывать, что не все символы, возможные в "имени ячейки" возможны в имени файла!
 
Цитата
Hugo написал:
Вы эту тему читали, или ограничились только названием?
Я и эту тему читал и все, что нашлись на этом ресурсе и на соседних. В основном, варианты либо: экспорт из определенных ячеек (указанных заранее в макросе), либо целиком из ячеек в 1 (один) текстовый файл, либо имена файлов равно дате и так далее. Ничего, что требуется мне я не смог найти и не смог адаптировать то, что нашел, увы.
Цитата
Nordheim написал:
? Т.е. что подразумевается по "именем_ячейки" - содержимое?
Нет. B1.txt; B2.txt ...
Цитата
Anchoret написал:
Не жирно ли по файлу на ячейку?
Такая задача. Да и количество их будет не огромное, а так, 3-5 десятков, а то и меньше.
Цитата
Hugo написал:
"ямя_ячейки.txt" - при таком подходе нужно учитывать, что не все символы, возможные в "имени ячейки" возможны в имени файла!
Да, я это понимаю, но для задачи есть понимание, что имена экспортируемых ячеек будут в границах корректных имён, примерно с A по Z

Собственно, макрос этот нужен для мамы (пожилой человек), она только осваивает Excel, но так сложилось, что ей нужно вести файл прайса, где в том числе есть ячейки с подробным описанием товара и делать это в "узкой ячейке" её очень сложно и неудобно, а блокнот она освоила и в нём ей гораздо удобней, вот и возникла идея, понемногу экспортировать в txt, там приводить текст к приличному виду (знаки препинания, пробелы, ковычки и прочее), а потом "возвращать" обратно в прайс.
 
Идея плохая...
Зачем страдать в узкой ячейке? Её ведь можно растянуть по ширине/высоте практически как угодно.
 
Newsky13, см.выше. Или с адресами ячеек в названии файлов (работа с текстовыми файлами):
Код
Sub test()
Dim adr$, fw$, obj As Object
Dim fn$, aa As Range, bb As Range
Set obj = Application.FileDialog(msoFileDialogFolderPicker)
obj.AllowMultiSelect = False: obj.Show
fw = obj.SelectedItems.Item(1) & "\"
Set obj = Nothing: Set aa = Selection
For Each bb In aa
  adr = bb.AddressLocal(0, 0)
  fn = fw & adr & ".txt"
  Open fn For Output As #1
  Print #1, bb.Value
  Close #1
Next
End Sub
Изменено: Anchoret - 19.03.2018 11:20:31
 
Anchoret, Огромное вам спасибо! Работает просто замечательно! И главное, в реале, оказалось удобней, чем и предполагал! Только на тесте 25 позиций поправил за неполные 5 минут! Вот если бы еще со второй частью "хотелок" помогли-бы! Был-бы вам безгранично благодарен. А за ссылку спасибо, буду изучать.
 
Код
Sub ReadTXT()
Dim adr$, fw$, obj As Object, fn$, txt As Object
Set obj = Application.FileDialog(msoFileDialogFolderPicker)
obj.AllowMultiSelect = False: obj.Show
fw = obj.SelectedItems.Item(1) & "\"
Set obj = CreateObject("Scripting.FileSystemObject")
fn = Dir(fw & "*.txt")
Do
  Set txt = obj.OpenTextFile(fw & fn)
  adr = Left$(fn, InStr(fn, ".") - 1)
  Range(adr).Value = txt.ReadAll
  txt.Close: fn = Dir
Loop Until fn = ""
Set obj = Nothing: Set txt = Nothing
End Sub
 
Anchoret, Низкий вам поклон! Безупречно! Спасибо.
 
Newsky13, с проверкой на ошибки и удалением прочитанного файла:
Код
Sub ReadTXT()
Dim adr$, fw$, obj As Object, fn$, txt As Object
Set obj = Application.FileDialog(msoFileDialogFolderPicker)
obj.AllowMultiSelect = False: obj.Show
fw = obj.SelectedItems.Item(1) & "\"
Set obj = CreateObject("Scripting.FileSystemObject")
fn = Dir(fw & "*.txt")
Do
  Set txt = obj.OpenTextFile(fw & fn)
  adr = Left$(fn, InStr(fn, ".") - 1)
  On Error Resume Next
  If Err.Number = 0 Then
    Range(adr).Value = txt.ReadAll
    txt.Close: Kill (fw & fn)
  End If
  On Error GoTo 0
  fn = Dir
Loop Until fn = ""
Set obj = Nothing: Set txt = Nothing
End Sub
Страницы: 1
Наверх