Консультация № 72057
22.01.2007, 11:37
0.00 руб.
0 2 2
Здравствуйте.
Вопрос: что необходимо прописать в макросе, что бы сохранить числа находящиеся, например в ячейках B8:J28 (на листе "bb" в книге c:/pr50.xls) в текстовый файл с разделителями пробел (*.prn) в заданную папку c:/dat/w1.prn. Причем сохранить не весь лист "bb" а только выделенные ячейки B8:J28.И после сохранения опять вернуться на лист "bb".
Сергей

Обсуждение

Неизвестный
22.01.2007, 12:19
общий
это ответ
Здравствуйте, Kas!
Код работает при условии, что активный лист и есть bb в c:\pr50.xls. Сначала обрабатываем массив ячеек, затем пишем это всё в файл с соответствующим форматированием. Удач!

Приложение:
Option ExplicitSub qwe()Dim X, str As String ‘переменные временныеDim fs, f ‘для открытия файлаConst ForReading = 1, ForWriting = 2, ForAppending = 3 ‘константы для функции открытия файлаConst TristateUseDefault = -2, TristateFalse = 0, TristateTrue = -1‘по умолчанию перебор слева направо сверху внизFor Each X In Selection str = str & " " & X.TextNext X‘создать системный объект файловой системыSet fs = CreateObject("Scripting.FileSystemObject")‘открыть файл для перезаписиSet f = fs.OpenTextFile("C:\dat\w1.prn", ForWriting, TristateUseDefault)f.Write str ‘перезаписать данныеf.Close ‘закрыть доступ программы к файлуEnd Sub
Неизвестный
22.01.2007, 23:03
общий
это ответ
Здравствуйте, Kas!
В Excel (да и не только) есть возможность записать последовательность действий в виде макроса - меню Сервис-Макрос-Записать
Провести вручную требуемые действия (создание нового листа для сохранения, копирование данных на этот лист, соответственно сохранение в нужном формате и удаление уже не нужного листа), а затем посмотреть.
В частности вот что получилось у меня:

Приложение:
Sub Ìàêðîñ1()‘‘ Макрос1 Макрос‘ Макрос записан 22.01.2007 (@lec)‘‘ Selection.Copy Set Sh=ActiveSheet Sheets.Add ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.SaveAs Filename:="D:\Документы Alec Perle\Книга1.prn", _ FileFormat:=xlTextPrinter, CreateBackup:=False Sh.Select ActiveWindow.SelectedSheets.DeleteEnd Sub
Форма ответа