Saveas в файл excel

Содержание

  1. Запись в существующий файл Excel
  2. сохранение файла excel
  3. 1с excel saveas перезапись существующего файла
  4. Основные методы, принципы и хитрости, используемые при работе с EXCEL через COM-объект
  5. Чтение данных из Excel
  6. Выгрузка данных в Excel
  7. Как программно сохранить файл Excel в формате 2003 года
  8. Часто используемые методы Excel
  9. Хитрости Excel
  10. Как выборочно разрешить / запретить редактирование ячеек листа
  11. Как запретить появление на экране всяких вопросов от Excel
  12. Как добавить лист Excel в конец списка листов книги или после конкретного листа (а не в начало книги)
  13. Как программно скрыть колонку файла Excel
  14. Как программно назначить ячейке файла Excel перенос по словам
  15. Как обработать файл xls, если Excel не установлен на компьютере
  16. Как указать цвет шрифта в ячейке, цвет рамки, цвет фона
  17. Организация автоматической обработки файлов xls из выбранной папки
  18. Создание кнопки в Excel в 7.7
  19. Как подключиться к запущенному Excel-евскому файлу в реальном времени, изменить его и даже не сохранять, а просто переключить окно на 1С и сразу же выгружать данные в табличную часть, лишь переключив окна
  20. Описание команды ПолучитьCOMОбъект
  21. 1с excel saveas перезапись существующего файла
  22. Чтение и запись данных MS Excel с использованием 1С, примеры форматирования таблицы

Запись в существующий файл Excel

Всем привет!
Прошу вашего совета. Дано файл эксель xlsx. Построчно надо пройтись и заполнить столбец.
Делаю так:

Попытка
Книга = ПолучитьCOMОбъект(ИмяФайла);
Исключение
ПоказатьПредупреждение(,ОписаниеОшибки());
Возврат;
КонецПопытки;
Лист = Книга.Worksheets(1);
Для Сч = НомерСтрНачало по ФайлСтрок Цикл
Лист.Cells(Сч, НомерСтолбцаКоличество).Value = Количество;
КонецЦикла;

Попытка
Книга.SaveAs(Путь);
Книга.Application.DisplayAlerts = False;
Книга.Close(0);
Исключение
КонецПопытки;

В результате файл сохраняется, даже заполняется столбец, но открываю его через Excel и там вот так https://www.screencast.com/t/Z4P4rlMFF
Причем файл весит 9мб. Что я пропустил..
Раньше, работа с xls делал через Новый COMОбъект(«Excel.Application»), но в силу того что стала возникать проблема с _filterDatabase переписал на ПолучитьCOMОбъект(ИмяФайла)

Создал пустой файл excel. Открываю норм, сетка видна, все команды на месте.

написал 4 строки работы с ним. Выполняю код:

Книга = ПолучитьCOMОбъект(ИмяФайла);
Лист = Книга.Worksheets(1);
Лист.Cells(1, 1).Value = 99;
Лист.SaveAs(ИмяФайла);
Книга.Application.Quit();

Открываю заново файл, и там уже пустота. Я так понимаю что то с функцией SAveAs

Источник

сохранение файла excel

ФайлЭксель = ПолучитьCOMОбъект(«D:d.XLS»);
Лист = ФайлЭксель.Worksheets(1);
Лист.Cells(1,1).Value=»б»;
//Книга = ФайлЭксель.WorkBooks.Open();
ФайлЭксель.SaveAs();

далее выдается запрос о перезаписи существующего файла, но изменения не сохраняются. что не так?

Перем Док, Екс, ПутьКФайлу;

Сообщить(ПутьКФайлу, СтатусСообщения.ОченьВажное);
Екс = Новый COMОбъект(«Excel.Application»);
Попытка
Док = Екс.Workbooks.Open(ПутьКФайлу);
Исключение
Док = Екс.Workbooks.add();
КонецПопытки;
КоличествоСтраниц = 1;
НачальнаяСтрока = 1;

счСтроки = НачальнаяСтрока;
Для ТекНомер = 1 По КоличествоСтраниц Цикл

Пока счСтроки Alexander Shevchuck

Фрагмент статьи «1С 8.х и Excel»

Выгрузка данных в Excel

Для вывода (выгрузки) данных в Excel необходимо либо открыть существующую книгу, либо создать новую, и выбрать рабочий лист для вывода данных.
Для создания новой книги можно использовать следующий код:
Попытка
Эксель = СоздатьОбъект(«Excel.Application»);
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Книга = Эксель.WorkBooks.Add();

При создании книги автоматически создаются листы (по умолчанию 3). Нам остается только выбрать нужный:
Лист = Книга.WorkSheets(НомерЛиста);

Или добавить в книгу новый лист:
Лист = Книга.Sheets.Add();

Добавим в ячейку на листе значение:
Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение;

Запишем книгу:
Попытка
Книга.SaveAs(ПутьКФайлу);
Исключение
Сообщить(ОписаниеОшибки()+» Файл не сохранен!»);
КонецПопытки;

Где ПутьКФайлу — полный путь к файлу книги Excel (включая имя).

Источник

1с excel saveas перезапись существующего файла

Как осуществить чтение/запись данных из/в Excel на языке 1с (используя COM-объект)

Здесь можно скачать шаблонную обработку, разработанную в среде «1С:Предприятие v8″ для работы с файлами Excel: [download В обработке осуществляются все основные действия с файлом Excel. Даны подробные комментарии. Можно использовать в качестве шаблона для разработки собственных выгрузок/загрузок в/из Excel.

Основные методы, принципы и хитрости, используемые при работе с EXCEL через COM-объект

Чтение данных из Excel

Доступ из 1С к Excel производится посредством OLE. Создание COM-объекта:

Теперь используя переменную Эксель можно управлять приложением Excel.

  • Внимание! Microsoft Excel должен быть установлен на компьютере!

Следующая команда откроет книгу:

Перед тем, как начать считывание данных, укажем лист книги, с которого будем считывать данные:

Нумерация листов книги начинается с 1. Общее количество листов можно получить, используя следующую команду:

Лист можно выбрать по имени листа в книге:

Имя листа в книге можно получить по номеру:

Точно так же можно задать имя листа:

Итак, мы открыли книгу и выбрали лист, теперь посмотрим, сколько строк и колонок на выбранном листе:

Получим значения ячейки листа в строке НомерСтроки и в колонке НомерКолонки:

Ниже приведен отрывок кода, запустив который мы прочитаем все данные с первой страницы:

Где ПутьКФайлу — полный путь к файлу книги Excel (включая имя).

После выполнения действий необходимо закрыть книгу:

Выгрузка данных в Excel

Для вывода (выгрузки) данных в Excel необходимо либо открыть существующую книгу, либо создать новую, и выбрать рабочий лист для вывода данных.
Для создания новой книги можно использовать следующий код:

При создании книги автоматически создаются листы (по умолчанию 3). Нам остается только выбрать нужный:

Или добавить в книгу новый лист:

Добавим в ячейку на листе значение:

Где ПутьКФайлу — полный путь к файлу книги Excel (включая имя).

После выполнения действий необходимо закрыть книгу:

Как программно сохранить файл Excel в формате 2003 года

Синтаксис команды «SaveAs» во втором параметре разрешает указать формат сохраняемого файла.
Числовое значение фрмата файла Excel 2003: FileFormatNum = -4143
Т.е. команду сохранения для этого можно написатьтак:

Часто используемые методы Excel

Эксель.Visible = Видимость; 0 — Excel не виден, 1 — виден.
Книга = Эксель.WorkBooks.Add(); Создание новой книги (файла) Excel.
Книга = Эксель.WorkBooks.Add(ИмяФайлаШаблона); Создание новой книги (файла) Excel по шаблону «ИмяФайлаШаблона»
Книга.SaveAs(ИмяФайла); Сохранение книги Excel.
Лист = Книга.WorkSheets.Add(); Добавление нового листа в книгу.
Книга = Эксель.WorkBooks.Open(ИмяФайла); Открытие существующей книги (файла) Excel.
Лист = Книга.WorkSheets(НомерЛиста); Установка листа в качестве рабочего с номером НомерЛиста.
Лист.Name = ИмяЛиста; Задание рабочему листу имени ИмяЛиста
Лист.PageSetup.Zoom = Масштаб; Задание параметра страницы «Масштаб» (от 10 до 400).
Лист.PageSetup.Orientation = Ориентация; Ориентация: 1 — книжная, 2 — альбомная.
Лист.PageSetup.LeftMargin = Эксель.CentimetersToPoints(Сантиметры); Задание левой границы (в сантиметрах).
Лист.PageSetup.TopMargin = Эксель.CentimetersToPoints(Сантиметры); Задание верхней границы (в сантиметрах).
Лист.PageSetup.RightMargin = Эксель.CentimetersToPoints(Сантиметры); Задание правой границы (в сантиметрах).
Лист.PageSetup.BottomMargin = Эксель.CentimetersToPoints(Сантиметры); Задание нижней границы (в сантиметрах).
Лист.Columns(НомерКолонки).ColumnWidth = Ширина; Задание ширины колонке.
Лист.Cells(НомерСтроки,НомерКолонки).ColumnWidth = 0; Скрыть всю колонку, в которой расположена ячейка
Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение; Ввод данных в ячейку.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Name = ИмяШрифта; Установка шрифта в ячейке.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Color = ЦветШрифта; Установка цвета шрифта в ячейке. Тип переменной ЦветШрифта — число десятичное.
Лист.Cells(НомерСтроки,НомерКолонки).Borders.Color = ЦветРамки; Установка цвета рамки в ячейке.
Лист.Cells(НомерСтроки,НомерКолонки).Interior.Color = ЦветФона; Установка цвета фона в ячейке.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Size = РазмерШрифта; Установка размера шрифта в ячейке.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Bold = Жирный; 1 — жирный шрифт, 0 — нормальный.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Italic = Курсив; 1 — наклонный шрифт, 0 — нормальный.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Underline = Подчеркнутый; 2 — подчеркнутый, 1 — нет.
Лист.Cells(НомерСтроки, НомерКолонки).NumberFormat = Формат; Установка формата данных ячейки.
Лист.Cells(НомерСтроки,НомерКолонки).Borders.Linestyle = ТипЛинии; Установка рамок ячейки. 1 — тонкая сплошная.
Лист.Cells(НомерСтроки,НомерКолонки).WrapText = Истина; Осуществлять перенос по словам в указанной ячейке
Лист.Protect(); Установка защиты на лист
Лист.UnProtect(); Снятие защиты с листа
Лист.Cells(Строка, Столбец).Locked=0; Ячейка будет доступной (и после установки защиты на лист)
ПолучитьCOMОбъект( , ); Основное применение функции ПолучитьCOMОбъект — это получение COM-объекта, соответствующего файлу.

Хитрости Excel

Как выборочно разрешить / запретить редактирование ячеек листа

Как запретить появление на экране всяких вопросов от Excel

Excel, чтоб вопрос не задавал:

Как добавить лист Excel в конец списка листов книги или после конкретного листа (а не в начало книги)

Метод работает для платформ 1С v8.

Как программно скрыть колонку файла Excel

Как программно назначить ячейке файла Excel перенос по словам

Как обработать файл xls, если Excel не установлен на компьютере

Для этого можно использовать метод

Код для 7.7, решающий такую задачу, будет выглядеть примерно так:

Как указать цвет шрифта в ячейке, цвет рамки, цвет фона

Организация автоматической обработки файлов xls из выбранной папки

Создание кнопки в Excel в 7.7

Процедура открывает Эксель, втавляет на первый лист кнопку «Очистить» и назначает ей макрос,
устанавливающий автофильтр на колонку Е по не нулевым значениям. Текст макроса любой,
главное разделять Симв(13) строки

текст макроса пишется в переменную st

Как подключиться к запущенному Excel-евскому файлу в реальном времени, изменить его и даже не сохранять, а просто переключить окно на 1С и сразу же выгружать данные в табличную часть, лишь переключив окна

При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.

Описание команды ПолучитьCOMОбъект

Глобальный контекст
ПолучитьCOMОбъект (GetCOMObject)
Синтаксис:
ПолучитьCOMОбъект( , )
Параметры:
(необязательный)
Тип: Строка. Имя файла, включающее полный путь.
(необязательный)
Тип: Строка. Имя класса COM, экземпляр которого должен быть создан или получен. Если расширение имени файла, указанное в первом параметре полностью идентифицирует класс объекта, то параметр может быть опущен.
Возвращаемое значение:
Тип: COMОбъект.
Описание:
Основное применение функции ПолучитьCOMОбъект — это получение COM-объекта, соответствующего файлу. Для этого следует в качестве первого параметра функции задать имя файла, который будет определять COM-объект. Например, фрагмент кода

создает объект Excel.Application и открывает с его помощью файл документа «C:DATADATA.XLS». Если указанный файл во время выполнения данного фрагмента уже открыт с помощью MS Excel, то будет получена ссылка на уже существующий объект.
Для файлов, указываемых в качестве параметра данной функции, должно быть установлено соответствие расширения имени файла и класса COM.
Если в качестве имени файла указана пустая строка, то будет создан новый экземпляр объекта. В этом случае необходимо указать имя класса COM.
Например, фрагмент кода

создает новый документ Excel. В дальнейшем этот документ может быть программно заполнен и сохранен в файл.
Если первый параметр функции пропущен, то будет произведена попытка получить активный объект указанного типа. Если активного объекта указанного типа в настоящий момент не существует, то будет вызвано исключение. Например, в результате выполнения оператора

Переменная П получит значение типа COMОбъект, соответствующее активному приложению MS Excel, если таковое имелось, или будет вызвано исключение, если активных экземпляров MS Excel не было.
Пример:

Источник

1с excel saveas перезапись существующего файла

Чтение и запись данных MS Excel с использованием 1С, примеры форматирования таблицы

Часто возникает потребность прочитать данные из таблицы MS Excel или из источника 1С записать (выгрузить) данные в книгу MS Excel. Можно ли средствами 1С решить эти задачи? Ответ прост — можно и это не особо затруднительно. Чтение данных по большому счету вообще не представляет больших проблем. При выгрузке данных в MS Excel возможны некоторые трудности, что может быть связано с особенностями VBA. Для выгрузки данных из 1С в MS Excel можно воспользоваться заранее созданным шаблоном или, если состав данных не известен до самой выгрузки, создать файл MS Excel на ходу. Здесь будет приведен пример чтения данных из файла MS Excel и выгрузки данных с созданием файла.
Допустим, стоит задача прочитать данные из файла MS Excel, каким-то образом их обработать и выгрузить полученный результат в другой файл MS Excel.
Открываем конфигуратор и создаем новую внешнюю обработку.

Добавляем форму обработку и на нее помещаем две кнопки: Загрузить данные и Выгрузить данные. Поскольку цель данного примера показать приемы работы с загрузкой и выгрузкой данных в файл MS Excel, то на форму промежуточные данные выводить не будем. Они будут помещены в таблицу значений и затем выгружены из нее.

Теперь поместим в обработчики кнопкок «Загрузить данные» и «Выгрузить данные»функционал чтения данных из файла MS Excel.

В обработчиках кнопок получается следующий код:

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

Пример обработки и файла для чтения данных можно скачать тут

Источник

   Sh_Vlad

11.11.10 — 15:36

Как сделать, чтобы сохраненный файл был формата 2003, если он создан 2007-м

   Sh_Vlad

1 — 15.11.10 — 14:30

Вопрос открыт…

   МаленькийВопросик

2 — 15.11.10 — 14:33

да там в настройках экселя есть — сохранять в 97-2003 форматах…

   Sh_Vlad

3 — 15.11.10 — 14:36

(2) Создан и сохраняется программно в 8-ке

   Sh_Vlad

4 — 15.11.10 — 14:40

Ексель=Новый COMОбъект(«Excel.Application»);
…….

Ексель.ActiveWorkBook.SaveAs(ИмяФайла);

нужен формат 2003

   Grusswelle

5 — 15.11.10 — 14:43

(4) Уверен, что метод .SaveAs() имеет не один, а больше параметров.

   Sh_Vlad

6 — 16.11.10 — 08:58

По макросу определил формат — 43, должен быть вторым параметром. Не сохраняет…

   smaharbA

7 — 16.11.10 — 09:02

сохроняет

   Sh_Vlad

8 — 16.11.10 — 09:04

Ексель.ActiveWorkBook.SaveAs(ИмяФайла,43);

через попытку — не сохрАняет!!!

   Sh_Vlad

9 — 16.11.10 — 09:05

Можно параметр задать до вызова метода?

   smaharbA

10 — 16.11.10 — 09:06

может код сперва

   Смешной 1С

11 — 16.11.10 — 09:11

Не уверен, но а если имя файла задать с расширением xls

price.xls

   Sh_Vlad

12 — 16.11.10 — 09:18

Имя .xls
Без параметра сохраняет тем Ёкселем, который на машине — был третий, не было проблем, сейчас 7, а файл нужен для дальнейшей работы..

Описание метода в Excel:
SaveAs([Filename], [FileFormat], [Password], [WriteResPassword], [ReadOnlyRecommended], [CreateBackup], [AccessMode As XlSaveAsAccessMode = xlNoChange], [ConflictResolution], [AddToMru], [TextCodepage], [TextVisualLayout], [Local])

   smaharbA

13 — 16.11.10 — 09:20

дисаблеалерт=истина
савеас
дисаблеалерт=ложь

   Sh_Vlad

14 — 16.11.10 — 09:23

(13) Отключить предупреждения?
Что даст? не будет говорить что несохранен?

   Sh_Vlad

15 — 16.11.10 — 09:32

(13) Проделал — ничего…

   Sh_Vlad

16 — 16.11.10 — 09:50

Есть ще предложения?

   PaulBC

17 — 16.11.10 — 10:09

Работает все. Только у меня офис 2010 и филеформат = 56

   smaharbA

18 — 16.11.10 — 10:32

Истина=-1;
Ложь=0;
Ексель=СоздатьОбъект("excel.application");
Книги=Ексель.Workbooks;
Книга=Книги.Add();
Ексель.DisplayAlerts=Ложь;
Книга.SaveAs("c:\книга.xlsx");
Книга.Close();
Книга=Книги.Open("c:\книга.xlsx");
Книга.SaveAs("c:\книга.xls",-4143);
Ексель.DisplayAlerts=Истина;
Книга.Close()
Ексель.Quit();
   бомболюк

19 — 16.11.10 — 10:45

у меня с 56 работало

  

Sh_Vlad

20 — 16.11.10 — 11:10

Спасибо всем. Все дело в параметре — сработал (-4143).

Сохранение файла рабочей книги Excel, существующего или нового, с помощью кода VBA. Методы Save и SaveAs объекта Workbook, параметр SaveChanges метода Close.

Сохранение существующего файла

Сохранить существующий открытый файл рабочей книги Excel из кода VBA можно несколькими способами. В примерах используется выражение ActiveWorkbook, которое может быть заменено на ThisWorkbook, Workbooks(«ИмяКниги.xlsx»), Workbooks(myFile.Name), где myFile — объектная переменная с присвоенной ссылкой на рабочую книгу Excel.

Простое сохранение файла после внесенных кодом VBA Excel изменений:

Сохранение файла под другим именем (исходная рабочая книга будет автоматически закрыта без сохранения внесенных изменений):

ActiveWorkbook.SaveAs Filename:=«C:ТестоваяНоваяКнига.xlsx»

Сохранить файл рабочей книги можно перед закрытием, используя параметр SaveChanges метода Close со значением True:

ActiveWorkbook.Close SaveChanges:=True

Чтобы закрыть файл без сохранения, используйте параметр SaveChanges метода Close со значением False:

ActiveWorkbook.Close SaveChanges:=False

Сохранение файла под другим именем при закрытии рабочей книги:

ActiveWorkbook.Close SaveChanges:=True, Filename:=«C:ТестоваяНоваяКнига.xlsx»

Если в примерах с методом Close параметр SaveChanges пропустить, будет открыто диалоговое окно с запросом о сохранении файла.

Новая книга сохраняется с указанием полного имени:

Workbooks.Add

ActiveWorkbook.SaveAs Filename:=«C:ТестоваяНоваяКнига.xlsx»

После этого к новой книге можно обращаться по имени: Workbooks ("НоваяКнига.xlsx").

Если не указать полное имя для сохраняемого файла:

Workbooks.Add

ActiveWorkbook.Save

тогда новая книга будет сохранена с именем и в папке по умолчанию, например: Книга1.xlsx, Книга2.xlsx, Книга3.xlsx и т.д. в папке «Документы».


На чтение 9 мин Просмотров 26.8к. Опубликовано 09.11.2017

MS Excel давно стал стандартом для работы с электронными таблицами. В статье рассматриваются способы программной выгрузки и загрузки из 1С в файлы Excel.

Существует несколько способов программной работы с файлами Excel из 1С. Каждый из них имеет свои преимущества и недостатки.

Содержание

  1. Обмен через табличный документ
  2. Обмен через OLE
  3. Использование COMSafeArray
  4. Обмен через ADO
  5. Выгрузка без программирования

Обмен через табличный документ

Данный способ простой. Его суть заключается в том, что объект ТабличныйДокумент имеет методы:

  • Записать(<ИмяФайла>, <ТипФайлаТаблицы>) для выгрузки данных в файл;
  • Прочитать(<ИмяФайла>, <СпособЧтенияЗначений>) для загрузки данных из файла.

Внимание!

Метод Записать() доступен как на клиенте, так и на сервере. Метод Прочитать() доступен только на стороне сервера. Необходимо помнить об этом
при планировании клиент-серверного взаимодействия.


Рассмотрим пример сохранения табличного документа в файл. Необходимо любым способом создать и заполнить объект ТабличныйДокумент, а выгрузка в файл осуществляется всего лишь одной строкой:

ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);

Здесь ТабДок — сформированный табличный документ, ПутьКФайлу — имя файла для выгрузки, ТипФайлаТабличногоДокумента.XLSX — формат создаваемого файла. Поддерживаются следующие форматы Excel:

  • XLS95 — формат Excel 95;
  • XLS97 — формат Excel 97;
  • XLSX — формат Excel 2007.

Загрузка из файла осуществляется также достаточно просто:

ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);

Здесь ПутьКФайлу — путь к загружаемому файлу Excel. СпособЧтенияЗначенийТабличногоДокумента.Значение определяет, каким образом нужно интерпретировать данные, считываемые из исходного документа. Доступны варианты:

  • Значение;
  • Текст.

Обмен через OLE

Обмен через технологию OLE automation, пожалуй, самый распространенный вариант программной работы с файлами Excel. Он позволяет использовать весь функционал, предоставляемый Excel, но отличается медленной скоростью работы по сравнению с другими способами. Для обмена через OLE требуется установка MS Excel:

  • На компьютере конечного пользователя, если обмен происходит на стороне клиента;
  • На компьютере сервера 1С:Предприятие, если обмен происходит на стороне сервера.

Пример выгрузки:

// Создание COM-объекта
Эксель = Новый COMОбъект(«Excel.Application»);
// Отключение вывода предупреждений и вопросов
Эксель.DisplayAlerts = Ложь;
// Создание новой книги
Книга = Эксель.WorkBooks.Add();
// Позиционирование на первом листе
Лист = Книга.Worksheets(1);

// Запись значения в ячейку
Лист.Cells(НомерСтроки, НомерКолонки).Value = ЗначениеЯчейки;

// Сохранение файла
Книга.SaveAs(ИмяФайла);

// Закрытие Эксель и освобождение памяти
Эксель.Quit();
Эксель = 0;

Примеры чтения:

// —— ВАРИАНТ 1 ——

// Создание COM-объекта
Эксель = Новый COMОбъект(«Excel.Application»);
// Открытие книги
Книга = Эксель.Workbooks.Open(ПутьКФайлу);
// Позиционирование на нужном листе
Лист = Книга.Worksheets(1);

// Чтение значения ячейки, обычно здесь располагается цикл обхода ячеек
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;

// Закрытие книги
Книга.Close(0);

// Закрытие Эксель и освобождение памяти
Эксель.Quit();
Эксель = 0;

// —— ВАРИАНТ 2 ——

// Открытие книги
Книга = ПолучитьCOMОбъект(ПутьКФайлу);
// Позиционирование на нужном листе
Лист = Книга.Worksheets(1);

// Чтение значения ячейки, обычно здесь располагается цикл обхода ячеек
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;

// Закрытие книги
Книга.Application.Quit();

Для обхода всех заполненных строк листа Excel можно использовать следующие приемы:

// —— ВАРИАНТ 1 ——
КоличествоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row;
Для НомерСтроки = 1 По КоличествоСтрок Цикл
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
КонецЦикла;

// —— ВАРИАНТ 2 ——
НомерСтроки = 0;
Пока Истина Цикл
НомерСтроки = НомерСтроки + 1;
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
Если НЕ ЗначениеЗаполнено(ЗначениеЯчейки) Тогда
Прервать;
КонецЕсли;
КонецЦикла;

Вместо последовательного обхода всех строк листа можно выгрузить все данные в массив и работать с ним. Такой подход будет быстрее при чтении большого объема данных:

ВсегоКолонок = Лист.Cells(1, 1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row;

Область = Лист.Range(Лист.Cells(1, 1), Лист.Cells(ВсегоСтрок, ВсегоКолонок));
Данные = Область.Value.Выгрузить();

В таблице ниже приведены наиболее востребованные свойства и методы для работы с Excel через OLE:

Действие Код Комментарий
Работа с приложением
Установка видимости окна приложения Эксель.Visible = Ложь;
Установка режима вывода предупреждений (выводить/не выводить) Эксель.DisplayAlerts = Ложь;
Закрытие приложения Эксель.Quit();
Работа с книгой
Создание новой книги Книга = Эксель.WorkBooks.Add();
Открытие существующей книги Книга = Эксель.WorkBooks.Open(ИмяФайла);
Сохранение книги Книга.SaveAs(ИмяФайла);
Закрытие книги Книга.Close(0);
Работа с листом
Установка текущего листа Лист = Книга.WorkSheets(НомерЛиста);
Установка имени Лист.Name = Имя;
Установка защиты Лист.Protect();
Снятие защиты Лист.UnProtect();
Установка ориентации страницы Лист.PageSetup.Orientation = 2; 1 — книжная, 2 — альбомная
Установка левой границы Лист.PageSetup.LeftMargin = Эксель.CentimetersToPoints(Сантиметры);
Установка верхней границы Лист.PageSetup.TopMargin = Эксель.CentimetersToPoints(Сантиметры);
Установка правой границы Лист.PageSetup.RightMargin = Эксель.CentimetersToPoints(Сантиметры);
Установка нижней границы Лист.PageSetup.BottomMargin = Эксель.CentimetersToPoints(Сантиметры);
Работа со строками, колонками, ячейками
Установка ширины колонки Лист.Columns(НомерКолонки).ColumnWidth = Ширина;
Удаление строки Лист.Rows(НомерСтроки).Delete();
Удаление колонки Лист.Columns(НомерКолонки).Delete();
Удаление ячейки Лист.Cells(НомерСтроки, НомерКолонки).Delete();
Установка значения Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение;
Объединение ячеек Лист.Range(Лист.Cells(НомерСтроки, НомерКолонки), Лист.Cells(НомерСтроки1, НомерКолонки1)).Merge();
Установка шрифта Лист.Cells(НомерСтроки, НомерКолонки).Font.Name = ИмяШрифта;
Установка размера шрифта Лист.Cells(НомерСтроки, НомерКолонки).Font.Size = РазмерШрифта;
Установка жирного шрифта Лист.Cells(НомерСтроки, НомерКолонки).Font.Bold = 1; 1 — жирный шрифт, 0 — нормальный
Установка курсива Лист.Cells(НомерСтроки, НомерКолонки).Font.Italic = 1; 1 — курсив, 0 — нормальный
Установка подчеркнутого шрифта Лист.Cells(НомерСтроки, НомерКолонки).Font.Underline = 2; 2 — подчеркнутый, 1 — нет

Для того, чтобы узнать какое свойство нужно менять или какой метод вызвать можно воспользоваться макросами Excel. Если записать макрос с требуемыми действиями, то после можно посмотреть программный код на VBA записанного макроса.

Использование COMSafeArray

При выгрузке больших объемов данных из 1С в Excel для ускорения можно использовать объект COMSafeArray. Согласно определению из синтакс-помощника, COMSafeArray — объектная оболочка над многомерным массивом SafeArray из COM. Позволяет создавать и использовать SafeArray для обмена данными между COM-объектами. Проще говоря, это массив значений, который можно использовать для обмена между приложениями по технологии OLE.

// Создание COMSafeArray
МассивКом = Новый COMSafeArray(«VT_Variant», ВсегоКолонок, ВсегоСтрок);
// Заполнение COMSafeArray
Для Стр = 0 По ВсегоСтрок1 Цикл
Для Кол = 0 По ВсегоКолонок1 Цикл
МассивКом.SetValue(Кол, Стр, Значение);
КонецЦикла;
КонецЦикла;
// Присвоение области листа Excel значений из COMSafeArray
Лист.Range(Лист.Cells(1, 1), Лист.Cells(ВсегоСтрок, ВсегоКолонок)).Value = МассивКом;

Обмен через ADO

Файл Excel при обмене через ADO представляет собой базу данных, к которой можно обращаться при помощи SQL-запросов. Установка MS Excel не требуется, но обязательно наличие драйвера ODBC, при помощи которого будет осуществляться доступ. Используемый драйвер ODBC определяется при указании строки соединения к файлу. Обычно требуемый драйвер уже установлен на компьютере.

Обмен через ADO заметно быстрее обмена через OLE, но при выгрузке нет возможности использовать функционал Excel для оформления ячеек, разметки страниц, задания формул и т.д.

Пример выгрузки:

// Создание COM-объекта для соединения
Соединение = Новый COMОбъект(«ADODB.Connection»);

// Установка строки соединения
Соединение.ConnectionString = «
|Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source=»+ИмяФайла+«;
|Extended Properties=»»Excel 12.0 XML;HDR=YES»»;»;
Соединение.Open(); // Открытие соединения

// Создание COM-объекта для команды
Команда = Новый COMОбъект(«ADODB.Command»);
Команда.ActiveConnection = Соединение;

// Присвоение текста команды для создания таблицы
Команда.CommandText = «CREATE TABLE [Лист1] (Колонка1 char(255), Колонка2 date, Колонка3 int, Колонка4 float)»;
Команда.Execute(); // Выполнение команды

// Присвоение текста команды для добавления строки таблицы
Команда.CommandText = «INSERT INTO [Лист1] (Колонка1, Колонка2, Колонка3, Колонка4) values (‘абвгдеё’, ‘8/11/2017’, ‘12345’, ‘12345,6789’)»;
Команда.Execute(); // Выполнение команды

// Удаление команды и закрытие соединения
Команда = Неопределено;
Соединение.Close();
Соединение = Неопределено;

Для создания нового листа и формирования его структуры можно воспользоваться объектами ADOX.Catalog и ADOX.Table. В этом случае код примет вид:

// Создание COM-объекта для работы с книгой
Книга = Новый COMОбъект(«ADOX.Catalog»);
Книга.ActiveConnection = Соединение;

// Создание COM-объекта для работы со структурой данных на листе
Таблица = Новый COMОбъект(«ADOX.Table»);
Таблица.Name = «Лист1»;
Таблица.Columns.Append(«Колонка1», 202);
Таблица.Columns.Append(«Колонка2», 7);
Таблица.Columns.Append(«Колонка3», 5);
Таблица.Columns.Append(«Колонка4», 5);

// Создание в книге листа с описанной структурой
Книга.Tables.Append(Таблица);
Таблица = Неопределено;
Книга = Неопределено;

В приведенном примере в методе

Таблица.Columns.Append(«Колонка1», 202);

во втором параметре указывается тип колонки. Параметр необязательный, вот некоторые значения типа колонки:

  • 5 — adDouble;
  • 6 — adCurrency;
  • 7 — adDate;
  • 11 — adBoolean;
  • 202 — adVarWChar;
  • 203 — adLongVarWChar.

Пример чтения:

// Создание COM-объекта для соединения
Соединение = Новый COMОбъект(«ADODB.Connection»);

// Установка строки соединения
Соединение.ConnectionString = «
|Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source=»+ИмяФайла+«;
|Extended Properties=»»Excel 12.0 XML;HDR=YES»»;»;
Соединение.Open(); // Открытие соединения

// Создание COM-объекта для получения выборки
Выборка = Новый COMОбъект(«ADODB.Recordset»);
ТекстЗапроса = «SELECT * FROM [Лист1$]»;

// Выполнение запроса
Выборка.Open(ТекстЗапроса, Соединение);

// Обход результата выборки
Пока НЕ Выборка.EOF() Цикл
ЗначениеКолонки1 = Выборка.Fields.Item(«Колонка1»).Value; // Обращение по имени колонки
ЗначениеКолонки2 = Выборка.Fields.Item(0).Value; // Обращение по индексу колонки
Выборка.MoveNext();
КонецЦикла;

Выборка.Close();
Выборка = Неопределено;
Соединение.Close();
Соединение = Неопределено;

В строке соединения параметр HDR определяет как будет восприниматься первая строка на листе. Возможны варианты:

  • YES — первая строка воспринимается как названия колонок. К значениям можно обращаться по имени и по индексу колонки.
  • NO — первая строка воспринимается как данные. К значениям можно обращаться только по индексу колонки.

В приведенных примерах рассмотрено лишь несколько объектов ADO. Объектная модель ADO состоит из следующих объектов:

  • Connection;
  • Command;
  • Recordset;
  • Record;
  • Fields;
  • Stream;
  • Errors;
  • Parameters;
  • Properties.

Выгрузка без программирования

Для сохранения данных из 1С в Excel не всегда целесообразно прибегать к программированию. Если в режиме Предприятия пользователь может отобразить требуемые для выгрузки данные, то, их возможно сохранить в Excel без программирования.

Для сохранения табличного документа (например, результата отчета) можно вызвать команду Сохранить или Сохранить как… главного меню.

Сохранение табличного документа 1С

В открывшемся окне требуется выбрать каталог, имя и формат сохраняемого файла.

Для сохранения данных динамических списков (например, списка номенклатуры) необходимо:

  1. Вывести данные в табличный документ при помощи команды Еще ⇒ Вывести список…;
  2. Сохранить табличный документ в требуемый формат.

Сохранение динамического списка

How to allow your macro/vba code to overwrite an existing Excel file.

This allows you to do things like, export a weekly report to a specific file and have it overwrite that file each week.

The technique in this tutorial does not require any confirmation in order to overwrite the file.

Sections:

Overwrite A File Using VBA

Example

Notes

Overwrite A File Using VBA

Add these two lines to any macro to allow them to overwrite a file without having the confirmation window appear:

Add to the top of the macro:

Application.DisplayAlerts = False

Add to the bottom of the macro:

Application.DisplayAlerts = True

Application.DisplayAlerts controls if Excel will show pop-up window alert messages, such as when you go to overwrite an existing file and Excel wants to warn you about that.

When you set this value to False, these messages will not appear and, so, you won’t have to confirm anything that the macro does.

Make sure to set it back to True at the end of the macro so that Excel will function normally again after the macro has finished running.

Example

Here is a simple macro that you can use to test this out:

Sub Save_File_Overwrite()

' Save the current workbook as Test.xlsm
' 51 for regular file
' 52 for macro enabled workbook
ThisWorkbook.SaveAs "C:Test.xlsm", 52

End Sub

Run the above macro twice from a macro-enabled workbook. The second time that you run it, you will see a confirmation dialogue box asking if you want to overwrite the existing file or not.

Add the DisplayAlerts lines of code to the file and try it again:

Sub Save_File_Overwrite()

' Don't show confirmation window
Application.DisplayAlerts = False

' Save the current workbook as Test.xlsm
' 51 for regular file
' 52 for macro enabled workbook
ThisWorkbook.SaveAs "C:DirectoryTest.xlsm", 52

' Allow confirmation windows to appear as normal
Application.DisplayAlerts = True

End Sub

Now, the file will overwrite the existing file without making a mention of it.

Notes

Be careful! When you disable alerts in Excel, data can be overwritten without you knowing about it. If you have a large and complex macro that works fine except for one area where you want to save the file, disable alerts only for that one area and enable them afterwards for the rest of the macro; this reduces the chance that other data will get overwritten without warning.

Download the sample file if you want to see the above example in Excel.

Similar Content on TeachExcel

Excel VBA MsgBox — Message Box Macro

Tutorial: Create a pop-up message box in Excel using VBA Macros. This allows you to show a message t…

Logical Operators in Excel VBA Macros

Tutorial: Logical operators in VBA allow you to make decisions when certain conditions are met.
They…

Require a Password to View Hidden Worksheets in Excel — VBA Tutorial

Tutorial:
Full Course
A simple macro that allows you to require a password in order to view hidden …

Excel VBA — Create an Array — 3 ways

Tutorial: Ill show you three different ways to create an array in Excel VBA and Macros and how to ge…

Loop Through an Array in Excel VBA Macros

Tutorial:
I’ll show you how to loop through an array in VBA and macros in Excel.  This is a fairly…

Loop through a Range of Cells in Excel VBA/Macros

Tutorial: How to use VBA/Macros to iterate through each cell in a range, either a row, a column, or …

Subscribe for Weekly Tutorials

BONUS: subscribe now to download our Top Tutorials Ebook!

Студворк — интернет-сервис помощи студентам

Всем доброго времени суток.Помогите разобраться с методом SaveAs
Есть,ну назовем ее,небольшая программа,которая выполняет некоторые действия.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// test excel.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <windows.h>
 
#import "C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\MSO.DLL" auto_rename no_namespace
#import "C:\Program Files (x86)\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB" auto_rename no_namespace
#import "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" auto_rename
 
int main( )
{
    HRESULT hRes = E_FAIL;
    
    CoInitialize(NULL);
 
    Excel::_ApplicationPtr MyExcelApp;
 
    
    hRes = MyExcelApp.CreateInstance("Excel.Application");
    
    if ( FAILED(hRes) )     
    {
        MessageBox(NULL, L"Excel не найден!", L"Ошибка", MB_OK);  
        return 1;
    }
 
    MyExcelApp->PutVisible(0, FALSE);
 
 
    Excel::_WorkbookPtr MyExcelBook; 
    MyExcelBook = MyExcelApp->Workbooks->Add();
    Excel::_WorksheetPtr MyExcelSheet;
    MyExcelSheet = MyExcelBook->ActiveSheet;
 
    Excel::RangePtr MyExcelCell;
 
    for (int i=1;i<=10;i++)
    {
        for (int j=1;j<=10;j++)
        {
MyExcelCell = MyExcelSheet->Cells->Item[i][j];//i строк j cтолбцов
MyExcelCell->Value2 = "test";
        }//j
         }//i
    MyExcelApp->PutVisible(0,TRUE);
    
    MyExcelApp->Save();//тут уже непонятно
 
    
    return 0;
}

Мне надо сохранить файл на диске Ц.
Необходимо сохранить этот файл в указанное место.Как это сделать через saveAs?Не могу разобраться с передаваемыми аргументами.
заранее спасибо!
З.Ы.Как объявить дисплейлертс,чтобы не выдавало сообщение о сохранении?

Like this post? Please share to your friends:
  • Saveas vba excel примеры
  • Saveas vba excel параметры
  • Save xml from excel
  • Save word save life
  • Save word page by page