Vba word сохранить как txt
Данные функции предназначены для работы с текстовыми файлами из VBA Excel.
Используя эти функции, вы при помощи одной строки кода сможете записать текст из переменной в файл, или наоборот, загрузить содержимое текстового файла в переменную.
Чтение текстового файла в переменную:
Комментарии
Могу написать макрос под заказ (платно)
Как можно задать строки для чтения/записи из txt?
Пример:
Есть файл txt
Прораб
Вася
Петя
Работники
Саша
Андрей
Коля
Необходимо занести имена прорабов в один массив arr1(), а имена работников в другой arr2(). Изменить имена рабочих и их количество и вернуть в txt новые значения. Т.е. массивы динамические, а идентифицируем начало и конец соответствующего массива в txt по шапке в начале и пустой строке в конце.
В UTF-8 сохранять так
Function SaveTXTfile(ByVal filename As String, ByVal txt As String) As Boolean
On Error Resume Next: Err.Clear
Set stream = CreateObject("ADODB.Stream")
stream.Type = 2 'text
stream.Charset = "utf-8"
stream.Open
stream.writetext Replace(txt, Chr(10), vbNewLine)
stream.savetofile filename, 2
End Function
Добрый день!
Помогите еще в одной вещи.
По дефолту пишет в ANSI, а нужно UTF-8
Neri, замените в коде
Добрый день!
У меня есть ячейка, в которой спомощью функции сцепить собраные несколько значений и исползуется символ переноса строки
Выглядит это примерно вот так:
=СЦЕПИТЬ(R3 & СИМВОЛ(10) & S3 & СИМВОЛ(10))
"Строка 1"
"Строка 2"
Как можно записать в файл, но чтобы каждая строка писалась с новой строки?
Добрый день. А кто подскажет, какие применять команды для поиска части текста в файле (.xml), потом копировать его и этим текстом переименовывать папку или файл этот же? Спасибо.
получится что-то типа такого:
(под своим макросом, добавьте код функции ChangeFileCharset)
помогите плиииз решить задачку . у меня есть файл Эксель, мне его надо сохранить как текстовый с кодировкой Unicode, но при сохранении в этом формате програма добавляет две пустые строки, мне удалось убрать две пустые строки, но теперь он в конце первой строки ставит какой то символ, который я никак не могу убрать. где ошибка
Никто не спорит, - улучшать (дорабатывать) функцию можно бесконечно.
Чтобы нужные строки из файла брались, - кода будет в несколько раз больше.
Можете сами написать подобную функцию, взяв за основу этот код,
и сделав выборку нужный строки из массива.
Ну или заказать готовое решение.
А вопрос то актуальный. Дополнив функцию этой возможностью, её функционал стал бы гораздо качественне.
Можно с помощью Вашей функции взять только определенные строки, например со 2 по 20
Уберите строку Option Explicit - тогда не будет выскакивать ошибка Variable not defined
Пишет Variable not defined, указывая на binaryStream. Странно, ведь там все так же. :(
Mix, используйте эту функцию с третьим параметром "utf-8noBOM"
Добрый вечер!
Делаю по второму примеру, файл сохраняется в кодировке ANSI. Подскажите, как изменить данный пример чтобы сохранялось в кодировке utf-8 без BOM?
Это мое первое общение с VBA :)
Можно, конечно, и номер строки задать, откуда будут вставляться данные, - но код будет намного сложнее.
Алгоритм:
1) считываем весь текст из файла
2) разбиваем его на 2 части (по заданному номеру строки
3) формируем новый текст: 1-я часть + вставляемый текст + 2-я часть
4) записываем результат в тот же файл
Насчёт XML: очень не рекомендую использовать такой метод для XML, очень вероятны ошибки.
Там проще использовать объектную модель XML, программно добавляя новые узлы.
Очень интересна функция Добавление в текстовый файл из переменной, но так как я только начала изучать VBA, непонятно можно ли указать номер строки (в середине текста) начиная с которой начать добавление строк. И можно ли использовать эту функцию для добавления xml файл?
Здравствуйте! Подскажите пожалуйста, какой код надо написать, чтобы работал такой макрос: по нажатию кнопки выбирать папку, в которой есть текстовые файлы. В книгу вставляются листы с названиями от имени файлов в этой папке и в эти листы вводятся данные из этих файлов. Файлы содержат разную информацию: матрица, фамилии и дата рождения и т.д. Спасибо.
Anddre - если заменить "ReadTXTfile" на "txt",
то тогда функция будет всегда возвращать пустое значение. Любая Ф-я почти всегда должна содержать оператор присвоения значения переменной с именем самой функции.
Наконец я нашел решение! Спасибо огромное!
В моем случае, при сохранении TXTфайла с разделителями табуляции, нужно было записать первым пустой столбец, но любимый EXCEL сносил его и записывал файл таким образом что все столбцы смещались влево на одну позицию. запись Cells(1,1) = chr(09) приводила к возникновению цепочки сиволов кавычки-табуляция-кавычки в начале файла.
Пришлось прописывать Cells(1,1) = "?" (покрайней мере его видно в тексте), и тогда структура вроде сохранялась. Но система под которую этот файлик готовился могла на такое "нововведение" заругаться.
Как же я обрадовался когда удалось удалить из первой позиции аккруратно вырезать этот "?" и перезаписать файл в чистом виде.
Еще раз спасибо.
Спасибо за ресурс! Очень полезный. У меня несколько вопросов:
1) OpenTextFile(filename, 1, True)
второй и третий параметр этой функции что означают?
(а то редактор не выводит всплывающую подсказку)
2) Можно ли как-то считать только вторую строку текстового файла или записать во вторую строку?
3) При выведении значения в ячейку с помощью ReadTXTfile, в конце строки вместо переноса у меня стоит квадратик (нераспознанный знак), этого как-то можно избежать?
Заменить-то можно, но зачем?
Тогда придётся писать в коде дополнительную строку ReadTXTfile = txt
чтобы функция возвратила считанный из файла текст.
А так, как сейчас, всё работает без лишних строк.
(Мы намеренно записываем текст именно в ReadTXTfile, а не в какую-то текстовую переменную, поскольку функция должна возвратить загруженный текст)
В Visual Basic методы изменения файлов являются методами объекта Document или коллекции документов. В этом разделе Visual Basic примеры, связанные с задачами, которые определены в следующих разделах.
Создание нового документа
Коллекция документов включает все открытые документы. Чтобы создать новый документ, используйте метод Add для добавления объекта Document в коллекцию Документов. Следующая инструкция создает документ.
Лучший способ создания документа — назначить возвращаемую величину переменной объекта. Метод Add возвращает объект Document, который ссылается на новый документ. В следующем примере объект Document, возвращаемый методом Add, назначен переменной объекта. Затем за набором нескольких свойств и методов объекта Document. Вы можете легко управлять новым документом с помощью переменной объекта.
Открытие документа
Чтобы открыть существующий документ, используйте метод Open с коллекцией Документов. Следующая инструкция открывает документ с именем Sample.doc, расположенный в папке MyFolder.
Сохранение существующего документа
Чтобы сохранить один документ, используйте метод Сохранить с объектом Document. Следующая инструкция сохраняет документ с именем Sales.doc.
Все открытые документы можно сохранить, применяя метод Сохранить в коллекции Документов. Следующая инструкция сохраняет все открытые документы.
Сохранение нового документа
Чтобы сохранить один документ, используйте метод SaveAs2 с объектом Document. Следующая инструкция сохраняет активный документ как "Temp.doc" в текущей папке.
Аргумент FileName может включать только имя файла или полный путь (например, "C:\Documents\Temporary File.doc").
Закрытие документов
Чтобы закрыть один документ, используйте метод Close с объектом Document. Следующая инструкция закрывает и сохраняет документ с именем Sales.doc.
Все открытые документы можно закрыть, применяя метод Close из коллекции документов. Следующая инструкция закрывает все документы без сохранения изменений.
В следующем примере пользователю предлагается сохранить каждый документ до его закрытия.
Активация документа
Чтобы изменить активный документ, используйте метод Активация с объектом Document. Следующая инструкция активирует открытый документ с именем Sales.doc.
Определение открытого документа
Чтобы определить, открыт ли документ, вы можете привести коллекцию документов с помощью . Следующее утверждение. В следующем примере активируется документ с именем Sample.doc если документ открыт или открывается Sample.doc если он не открыт в настоящее время.
Ссылаясь на активный документ
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Если вы хотите сохранить рабочий лист как текстовый файл, вы можете использовать функцию Excel «Сохранить как», чтобы сохранить рабочий лист как текстовый файл. Но если вы хотите сохранить каждый лист книги в виде отдельного текстового файла, шаги Сохранить как должны вас раздражать. Здесь я предлагаю вам несколько интересных приемов, которые помогут вам быстро решить эту скучную работу в Excel.
Сохраните каждый лист книги как отдельный текстовый файл с помощью Kutools for Excel
Сохраните лист как текстовый файл с помощью VBA
Если вам не нравится использовать функцию «Сохранить как» для сохранения листа в виде текстового файла, вы можете использовать код VBA.
1. Активируйте лист, который хотите сохранить как текстовый файл.
2. Нажмите Alt + F11 ключи для отображения Microsoft Visual Basic для приложений окно.
3. Нажмите Вставить > Модуль из окна, а затем вставьте ниже код VBA в модуль.
VBA: сохранить лист как текстовый файл.
4. Нажмите Запустите кнопку для выполнения кода, а затем в Kutools for Excel выберите папку, в которую будет помещен текстовый файл, и укажите имя текстового файла. Смотрите скриншот:
5. Нажмите Сохраните. Теперь активный лист сохраняется как текстовый файл.
Наконечник: с VBA вы можете одновременно сохранить только один лист в виде текстового файла.
Сохраните каждый лист книги как отдельный текстовый файл с помощью Kutools for Excel
После бесплатная установка Kutools for Excel, сделайте следующее:
1. Включите книгу, листы которой вы хотите сохранить как независимые текстовые файлы, а затем щелкните Kutools Plus > Workbook > Разделить книгу. Смотрите скриншот:
2. в Разделить книгу выберите листы, которые вы хотите разделить и сохранить как текстовые файлы, по умолчанию все листы выбраны, а затем установите флажок Укажите формат сохраненияИ выберите Текст в Юникоде (*. Txt) из раскрывающегося списка снизу. Смотрите скриншот:
3. Нажмите Трещина, а затем выберите папку для размещения текстовых файлов из Просмотр папки диалог. Смотрите скриншот:
4. Нажмите OK. Теперь каждый лист книги сохраняется как отдельный текстовый файл в выбранной папке.
Работы С Нами Разделить книгу of Kutools for Excel, вы можете разделить книгу и сохранить их как отдельные файлы xls, файлы xlsx, файлы PDF или файлы CSV, нажмите здесь, чтобы узнать больше об этой утилите.
Экспортируйте выделенный лист в виде текстового файла с помощью Kutools for Excel
Работы С Нами Kutools for Excel, вы также можете экспортировать выбранный лист в виде текстового файла, используя его Диапазон экспорта в файл.
После бесплатная установка Kutools for Excel, сделайте следующее:
1. Выберите диапазон или диапазоны, которые вы хотите сохранить как текстовый файл, и нажмите Kutools Plus > Импорт/Экспорт > Диапазон экспорта в файл. Смотрите скриншот:
2. Затем в появившемся диалоговом окне отметьте Текст Юникода вариант под Формат файла раздел, затем перейдите к Параметры текста раздел, чтобы выбрать нужный вариант, а затем выберите место для сохранения.
3. Нажмите Ok. Теперь назовите экспортируемый текстовый файл во всплывающем окне. Диапазон экспорта в файл диалоговое окно и щелкните OK кнопку.
Пока выбор был экспортирован в отдельный текстовый файл.
Есть более 120 инструменты в Kutools for Excel, чтобы установить его и получить 60-дневную пробную версию, вы можете найти множество невероятных полезных функций.
Сохранить данные из datagridview в word с созданием таблицы в ворде
Привожу код который сохраняет содержимое datagridview в файл, но без создания таблицы в самом файле.
При сохранение файла word (права доступа на сохранение ограничены) появляется пустой файл
Добрый день! Проблема такая: Допустим есть пользователь, у которого ограничены права (может.
Сохранение макета в Word (MXL --> таблица в Word)
Есть такой код: . запрос ТаблицаДанных = Запрос.Выполнить().Выгрузить(); .
Как лучше всего сделать сохранение >100 страниц из word шаблона с заменой ключ. слов в один word файл для посл. печати?
Я вот думаю, как? Точнее не думаю, я уже приступлю к созданию всего этого завтра, но хотел бы.
т. е. надо, чтобы в диалоговом окне "Сохранение документа" в поле "Имя файла" по умолчанию было определённое название? 2 BUSINE2009
В точности так. Именно этого хотелось бы
а код вот этот
wd.Dialogs(wdDialogFileSaveAs).Show
где wd это объект ворд. Документ из экселя делается. Там все данные Artemo,
вот что второе пришло в голову (первое было - в реестре что-нибудь изменить):
Этот макрос надо поместить в меню Файл вместо "Сохранить" и "Сохранить как. " и на Стандартную панель инструментов, вместо кнопки "Сохранить". Не знаю, как это сделать. Просто запустить-он не работает Artemo,
ясное дело, что он не будет работать в Exel ( wd DialogFileSaveAs).
Вот для Exel.
Может в твоём случае не надо вызывать Диалоговое окно "Сохранение документа", а надо как-то автоматизировать Сохранение. Спасибо! Тоже здоровский объект. И документирован. Есть простор для творчества. Коллеги удивятся теперь, всяко. -) добрый день, Буду очень благодарен если у вас есть какие нибудь мысли.
Вопрос- Можно ли в макрос вставить не константное имя файла? Например копируем шапку файла, и "сохранить как" "вставить"
я не полный ноль, но по 10 бальной шкале я 1.
Могли бы вы пожалуйста на пальцах сказать что куда вставлять?
вот концовка макроса допустм, где копи- я копирую в буфер нужное мне название из самого файла.
П.с. я работаю в ворде
Добавлено через 6 минут
Казанский, Это я вам писал выше)) Только разобрался как ответ писать
Казанский, Большое спасибо что тратите на меня время. Хоть и тп мне не ясно, потому что я не знаю разнообразия всех методов и мои макросы наверное такие тупые и нагруженые, а спецы делали бы это все в пару строк)) Если не сложно, не подскажете, как указать в макросе путь куда сохранять и что бы не выскакивало окно выбора пути?
Добавлено через 15 минут
Казанский, Кстати, если не сложно ответться, что делают 2-8 строки? Я их удалил, и без них работало.
Добавлено через 9 минут
И есть ли все таки способ сделать имя из буфера? Например я макросом копирую заявление 11/11/16-1 ( далее в прога не читает такое название) у меня копируется номер заявления, вставляется в свободную строку, "/" меняются на "." и дописывается .doc (11.11.16-1.doc) и удаляется из строки( а запись оставалась в буфере). Файл закрывается с сохранением. Потом я нажимал f2 жмакал ctrl+v и все. Нельзя "сохранить как", потому что работа с доком идет из temp папки и он положит файл в другое место. А я начинал работу с скачанным файлом и мне нужно именно ему поменять имя а не создать новый.
То есть я скачиваю ворду, перетаскиваю из мозилы в месанджер и менял имя внутри месенджера
Добавлено через 20 часов 11 минут
Я понял как можно указать папку, куда устанавливать. Но как можно сделать так, что бы не спрашивали подтверждение.
По умолчанию, само приложение Word не позволяет сохранять документы в заданных форматах (исключением являются последние версии), что немного обидно, учитывая функциональные возможности самой компании Майкрософт. Но это и не удивительно, так как дядюшка Билл любит радовать своего потребителя различными косяками и багами – каких только нецензурных слов удостоился тот же Internet Explorer .
В первую очередь, стоит сообщить хорошую новость – есть расширение "SaveAsPDFandXPS", которое находится в бесплатном доступе и его можно скачать с официального сайта Майкрософт. После установки данного расширения появляется возможность сохранить страницу как PDF в Word документе, причем, как в ручном режиме (соответствующий тип файла появится в диалоговом окне "Сохранить Как"), так и программным путем.
Собственно, программный метод получения формата pdf мы и рассмотрим, а именно, метод ExportAsFixedFormat объекта Range, который позволяет экспортировать целиком или частично содержимое документа в нужный формат.
Данный метод содержит много параметров, и поэтому, я решил описать его в отдельной статье.
ExportAsFixedFormat (OutputFileName, ExportFormat, OpenAfterExport, OptimizeFor, ExportCurrentPage, Item, IncludeDocProps, KeepIRM, CreateBookmarks, DocStructureTags, BitmapMissingFonts, UseISO19005_1, FixedFormatExtClassPtr) - Сохраняет часть документа Word как PDF или XPS формат. Только первые два параметра являются обязательными.
OutputFileName – Обязательный параметр, который задает путь и имя сохраняемого в Word PDF или XPS-файла.
ExportFormat – Обязательный параметр, который определяет формат сохранения в Word (PDF или XPS). Значение константы WdExportFormat:
- wdExportFormatPDF - 17 - Экспортировать документ в формате PDF.
- wdExportFormatXPS - 18 - Экспортировать документ в формате XML Paper Specification (XPS).
OpenAfterExport - Открыть новый файл после экспорта содержимого – значение true.
OptimizeFor – Параметр указывает, следует ли оптимизировать файл для экрана или для печати. Значение константы WdExportOptimizeFor:
- wdExportOptimizeForOnScreen - 1 – Для экрана - низкое качество и маленький размер.
- wdExportOptimizeForPrint - 0 - Для печати – высокое качество и большой размер.
ExportCurrentPage – Определяет, что нужно экспортировать, всю страницу (true) или только выбранный диапазон (false). Word сохранение в PDF.
Item - Определяет процесс экспорта - включать только текст или текст с разметкой. Значение константы WdExportItem:
- wdExportDocumentContent - 0 - Экспорт документа без разметки.
- wdExportDocumentWithMarkup - 7 - Экспорт документа с разметкой.
IncludeDocProps - Указывает, следует ли включить свойства документа в недавно экспортируемый файл (true). Сохранить как PDF в Word.
KeepIRM - Указывает, следует ли копировать права доступа IRM в XPS документ, если исходный документ имеет защиту IRM. Значение по умолчанию True.
CreateBookmarks - Указывает, следует ли экспортировать закладки и тип закладки. Значение константы WdExportCreateBookmarks:
- wdExportCreateHeadingBookmarks - 1 - Создание закладки в экспортируемом документе для всех заголовком, которые включают только заголовки внутри основного документа и текстовые поля не в пределах колонтитулов, концевых сносок, сносок или комментариев.
- wdExportCreateNoBookmarks - 0 - Не создавать закладки в экспортируемом документе.
- wdExportCreateWordBookmarks - 2 - Создание закладки в экспортируемом документе для каждой закладки, которая включает все закладки кроме тех, которые содержатся в верхнем и нижнем колонтитулах.
DocStructureTags - Указывает, следует ли включать дополнительные данные, которые помогут при чтении с экрана, например информацию о потоке и логическую организацию содержимого. Значение по умолчанию True. Документ Word сохранить в PDF.
BitmapMissingFonts - Указывает, следует ли включать растровое изображение текста. Установите этот параметр в значение True, когда шрифт не поддерживается в PDF.
UseISO19005_1 и FixedFormatExtClassPtr – Данные параметры не предоставляют практического интереса.
Теперь давайте рассмотрим два примера программного кода – на языке VBScript и JScript. Оба примера создают новый документ Word, далее вставляют в него текст, содержащий информацию о сервере сценариев Windows Script Host.
Программный код на VBSCRIPT:
Программный код на JSCRIPT:
Сами сценарии сохраняют документ Word в формате PDF в текущем каталоге, то есть, в каталоге, из которого произошел запуск сценария. Две функции LRange и TXInsert позволяют выбрать нужный диапазон текста (точнее нужные абзацы) и применить форматирование текста (тип шрифта и размер). Метод SaveAs также позволяет сохранить документ Word в PDF формате или в любом другом формате, данный метод принадлежит объекту Document. Более детально похожий пример я рассмотрел в этой статье.
Спасибо за внимание. Автор блога Владимир Баталий
Читайте также: