Com to excel программа

Here is a list of Best Free Gedcom to Excel Converter Software for Windows. Using these free software, you can convert a Gedcom family tree to Excel spreadsheet formats including CSV and XLS. Although, most of these only convert Gedcom file to CSV spreadsheet format. These freeware let you create a Excel spreadsheet file containing people, families, children, personal attachments, notes, personal facts, and other information from the source Gedcom file. Apart from Excel, many of these support more output formats to convert a Gedcom file, such as HTML, XML, PDF, Text, Treepad, etc.

Most of these are primarily genealogy software that lets you view, create, edit, and analyze family tree. You can edit the Gedcom data prior to conversion to Excel spreadsheet. Plus, these also lets you generate various family charts, graphs, and reports to analyze family trees. Additionally, handy tools like age calculator, relationship calculator, family tree webpage creator, Gedcom file combiner, and more can be found in these free software.

The steps to convert Gedcom to Excel are very easy and intuitive. You can also checkout software description to know exact steps of conversion. Go through the list to know more about these free converters.

My Favorite Free Gedcom to Excel Converter Software for Windows:

Gramps is a feature rich genealogy software that can also be used to convert Gedcom to Excel and many other supported output formats.

MyHeritage Family Tree Builder is another good family tree software to convert Gedcom to excel and perform various other tasks on source Gedcom file.

You may also checkout lists of best free GEDCOM File Viewer Software, Family Tree Chart Maker Software, and Genetic Heredity Calculator for Windows.

Gramps

Gramps is a free open source Gedcom to Excel converter for Windows. It is basically a genealogy software that enables you to create, organize, and share family trees. Using it, you can convert a Gedcom file to CSV Excel format. You can simply open and view a family tree saved in Gedcom file and then convert it to CSV spreadsheet format. Besides CSV, it also lets you convert Gedcom to a lot more other file formats. The export formats supported in it include Web Family Tree, GeneWeb, XML, vCalender, and vCard.

How to convert Gedcom to Excel in Gramps:

  • Firstly, use its Import function to quickly open a Gedcom file in it.
  • Now, you can use its direct editing options and Add menu to modify the imported family tree.
  • Next, go to its File > Export option and select CSV as output format. Prior to Gedcom to Excel conversion, you get the flexibility to customize output settings including data to include (people, marriages, children, places), privacy filter, living filter, person filter, reference filter, and note filter.

Additional Features:

This software lets you generate useful statistic chart, family graph, ancestor tree, various text reports, analysis and exploration, and more.

Conclusion:

It a feature rich family tree software that also lets you convert Gedcom to Excel and other formats.

MyHeritage Family Tree Builder

MyHeritage Family Tree Builder is another free Gedcom to Excel converter software for Windows. As its name suggests, it is a free family tree maker software that lets you view, create, edit, and analyze family trees. You can simply import a family tree in it, view and analyze the family tree, edit it if needed, and then convert Gedcom to Excel using a dedicated function.

Note: To use this software, you need to register a free account on its official website and log in to this software.

How to convert Gedcom to Excel in MyHeritage Family Tree Builder:

  • At first, open this software and import a Gedcom file.
  • Now, if needed, you can modify the family tree using available designing tools and features.
  • Next, go to its Edit menu and click the Export to Excel option.
  • After that, simply customize lists of people, families, tasks, and more to include in final output and convert Gedcom to CSV spreadsheet file.

Additional Features:

  • You can create various family charts such as ancestor chart, descendant chart, fan chart, close family chart, hourglass chart, and more.
  • It lets you generate several reports related to imported family tree, such as ancestor, relationships, timeline, addresses, etc., and more.
  • It lets you convert a Gedcom file to PDF document.

Limitation:

It also offers a premium version with some more features, that can be purchased from its official website.

Conclusion:

It is a powerful family tree maker using which you can easily convert a Gedcom to Excel format.

ScionPC

ScionPC is a free portable Gedcom to Excel converter for Windows. It is ye another genealogy software that helps you create as well as view and edit family tree saved in Gedcom file. You can find all essential tools to create and edit family trees. Also, you can also analyze Gedcom data using a variety of reports, charts, and calculator tools. Now, let us checkout a sorted procedure to convert Gedcom to Excel using it.

How to convert Gedcom to Excel in ScionPC:

  • Launch this portable application and import a Gedcom file using its File > GEDCOM > Import function.
  • You can then modify family tree and containing information as per your requirement.
  • Finally, go to File > Export as > CSV option and convert Gedcom to Excel. It lets you select what information you want to include in output CSV spreadsheet, like  people, families, children, personal attachments, notes, personal facts, etc.

Additional Features:

  • You can convert Gedcom data to Text and Treepad formats.
  • It also lets you append two Gedcom files into one.
  • You can generate various reports to analyze family tree, like personal index, list of people, family group sheet, pedigree chart, descendant chart, progeny chart, chronology charts, etc.
  • It provides some additional tools to process and analyze family tree including Age/Date Calculator, Soundex Calculator, Relationship Calculator, Character Map, Attachment Locator, and Multiple Attachments.

Conclusion:

It is a nice lightweight family tree editor which you can use to convert Gedcom to Excel (CSV) spreadsheet format.

Oxy-Gen

Oxy-Gen is one more free Gedcom to Excel converter. Using it, you can convert Gedcom to CSV spreadsheet as well as a lot more other formats. It supports HTML, XML, PHP (MySQL), and SQL (Oracle) formats as output to convert a Gedcom file. That’s it. You can’t perform any other tasks through it. It doesn’t even let you view Gedcom file. It only lets you perform the Gedcom file conversion.

How to convert Gedcom to Excel in Oxy-Gen:

  • At first, provide input Gedcom file in the Geneaological file field.
  • Next, provide output file location in the Output field.
  • Now, select output format as CSV Excel/ Access.
  • After that, you can use Options function to customize some output parameters before conversion, such as  display order of places, date format, display column title, generate information in several files, and more.
  • Finally, press the Convert button to start Gedcom to excel conversion process.

Conclusion:

It is one of the simplest Gedcom to Excel converter which is only used to convert Gedcom file to various more formats.

GEDxlate

GEDxlate is the next free Gedcom to Excel converter for Windows. It is very simple and easy to use converter which lets you convert Gedcom to XLS and CSV formats. Apart from that, it also lets you convert Gedcom to MS Access dB (*.mdb) and Text files.

How to convert Gedcom to Excel in GEDxlate:

  • Open this software and import a Gedcom file to it.
  • Now, select Create MS Excel or CSV option from the interface to quickly convert Gedcom to Excel.

Conclusion:

It is quite an outdated Gedcom translator which you can use to convert Gedcom t o Excel and other formats.

Published Date: 26 May, 2020

Modified Date: 26 May, 2020

Вообще COM-объекты используют для соединения информационной базы 1С с файлом Word, Excel, Outlook или любой другой программой, поддерживающей данный интерфейс обмена данными. В этой статье рассмотрим задачу выгрузки/загрузки данных из/в MS Excel. Чтобы это осуществить воспользуемся COM-соединением и объектом Excel.Application. Для примера возьмём задачу выгрузки/загрузки данных о номенклатуре. Пример рассмотрим ниже.

COM-соединение

Что же такое COM-соединение? Component Object Model (или COM) – это технология (фирмы Microsoft) взаимодействующих компонентов, которые одновременно могут быть использованы в разных приложениях. При этом весь функционал соответствующего компонента наследуется внутрь разрабатываемого приложения. В нашем случае COM-объект Excel.Application используется внутри кода 1С для операций с файлом книги MS Excel.

Объект Excel.Application

У объекта Excel.Application существует ряд методов, которые нам могут пригодиться для реализации нижепоставленной задачи:

  • ОбъектExcel.WorkBooks.Open(ИмяФайла) – Открытие книги MS Excel
  • ОбъектExcel.ActiveWorkbook.Close() – Закрытие текущей книги
  • ОбъектExcel.Quit() – Закрытие COM-объекта
  • ОбъектExcel.Sheets(ИмяЛиста) – Получает лист книги
  • ЛистExcel.Cells(НачалоСтрока, НачалоСтолбец) – Ячейка таблицы на данном листе
  • ЛистExcel.Range(Ячейка1, Ячейка2) – Выделенная область
  • ЯчейкаExcel.Value – Значение ячейки таблицы
  • ЯчейкаExcel.Text – Текст ячейки таблицы

Постановка задачи

Итак, предположим, что в обработке 1С у нас имеется табличная часть, состоящая из следующих колонок:

  • Номенклатура
  • Количество
  • Цена
  • Сумма.

Необходимо реализовать 2 функционала (сделать на форме 2 основные кнопки):

  1. Выгрузка табличной части в подготовленный файл MS Excel
  2. Загрузка табличной части из файла.


Алгоритм выгрузки/загрузки в MS Excel

Алгоритм выгрузки следующий:

  1. Выгружаем табличную часть в таблицу значений
  2. Создаём новый COM-объект Excel.Application
  3. Выбираем файл, открываем файл книги MS Excel
  4. Переходим на заданный лист книги
  5. Выгружаем данные в файл
  6. Закрываем книгу, выходим из COM-объекта.

Алгоритм загрузки следующий:

  1. Создаём новый COM-объект Excel.Application
  2. Выбираем файл, открываем файл книги MS Excel
  3. Переходим на заданный лист книги
  4. Загружаем данные из файла в таблицу значений
  5. Закрываем книгу, выходим из COM-объекта
  6. Таблицу значений выгружаем в табличную часть.

Операция выгрузки и загрузки данных о номенклатуре происходит в заранее подготовленный шаблон MS Excel.


Пример кода 1С

Код 1С я постарался разделить на отдельные функции, чтобы, скопировав, с ними можно было работать где угодно. На форме обработки 1С были созданы 3 кнопки:

  • Выгрузить
  • Загрузить
  • Очистить.


В итоге в реализации алгоритма получились следующие основные процедуры и функции 1С:

  • ПолучитьExcel – Получает COM-объект MS Excel;
  • ЗакрытьExcel – Закрывает использование COM-объекта MS Excel;
  • ПолучитьЛистExcel – Получает лист книги Excel;
  • ДобавитьТабличныйДокументВExcel – Добавляет табличный документ на лист Excel (нужно для выгрузки данных);
  • ПрочитатьОбластьИзExcel – Читает область ячеек с листа Excel (нужно для загрузки данных);
  • ШиринаЛистаExcel – Ширина листа Excel;
  • ВысотаЛистаExcel – Высота листа Excel;
  • ПреобразоватьТДвТЗ – Преобразует табличный документ в таблицу значений;
  • ПреобразоватьТЗвТД – Преобразует таблицу значений в табличный документ;

Для начала приведу вспомогательную функцию для открытия/сохранения файла на диске:

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
53
54
55
56
57
58
59
#Если Клиент Тогда
// Функция выбора файла.
//
// Параметры:
// 	РежимВыбора - <РежимДиалогаВыбораФайла> - Выбор каталога, открытие или сохранение файла;
//	Расширение - <Строка>, <Массив> - Список расширений файла.
//
// Возвращаемое значение:
//	<Строка> - Путь к выбранному файлу.
//
Функция ВыбратьФайлДокумента(РежимВыбора, Расширение = "*") Экспорт
 
	ИмяФайла = "";
	//ФорматМассив = РазобратьСтрокуВМассивПоРазделителю(Расширение);
	ФорматМассив = ПреобразоватьВМассив(Расширение);
 
	ДиалогФайла = Новый ДиалогВыбораФайла(РежимВыбора);
	Если РежимВыбора = РежимДиалогаВыбораФайла.Открытие Тогда
		ДиалогФайла.Заголовок = "Открыть документ";
	ИначеЕсли РежимВыбора = РежимДиалогаВыбораФайла.Сохранение Тогда
		ДиалогФайла.Заголовок = "Сохранить документ";
	ИначеЕсли РежимВыбора = РежимДиалогаВыбораФайла.ВыборКаталога Тогда
		ДиалогФайла.Заголовок = "Выбрать каталог";
	КонецЕсли;
 
	Фильтр = "";
	Для Каждого ЭлементМассив Из ФорматМассив Цикл
		Если ЭлементМассив = "*" Тогда
			Фильтр = Фильтр + "|" + НСтр("ru = ""Все файлы""; en = ""All files""");
		ИначеЕсли ВРег(ЭлементМассив) = ВРег("TXT") Тогда
			Фильтр = Фильтр + "|" + НСтр("ru = ""Текстовый документ""; en = ""Text document""");
		ИначеЕсли ВРег(ЭлементМассив) = ВРег("MXL") Тогда
			Фильтр = Фильтр + "|" + НСтр("ru = ""Табличный документ""; en = ""Table document""");
		ИначеЕсли ВРег(ЭлементМассив) = ВРег("XLS") ИЛИ ВРег(ЭлементМассив) = ВРег("XLSX") ИЛИ ВРег(ЭлементМассив) = ВРег("XLSM") Тогда
			Фильтр = Фильтр + "|" + НСтр("ru = ""Табличный документ MS Excel""; en = ""Table document MS Excel""");
		ИначеЕсли ВРег(ЭлементМассив) = ВРег("XML") Тогда
			Фильтр = Фильтр + "|" + НСтр("ru = ""Документ XML""; en = ""Document XML""");
		ИначеЕсли ВРег(ЭлементМассив) = ВРег("HTML") ИЛИ ВРег(ЭлементМассив) = ВРег("HTM") Тогда
			Фильтр = Фильтр + "|" + НСтр("ru = ""HTML документ""; en = ""HTML document""");
		Иначе
			Фильтр = Фильтр + "|" + НСтр("ru = ""Файл " + ВРег(ЭлементМассив) + """; en = ""File " + ВРег(ЭлементМассив) + """");
		КонецЕсли;
		Фильтр = Фильтр + " (*." + НРег(ЭлементМассив) + ")|*." + НРег(ЭлементМассив);
	КонецЦикла;
	Фильтр = Сред(Фильтр, 2);
 
	ДиалогФайла.Фильтр = Фильтр;
	ДиалогФайла.МножественныйВыбор = Ложь;
 
	Если ДиалогФайла.Выбрать() Тогда
		ИмяФайла = ?(РежимВыбора = РежимДиалогаВыбораФайла.ВыборКаталога, ДиалогФайла.Каталог, ДиалогФайла.ПолноеИмяФайла);
	Иначе
		Текст = "ru = ""Файл не выбран!""; en = ""File(s) not selected!""";
		Предупреждение(НСтр(Текст));
	КонецЕсли;
 
	Возврат ИмяФайла;
КонецФункции	
#КонецЕсли

Также в реализации алгоритма были задействованы следующие вспомогательные функции:

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
// Преобразует в массив переменную любого типа данных.
//
// Параметры:
//	Объект - Произвольный - произвольный объект данных;
//	Проверка - <Булево> - Осуществление проверки на заполненное значение.
//
// Возвращаемое значение:
//	<Массив> - Массив с теми же данными.
//
Функция ПреобразоватьВМассив(Объект, Проверка = Ложь) Экспорт
 
	ОбъектМассив = Новый Массив;
 
	Если НЕ Проверка ИЛИ ЗначениеЗаполнено(Объект) Тогда
		Если ТипЗнч(Объект) = Тип("Массив") Тогда
			ОбъектМассив = Объект;
		ИначеЕсли ТипЗнч(Объект) = Тип("СписокЗначений") Тогда
			ОбъектМассив = Объект.ВыгрузитьЗначения();
		ИначеЕсли ТипЗнч(Объект) = Тип("Строка") Тогда
			ОбъектМассив = РазобратьСтрокуВМассивПоРазделителю(Объект);
		ИначеЕсли ТипЗнч(Объект) = Тип("Структура") Тогда
			Для Каждого Элемент Из Объект Цикл
				ОбъектМассив.Добавить(Элемент.Значение);
			КонецЦикла;
		Иначе
			ОбъектМассив.Добавить(Объект);
		КонецЕсли;
	КонецЕсли;
 
	Возврат ОбъектМассив;
КонецФункции;
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
// Разбирает строку в массив подстрок по разделителю. 
// При этом пробелы между подстроками не учитываются.
//
// Параметры:
//	Стр - исходная строка;
//	СтрРазделитель - разделитель, по умолчанию ",";
//	ИгнорироватьПустые - игнорировать ли пустые места между разделителями.
//
// Возвращаемое значение:
//	Массив строк
//
Функция РазобратьСтрокуВМассивПоРазделителю(Знач Стр, СтрРазделитель = ",", ИгнорироватьПустые = Ложь) Экспорт
 
	Результат = Новый Массив;
 
	ВхождениеРазделителя = Найти(Стр, СтрРазделитель);
	Пока ВхождениеРазделителя <> 0 Цикл
		ЧастьДоРазделителя = СокрЛП(Лев(Стр, ВхождениеРазделителя - 1));
		Если НЕ (ИгнорироватьПустые И ПустаяСтрока(ЧастьДоРазделителя)) Тогда
			Результат.Добавить(ЧастьДоРазделителя);
		КонецЕсли;
		Стр = СокрЛП(Сред(Стр, ВхождениеРазделителя + 1));
		ВхождениеРазделителя = Найти(Стр, СтрРазделитель);
	КонецЦикла;
 
	Если НЕ (ИгнорироватьПустые И ПустаяСтрока(Стр)) Тогда
		Результат.Добавить(СокрЛП(Стр));
	КонецЕсли;
 
	Возврат Результат;	
КонецФункции;
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
// Создаёт новую таблицу значений с заданными колонками.
//
// Параметры:
//	пКолонки - <Строка>, <Структура>, <Массив>, <СписокЗначений>, <ТаблицаЗначений> - 
//	 Набор колонок для таблицы значений.
//	
// Возвращаемое значение:
//	<ТаблицаЗначений> - Созданная таблица.
//
Функция ПолучитьТаблицуВывода(пКолонки) Экспорт
 
	ТЗ = Новый ТаблицаЗначений;
 
	Если пКолонки <> Неопределено Тогда 
 
		Если ТипЗнч(пКолонки) = Тип("Строка") Тогда
			пКолонки = РазобратьСтрокуВМассивПоРазделителю(пКолонки);
		КонецЕсли;
 
		Если ТипЗнч(пКолонки) = Тип("Структура") Тогда
			Для Каждого Поле Из пКолонки Цикл	
				СтрокаТабл = ТЗ.Колонки.Добавить(Поле.Ключ, Поле.Значение);	
			КонецЦикла;
		ИначеЕсли ТипЗнч(пКолонки) = Тип("СписокЗначений") Тогда
			Для Каждого Поле Из пКолонки Цикл	
				Если Поле.Пометка Тогда
					СтрокаТабл = ТЗ.Колонки.Добавить(Поле.Значение, пКолонки.ТипЗначения, Поле.Представление);
				КонецЕсли;
			КонецЦикла;
		ИначеЕсли ТипЗнч(пКолонки) = Тип("ТаблицаЗначений") Тогда
			ЕстьНаименование = (пКолонки.Колонки.Найти("Наименование") <> Неопределено);
			ЕстьТипЗначения = (пКолонки.Колонки.Найти("ТипЗначения") <> Неопределено);
			ЕстьЗаголовок = (пКолонки.Колонки.Найти("Заголовок") <> Неопределено);
			ЕстьШирина = (пКолонки.Колонки.Найти("Ширина") <> Неопределено);
			Для Каждого Поле Из пКолонки Цикл
				СтрокаТабл = ТЗ.Колонки.Добавить(?(ЕстьНаименование, Поле.Наименование, ""), ?(ЕстьТипЗначения, Поле.ТипЗначения, Новый ОписаниеТипов), ?(ЕстьЗаголовок, Поле.Заголовок, ""), ?(ЕстьШирина, Поле.Ширина, 0));	
			КонецЦикла;
		Иначе
			Для Каждого Поле Из пКолонки Цикл	
				СтрокаТабл = ТЗ.Колонки.Добавить(Поле);	
			КонецЦикла;
		КонецЕсли;
 
	КонецЕсли;
 
	Возврат ТЗ;	
КонецФункции;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Создаёт структуру колонок из таблицы значений.
//
// Параметры:
//	ТабЗначений - <ТаблицаЗначений> - Любая таблица.
//	
// Возвращаемое значение:
//	<Структура> - Созданная таблица.
//
Функция ПолучитьСтруктуруКолонокИзТаблицы(ТабЗначений) Экспорт
 
	СтруктураКолонок = Новый Структура;
	Для Каждого ЭлементКолонка Из ТабЗначений.Колонки Цикл
		СтруктураКолонок.Вставить(ЭлементКолонка.Имя, ЭлементКолонка.ТипЗначения);
	КонецЦикла;
 
	Возврат СтруктураКолонок;
КонецФункции;

Основные функции обработки алгоритма следующие:

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
// Получает объект файла MS Excel.
//
// Параметры:
//	ИмяФайла - <Строка> - Путь к файлу XLS.
//	
// Возвращаемое значение:
//	<COMОбъект> - Полученный объект. Если объект не найден, то возвращается "Неопределено".
//
Функция ПолучитьExcel(ИмяФайла) Экспорт
 
	ФайлНаДиске = Новый Файл(ИмяФайла);
 
	Excel = Неопределено;
	Если нРег(ФайлНаДиске.Расширение) = ".xls" 
	 ИЛИ нРег(ФайлНаДиске.Расширение) = ".xlsx"
	 ИЛИ нРег(ФайлНаДиске.Расширение) = ".xlsm"
	Тогда
 
		Если НЕ ФайлНаДиске.Существует() Тогда
			Сообщить("Файл не существует!", СтатусСообщения.Внимание);
			Возврат Неопределено;
		КонецЕсли;
 
		Попытка
			Excel = Новый COMОбъект("Excel.Application");
			Excel.WorkBooks.Open(ИмяФайла);
		Исключение
			Сообщить("Не удалось инициализировать Excel!", СтатусСообщения.Внимание);
			Возврат Неопределено;
		КонецПопытки;
 
	КонецЕсли;	
 
	Возврат Excel;
КонецФункции;
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
// Закрывает файл MS Excel.
//
// Параметры:
//	Excel - <COMОбъект> - Объект файла MS Excel;
//	Сохранить - <Булево> - Указывает сохранять файл при закрытии или нет. По умолчанию
//	 пользователю предлагается выбрать это самому.
//
Процедура ЗакрытьExcel(Excel, Сохранить = Неопределено) Экспорт
 
	Попытка
		#Если Клиент Тогда
		Состояние("Закрытие файла Microsoft Excel...");
		#КонецЕсли
		Если Сохранить = Неопределено Тогда
			Excel.ActiveWorkbook.Close();
		Иначе
			Excel.ActiveWorkbook.Close(Сохранить);
		КонецЕсли;
		Excel.Quit();
	Исключение
		Сообщить("Ошибка закрытия Excel!", СтатусСообщения.Внимание);
	КонецПопытки;
 
	Excel = Неопределено;	
КонецПроцедуры;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Получает лист из файла книги MS Excel.
//
// Параметры:
//	Excel - <COMОбъект> - Объект файла MS Excel;
//	ИмяЛиста - <Строка> - Имя листа книги MS Excel.
//	
// Возвращаемое значение:
//	<COMОбъект> - Полученный лист. Если объект не найден, то возвращается "Неопределено".
//
Функция ПолучитьЛистExcel(Excel, ИмяЛиста) Экспорт
 
	Попытка
		ExcelЛист = Excel.Sheets(ИмяЛиста);
	Исключение
		Сообщить("Не удалось прочитать лист Excel!", СтатусСообщения.Внимание);
		Возврат Неопределено;
	КонецПопытки;
 
	Возврат ExcelЛист;	
КонецФункции;
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
53
54
55
56
57
58
// Записывает данные из табличного документа в файл MS Excel.
//
// Параметры:
//	ЛистExcel - <COMОбъект> - Лист из файла MS Excel;
//	Таблица - <ТабличныйДокумент> - Документ, по порядку следования колонок и строк 
//	 соответствующий листу файла MS Excel;
//	Шапка - <Число> - Количество первых строк для шапки в файле MS Excel;
//	СписокСтолбцов - <Строка>, <Массив> - Список номеров столбцов, которые будут выгружены 
//	 в файл MS Excel;
//	СписокСтрокЗапрета - <Строка>, <Массив> - Список номеров строк, которые не должны
//	 выгружаться в файл MS Excel. Если этот параметр не задан, то выгружаются все строки;
//	ПроверятьЗначения - <Булево> - Определяет будут ли проверяться ячейки табличного 
//	 документа на содержание в них значения, а не текстовое представление этого значения. 
//	 По умолчанию этот параметр "Ложь".
//
Процедура ДобавитьТабличныйДокументВExcel(ЛистExcel, Таблица, Шапка, СписокСтолбцов, СписокСтрокЗапрета = Неопределено, ПроверятьЗначения = Ложь) Экспорт
 
	Если ТипЗнч(СписокСтолбцов) = Тип("Строка") Тогда
		СписокСтолбцов = РазобратьСтрокуВМассивПоРазделителю(СписокСтолбцов);
	КонецЕсли;
	Если ТипЗнч(СписокСтрокЗапрета) = Тип("Строка") Тогда
		СписокСтрокЗапрета = РазобратьСтрокуВМассивПоРазделителю(СписокСтрокЗапрета);
	КонецЕсли;
 
	ЕстьМассив = (СписокСтрокЗапрета = Неопределено);
	Если ЕстьМассив Тогда
		Попытка
			МассивCOM = Новый COMSafeArray("VT_VARIANT", 1, Таблица.ВысотаТаблицы - Шапка);
		Исключение
			ЕстьМассив = Ложь;
		КонецПопытки;
	КонецЕсли;
 
	Для Каждого НомерСтолбца Из СписокСтолбцов Цикл
 
		Для НомерСтроки = Шапка+1 По Таблица.ВысотаТаблицы Цикл 
 
			Если СписокСтрокЗапрета = Неопределено 
				ИЛИ (СписокСтрокЗапрета.Найти(Строка(НомерСтроки)) = Неопределено И СписокСтрокЗапрета.Найти(Число(НомерСтроки)) = Неопределено) 
			Тогда
				Область = Таблица.Область(НомерСтроки, Число(НомерСтолбца));
				Значение = ?(ПроверятьЗначения И Область.СодержитЗначение, Область.Значение, Область.Текст);
				Если ЕстьМассив Тогда
					МассивCOM.SetValue(0, НомерСтроки-Шапка-1, Значение);
				Иначе
					ЛистExcel.Cells(НомерСтроки, Число(НомерСтолбца)).Value = Значение;
				КонецЕсли;
			КонецЕсли;
 
		КонецЦикла;
 
		Если ЕстьМассив Тогда 
			ЛистExcel.Range(ЛистExcel.Cells(Шапка+1, Число(НомерСтолбца)), ЛистExcel.Cells(Таблица.ВысотаТаблицы, Число(НомерСтолбца))).Value = МассивCOM;
		КонецЕсли;
 
	КонецЦикла;
 
КонецПроцедуры;
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
// Читает область ячеек из MS Excel в табличный документ.
//
// Параметры:
//	ЛистExcel - <COMОбъект> - Лист из файла MS Excel;
//	ТабДок - <ТабличныйДокумент> - Исходный табличный документ, поле табличного 
//	 документа или таблица значений. Если этот параметр не задан, то создаётся
//	 новый табличный документ;
//	НачалоСтрока - <Число> - Начальная строка в файле MS Excel;
//	НачалоСтолбец - <Число> - Начальный столбец в файле MS Excel;
//	КонецСтрока - <Число> - Конечная строка в файле MS Excel;
//	КонецСтолбец - <Число> - Конечный столбец в файле MS Excel.
//	
// Возвращаемое значение:
//	<ТабличныйДокумент> - Возвращает прочитанный из области в MS Excel табличный 
//	 документ, который передавался в эту функцию параметром "ТабДок".
//
Функция ПрочитатьОбластьИзExcel(ЛистExcel, ТабДок = Неопределено, НачалоСтрока, НачалоСтолбец, КонецСтрока, КонецСтолбец) Экспорт
 
	Если ТабДок = Неопределено Тогда
		ТабДок = Новый ТабличныйДокумент;
	КонецЕсли;
 
	Попытка
		МассивCOM = Новый COMSafeArray("VT_VARIANT", КонецСтолбец - НачалоСтолбец + 1, КонецСтрока - НачалоСтрока + 1);
		ЕстьМассив = Истина;
	Исключение
		ЕстьМассив = Ложь;
	КонецПопытки;
 
	Если ЕстьМассив Тогда
		МассивCOM = ЛистExcel.Range(ЛистExcel.Cells(НачалоСтрока, НачалоСтолбец), ЛистExcel.Cells(КонецСтрока, КонецСтолбец)).Value;
 
		Для ИндексКолонка = НачалоСтолбец По КонецСтолбец Цикл
			Для ИндексСтрока = НачалоСтрока По КонецСтрока Цикл
				Значение = МассивCOM.GetValue(ИндексКолонка - НачалоСтолбец + 1, ИндексСтрока - НачалоСтрока + 1);
				ТабДок.Область(ИндексСтрока, ИндексКолонка).СодержитЗначение = Истина;
				ТабДок.Область(ИндексСтрока, ИндексКолонка).Значение = Значение;
			КонецЦикла;
		КонецЦикла;	
	Иначе
		Для ИндексКолонка = НачалоСтолбец По КонецСтолбец Цикл
			Для ИндексСтрока = НачалоСтрока По КонецСтрока Цикл
				Значение = ЛистExcel.Cells(ИндексСтрока, ИндексКолонка).Value;
				ТабДок.Область(ИндексСтрока, ИндексКолонка).СодержитЗначение = Истина;
				ТабДок.Область(ИндексСтрока, ИндексКолонка).Значение = Значение;
			КонецЦикла;
		КонецЦикла;
	КонецЕсли;
 
	Возврат ТабДок;
КонецФункции;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Определяет ширину листа MS Excel.
//
// Параметры:
//	ЛистExcel - <COMОбъект> - Лист из файла MS Excel.
//	
// Возвращаемое значение:
//	<Число> - Количество столбцов в таблице.
//
Функция ШиринаЛистаExcel(ЛистExcel) Экспорт
 
	ЕстьЗащита = ЛистExcel.ProtectContents;
	Возврат ?(ЕстьЗащита, ЛистExcel.UsedRange.Columns.Count, ЛистExcel.Cells.SpecialCells(11).Column);
 
КонецФункции;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Определяет высоту листа MS Excel.
//
// Параметры:
//	ЛистExcel - <COMОбъект> - Лист из файла MS Excel.
//	
// Возвращаемое значение:
//	<Число> - Количество строк в таблице.
//
Функция ВысотаЛистаExcel(ЛистExcel) Экспорт
 
	ЕстьЗащита = ЛистExcel.ProtectContents;
	Возврат ?(ЕстьЗащита, ЛистExcel.UsedRange.Rows.Count, ЛистExcel.Cells.SpecialCells(11).Row);
 
КонецФункции;
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
53
54
55
56
57
58
59
60
61
62
63
64
// Преобразовать табличный документ в таблицу значений.
//
// Параметры:
//	ТабДок - <ТабличныйДокумент> - Исходный табличный документ;
//	СтруктураКолонок - <Структура>, <ТаблицаЗначений> - Структура колонок;
//	НачалоСтрока - <Число> - Строка начала области;
//	НачалоСтолбец - <Число> - Столбец начала области;
//	КонецСтрока - <Число> - Строка конца области;
//	КонецСтолбец - <Число> - Столбец конца области.
//	
// Возвращаемое значение:
//	<ТаблицаЗначений> - Полученная таблица значений.
//
Функция ПреобразоватьТДвТЗ(ТабДок, СтруктураКолонок, Знач НачалоСтрока = Неопределено, Знач НачалоСтолбец = Неопределено, Знач КонецСтрока = Неопределено, Знач КонецСтолбец = Неопределено) Экспорт
 
	// Определение габаритов таблицы
	Если НачалоСтрока = Неопределено И НачалоСтолбец = Неопределено Тогда
		НачалоСтрока = 1;
		НачалоСтолбец = 1;
	КонецЕсли;
 
	Если НачалоСтрока = Неопределено Тогда
		НачалоСтрока = 1;
		Пока НЕ ТабДок.Область(НачалоСтрока, НачалоСтолбец).СодержитЗначение 
		 И НачалоСтрока < ТабДок.ВысотаТаблицы 
		Цикл
			НачалоСтрока = НачалоСтрока + 1;
		КонецЦикла;
	ИначеЕсли НачалоСтолбец = Неопределено Тогда
		НачалоСтолбец = 1;
		Пока НЕ ТабДок.Область(НачалоСтрока, НачалоСтолбец).СодержитЗначение 
		 И НачалоСтолбец < ТабДок.ШиринаТаблицы
		Цикл
			НачалоСтолбец = НачалоСтолбец + 1;
		КонецЦикла;
	КонецЕсли;
 
	КонецСтрока = ?(КонецСтрока = Неопределено, ТабДок.ВысотаТаблицы, КонецСтрока);
	КонецСтолбец = ?(КонецСтолбец = Неопределено, ТабДок.ШиринаТаблицы, КонецСтолбец);
 
	// Преобразование
	ЭтоТаблица = (ТипЗнч(СтруктураКолонок) = Тип("ТаблицаЗначений"));
	ТабЗначений = ПолучитьТаблицуВывода(СтруктураКолонок);
 
	Для ИндексСтроки = НачалоСтрока По КонецСтрока Цикл
		СтрокаТЗ = ТабЗначений.Добавить();
 
		ИндексКолонки = НачалоСтолбец;
		Для Каждого Колонка Из СтруктураКолонок Цикл
			НаименованиеКолонки = ?(ЭтоТаблица, Колонка.Наименование, Колонка.Ключ);
			пИндексКолонки = ?(ЭтоТаблица, Колонка.СтолбецОтчёт, ИндексКолонки);
 
			Если ТабДок.Область(ИндексСтроки, пИндексКолонки).СодержитЗначение Тогда
				СтрокаТЗ[НаименованиеКолонки] = ТабДок.Область(ИндексСтроки, пИндексКолонки).Значение;
			Иначе
				СтрокаТЗ[НаименованиеКолонки] = ТабДок.Область(ИндексСтроки, пИндексКолонки).Текст;
			КонецЕсли;
 
			ИндексКолонки = ИндексКолонки + 1;
		КонецЦикла;
	КонецЦикла;
 
	Возврат ТабЗначений;
КонецФункции;
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
// Преобразовать таблицу значений в табличный документ.
//
// Параметры:
//	ТабЗначений - <ТаблицаЗначений> - Исходная таблица значений;
//	ТабДок - <ТабличныйДокумент> - Полученный табличный документ. Если параметр не задан, 
//	 то документ создаётся заново и возвращается функцией;
//	НачалоСтрока - <Число> - Строка начала области;
//	НачалоСтолбец - <Число> - Столбец начала области;
//	ВыводитьЗаголовки - <Булево> - Определяет выводить ли имена колонок или нет.
//	
// Возвращаемое значение:
//	<ТабличныйДокумент> - Полученный табличный документ (возвращает параметр "ТабДок").
//
Функция ПреобразоватьТЗвТД(ТабЗначений, ТабДок = Неопределено, Знач НачалоСтрока = Неопределено, Знач НачалоСтолбец = Неопределено, ВыводитьЗаголовки = Ложь) Экспорт
 
	Если ТабДок = Неопределено Тогда
		ТабДок = Новый ТабличныйДокумент;
	КонецЕсли;
 
	// Определение габаритов таблицы
	НачалоСтрока = ?(НачалоСтрока = Неопределено, 1, НачалоСтрока);
	НачалоСтолбец = ?(НачалоСтолбец = Неопределено, 1, НачалоСтолбец);
 
	// Преобразование
	ИндексСтроки = НачалоСтрока;
	Если ВыводитьЗаголовки Тогда
		ИндексКолонки = НачалоСтолбец;
		Для Каждого Колонка Из ТабЗначений.Колонки Цикл
			ТабДок.Область(ИндексСтроки, ИндексКолонки).Текст = ?(ПустаяСтрока(Колонка.Заголовок), Колонка.Имя, Колонка.Заголовок);
			ИндексКолонки = ИндексКолонки + 1;
		КонецЦикла;
		ИндексСтроки = ИндексСтроки + 1;
	КонецЕсли;
 
	Для Каждого Элемент Из ТабЗначений Цикл
		ИндексКолонки = НачалоСтолбец;
		Для Каждого Колонка Из ТабЗначений.Колонки Цикл
			ТабДок.Область(ИндексСтроки, ИндексКолонки).СодержитЗначение = Истина;
			ТабДок.Область(ИндексСтроки, ИндексКолонки).ТипЗначения = Новый ОписаниеТипов(Колонка.ТипЗначения);
			ТабДок.Область(ИндексСтроки, ИндексКолонки).Значение = Элемент[Колонка.Имя];
			ИндексКолонки = ИндексКолонки + 1;
		КонецЦикла;
		ИндексСтроки = ИндексСтроки + 1;
	КонецЦикла;
 
	Возврат ТабДок;
КонецФункции;

В реализации алгоритма был дополнительно использован объект COMSafeArray с типом VT_VARIANT. Этот COM-объект выступает в качестве двумерного массива, в котором удобно хранить значения ячеек. Также использование данного объекта повышает быстродействие операций чтения/записи для ячеек таблицы.

Целиком получившуюся обработку 1С, а также шаблон для загрузки/выгрузки можно скачать по ссылке ниже.

Указанные здесь процедуры и функции я постарался сделать универсальными. Они могут быть применены для широкого круга прикладных задач.

Скачать


Автор:

Laura McKinney


Дата создания:

2 Апрель 2021


Дата обновления:

9 Апрель 2023


как создать таблицу в excel

Видео: как создать таблицу в excel

Содержание

  • 3 эффективных метода преобразования VCF в Excel
  • Решение 1. Преобразование VCF в Excel Online
  • Решение 2. Загрузите конвертер VCF в Excel.
  • Решение 3. VCard в Excel: попробуйте открыть VCF в Excel
  • Бонусные советы: как разблокировать пароль листа Excel
  • Упаковать

«Можно ли преобразовать файл VCard или .vcf в таблицу Excel? Если возможно, покажи мне, как это сделать ».

Конверсия из .vcf в Excel конечно возможно. Излишне говорить, что преобразование — это сложный процесс, о котором не знают во всем мире. Но не волнуйтесь. У нас есть несколько методов преобразования, и все они подробно описаны в статье ниже. Проверить это.

3 эффективных метода преобразования VCF в Excel

Ниже мы подробно расскажем о 3 наиболее эффективных и удобных методах преобразования VCF в Excel. Проверь их.

Решение 1. Преобразование VCF в Excel Online

В этой части мы представляем онлайн-конвертер VCF в Excel. Это легкодоступные варианты преобразования. Но пользователям нужно быть очень осторожными при их использовании. Некоторые веб-сайты-конвертеры представляют собой мошенничество, предназначенное для того, чтобы отнять у пользователей деньги или просто заразить их устройства вредоносным ПО. Тем не менее, есть несколько законных онлайн-конвертеров, которые работают, но их процент успеха значительно ниже.

При этом мы перечислили несколько ссылок ниже, которые лучше, чем остальные онлайн-конвертеры с более высоким показателем успеха. Проверь их.

  • Aconvert: https://www.aconvert.com
  • fConvert — бесплатный онлайн-конвертер: https://fconvert.com/document/vcf-to-xls/
  • PDF Mall: https://pdfmall.com/vcf-to-excel
  • Интернет-поставщик: http://thewebvendor.com/vcf-to-excel-csv-online-converter.html

Главный выбор нашего редактора — aconvert.com. Его работа проста, и мы изложили шаги ниже.

  • Шаг 1. Откройте ссылку и нажмите «Выбрать файлы».
  • Шаг 2: Выберите нужный документ, а затем выберите формат целевого документа.
  • Шаг 3. Наконец, нажмите «Конвертировать сейчас».

Преобразованный документ будет доступен в разделе «Преобразованные результаты». Вы можете скачать файл, сохранив его в облачных сервисах хранения, таких как Google Drive или Dropbox.

Решение 2. Загрузите конвертер VCF в Excel.

Помимо веб-сайтов онлайн-конвертеров, вы также можете скачать конвертер VCF в Excel и использовать его для конвертации файлов.

  • Шаг 1. Вы можете скачать конвертер VCF в CSV по следующей ссылке: https://officetricks.com/vcf-to-excel-converter/
  • Шаг 2: После этого завершите установку и преобразуйте файл в Excel.

Это последнее решение, и в этой части мы обсудим шаги по открытию файла VCF с помощью MS Excel. Процедура не такая сложная, как вы думаете. Итак, ознакомьтесь с приведенными ниже инструкциями.

  • Шаг 1: Откройте MS Excel, нажмите «Файл» и выберите «Открыть».

  • Шаг 2: Появится раскрывающееся меню. Щелкните «Все файлы». Вам нужно выбрать все файлы Vcard, которые необходимо импортировать. После этого дважды щелкните файл.
  • Шаг 3. Теперь нажмите «С разделителями» и нажмите «Далее», чтобы продолжить.

  • Шаг 4: После этого нажмите «Вкладка» в верхней части окна и нажмите «Далее».
  • Шаг 5: Наконец, просто нажмите «Общие», а затем нажмите «Готово», чтобы завершить процедуру.

Бонусные советы: как разблокировать пароль листа Excel

Поскольку остальная часть статьи полностью посвящена способам преобразования VCF в Excel, мы взяли на себя смелость и посвятили эту часть статьи разблокировке зашифрованного листа Excel без пароля. Блокировка документа Excel — распространенная проблема для пользователей. Многие люди в мире страдают из-за того, что забывают пароль к своим документам.

Итак, мы пришли к решению. Мы рекомендуем пользователям воспользоваться услугами профессионального программного обеспечения для восстановления паролей, так как пользоваться ими легко и гарантированно добиться успеха. Предлагаемое нами программное обеспечение называется PassFab for Excel. Это действительно эффективное программное обеспечение с репутацией успешного восстановления паролей. Излишне говорить, что использование этого программного обеспечения очень простое и совершенно беспроблемное. Теперь посмотрим, как это работает:

  • Шаг 1. Сама операция довольно проста. Вам необходимо скачать и установить PassFab for Excel на свой компьютер.
  • Шаг 2. Теперь запустите программу и в главном интерфейсе нажмите «Восстановить открытый пароль Excel».

  • Шаг 3: После этого нажмите «Импортировать файл Excel», чтобы добавить заблокированный документ. Программа автоматически определит шифрование документа и его сложность.

  • Шаг 4: Затем вам нужно выбрать тип атаки для восстановления пароля. Вам доступны 3 режима. Атака по словарю, Грубая сила с атакой по маске и Грубая сила.

  • Шаг 5: После выбора режима восстановления эта программа сразу же начнет восстановление.

Правильный пароль для вашего документа Excel будет восстановлен в течение нескольких минут. И последнее, но не менее важное: вот видеоурок о том, как его использовать:

Упаковать

Следовательно, мы предоставили документированные способы преобразования VCF в Excel. Как показано в статье, процедуры просты с легко выполнимыми шагами. Но если вы также беспокоитесь об открытии документа Excel без правильного пароля, то в этой статье мы также подробно описали лучшую программу восстановления пароля для файла Excel. Программа называется PassFab for Excel. Предоставляется вся необходимая информация, ознакомьтесь с ними.

Цель работы: Изучить технологии обмена данными через COM порт при помощи средств ActiveX

Задача работы: Построение канала связи “Excel – объект” для целей управления.

Приборы и принадлежности: Два персональных компьютера, Microsoft Excel, COM Port Toolkit, элемент ActiveX MSCOMM32.OCX , нуль-модемный кабель, адаптер MOXA UPort 1150, Модуль дискретного ввода-вывода ОВЕН МК110, датчик температуры с частотным выходом MAX6577.

ВВЕДЕНИЕ

Все мы любим Excel за скорость и простоту отчетов. Использование Excel для прямого управления объектами позволяет исключить затраты связанные с использованием посредников, например, ОРС серверов и, при этом, максимально упростить накопление и обработку данных. В этой работе даны примеры “выхода” Excel во внешнюю среду через СОМ порт, а также показана релейная система термостатирования на базе модуля дискретного ввода-вывода ОВЕН МК110, непосредственно управляемая из Excel.

ОБЩИЕ СВЕДЕНИЯ

COM порт

После́довательный порт (англ. Serial port, COM-порт, англ. Communications port) — сленговое название интерфейса стандарта RS-232, которым массово оснащались персональные компьютеры. Наиболее часто для последовательного порта персональных компьютеров используется стандарт RS-232C. Ранее последовательный порт использовался для подключения терминала, позже для модема или мыши. Сейчас он используется для соединения с источниками бесперебойного питания, для связи с аппаратными средствами разработки встраиваемых вычислительных систем, спутниковыми ресиверами, кассовыми аппаратами, а также с приборами систем безопасности объектов.

С помощью COM-порта можно соединить два компьютера, используя так называемый «нуль-модемный кабель».

Достоинством обмена данными через COM порт является крайняя простота оборудования. Недостатком является низкая скорость, крупные размеры разъемов, а также зачастую высокие требования к времени отклика ОС и драйвера и высокое количество прерываний (одно на половину аппаратной очереди, т.е. 8 байт).

Связь Excel с COM портом осуществляется через управляющий элемент ActiveX — расширенной технологии OLE, призванной существенно увеличить функциональные возможности компьютера.

ActiveX

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

Впервые эта технология была внедрена в 1996 году компанией Microsoft как развитие технологий Component Object Model (COM) и Object Linking and Embedding (OLE) и теперь она широко используется в операционных системах семейства Microsoft Windows, хотя сама технология и не привязана к операционной системе.

Множество приложений для Microsoft Windows, включая приложения самой компании Microsoft, такие, как Internet Explorer, Microsoft Office, Microsoft Visual Studio, Windows Media Player, используют управляющие элементы ActiveX, чтобы реализовать набор функциональных возможностей и в дополнение инкапсулировать их собственный функционал в управляющие элементы ActiveX, чтобы предоставить возможность встраивать их в другие приложения.

Элемент ActiveX: MSCOMM32.OCX

Элемент управления Microsoft Comm Control 6.0 обеспечивает последовательную передачу и прием данных через COM порт. Управляемая событиями связь – мощный метод обработки событий при взаимодействии с последовательным портом.

Во многих ситуациях необходимо получать извещение в тот момент, когда происходит событие, такое как ‘прибытие’ символа или когда происходит изменение в Carrier Detect (CD) или Request To Send (RTS-линии). Для перехвата и обработки этих событий используется событие OnComm. Событие OnComm также обнаруживает и обрабатывает ошибки связи. Каждая управляемая коммуникационная связь использует один последовательный порт. Если необходимо обратиться к более чем одному COM – порту необходимо использовать больше чем одно средство управления связи.

Ряд свойств элемента управления Microsoft Comm Control 6.0 представлен в следующей таблице:



Синтаксис свойства CommPort:

MSComm.CommPort [= portNumber], portNumber можно устанавливать от 1 до 99 (по умолчанию portNumber устанавливается равным 1). Если номера COM-порта не существует MicrosoftCommControl сгенерирует ошибку 68. Свойство CommPort должно устанавливаться перед открытием COM-порта. Тип данных – Integer.

Синтаксис свойства Settings

MSComm.Settings[ = paramString], paramString состоит из четырех установок и имеет следующий формат – «BBBB, P, D, S» , где:

BBBB — скорость в бодах

P — контроль по четности

D — число битов данных

S — число стоповых битов

Примечание: MSCOMM32.OCX можно найти и скачать на официальном сайте компании Microsoft

/1fbd8927a9f57654d204624cd65bf386/ru-ru/default.aspx.

ПРИМЕРЫ ПОЛУЧЕНИЯ ПРОВЕРЕННЫХ РЕЗУЛЬТАТОВ И ВАРИАНТЫ ДЛЯ САМОКОНТРОЛЯ

Задание 1. Настройка соединения двух компьютеров, через COM порт.

1. Соедините два компьютера по RS-232 нуль модемным кабелем или, например, через MOXA UPort 1150 адаптер как показано ниже. В последнем случае необходимо установить драйвер адаптера и настроить его на работу по стандарту RS-232.



2. Запустите программы обмена данными через COM порт, например, программы COM Port Toolkit.

3. Передавая и принимая данные убедитесь, что линия последовательной передачи данных работает



Номер COM порта используемого программой устанавливается через меню Toolkit > Options > COM port configuration > Port. Показанное окно передачи сообщений Send message открывается через меню Toolkit > send. Передаваемые данные отображаются в левом окне, а принимаемые данные — в правом окне. Коды отображаются побайтно в 16-ричном формате. Так, шестнадцатиричный код 36 имеет десятеричный эквивалент 54 (как 3*16+6), это код цифры 6.

Задание 2. Обмен данными из среды Excel через COM порт.

1. Поместите элемент (MSCOMM32.OCX) в папку C:WindowsSystem32

Примечание: Скачать MicrosoftCommControl 6.0 можно с официального сайта компании Microsoft

http://www.microsoft.com/ru-ru/default.aspx.

2. Зарегистрируйте MSCOMM32.OCX в командной строке (cmd) командой regsvr32 MSCOMM32.OCX.





3. Подключите MSCOMM32.OCX к Microsoft Excel, для этого откройте вкладку Excel > Tools->References через последовательность Excel menu > Tools > Macro > Visual Basic Editor > или () и далее > Microsoft Visual Basic menu > Tools > References, в открывшемся окне выберите Browse… и, затем, элемент MSCOMM32.OCX из папки C:WindowsSystem32.

Рис. 1. Окно Referencesпосле с элементом Microsoft Comm Control 6.0 (SP6) (MSCOMM32.OCX).

4. Вставьте форму ()

Рис. 2. Вызов формы.

5. Добавьте в Toolbox элемент MSCOMM32.OCX. Он выглядит как желтый телефон.

Рис. 3. Вставка MSCOMM32.OCX в Toolbox.

6. Перетащите “телефон” из Toolbox на на форму и оставьте его где-нибудь в углу, при работе программы этот элемент отображаться не будет.

7. Добавьте в форму два окна и одну кнопку, одно окно — для ввода передаваемых данных, а второе — для вывода принимаемых данных, редактируя текст кнопки дайте ей название.

Рис. 4. Заполнение формы.

8. Для кнопки формы добавьте код приведённый ниже (для добавления кода, достаточно в редакторе дважды щелкнуть на кнопку и откроется окно для ввода кода):

Private Sub CommandButton1_Click()

MSComm1.CommPort = 1

MSComm1.Settings = «9600,N,8,1»

MSComm1.InputLen = 0

On Error Resume Next

MSComm1.PortOpen = True

If Err Then

MsgBox «Com» & MSComm1.CommPort & «: not available. Change CommPort property to another port.»

Exit Sub

End If

MSComm1.Output = TextBox1.Text

Do

Dummy = DoEvents()

Loop Until MSComm1.InBufferCount >= 8

TextBox2.Text = MSComm1.Input

MSComm1.PortOpen = False

EndSub

Этот код запускается нажатием кнопки. Он устанавливает связь с COM портом пересылает данные верхнего окна формы и дождавшись восьми байт из COM порта отображает их в нижнем окне.

Рис. 5. Форма, и ее код. Функция CommandButton1_Click(), означает, что код будет выполнен при нажатии на кнопку.

9. Понизьте уровень защиты Excel файла перед запуском макрос:

Рис. 6. Снятие защиты запуска макрос.

Примечание. Выберите Enable Macros (разрешить макрос) если система спросит об этом при при запуске программы Excel с макрос:



10. Соедините два компьютера кабелем для обмена данными через COM порты, если такое соединение не установлено.

11. На втором компьютере (по отношению к компьютеру с Excel формой) запустите программу COM Port Toolkit.

12. На первом компьютере запустите макрос кнопкой Run

.

13. Проверьте работоспособность передачи данных от Excel к COM Port Toolkit. Для этого введите данные в верхнее окно формы и нажмите на кнопку формы. COM Port Toolkit должен получить эти данные.

Рис. 7. Вид формы и Toolkit после передачи данных.

Примечание: Если появится сообщение о не возможности работать с COM портом выполните следующее.

• закройте окно предупреждения и форму.

• Узнайте номер подключенного Com порта компьютера: Start > My Computer> Properties > Hardware > Device Manager >

• Укажите на форму UserForm1

и раскройте ее код клавишей F7 или через меню Microsoft Visual Basic > View > Code.

• Замените номер порта в коде формы, например, MSComm1.CommPort = 2

Сообщение об ошибке COM порта было сформировано следующими строками Macros.

If Err Then

MsgBox «Com» & MSComm1.CommPort & «: not available. Change CommPort property to another port.»

14. Проверьте передачу данных в обратном направлении от Toolkit в Excel форму. Для этого запустите форму

введите данные в Toolkit, нажмите на клавишу send и убедитесь, что Excel форма приняла их после нажатия кнопки. Внимание: принятые данные в нижнем окне формы появятся только тогда когда их количество достигнет уровня указанноего в коде: Loop Until MSComm1.InBufferCount >= 8

Задание 3. Циклический обмен данными соединения Excel – Toolkit.

1. Доработайте код кнопки формы как показано ниже.

Private Sub CommandButton1_Click()

MSComm1.CommPort = 2

MSComm1.Settings = «9600,N,8,1»

MSComm1.InputLen = 0

On Error Resume Next

MSComm1.PortOpen = True

If Err Then

MsgBox «Com» & MSComm1.CommPort & «: not available. Change CommPort property to another port.»

Exit Sub

End If

For i = 1 To 4

MSComm1.Output = TextBox1.Text

Do

Dummy = DoEvents()

Loop Until MSComm1.InBufferCount >= 2

TextBox2.Text = MSComm1.Input

Next i

MSComm1.PortOpen = False

End Sub

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

Задание 4. Построение релейной системы термостатирования на базе устройства ввода/вывода данных МК110 с накоплением данных и управлением из Excel .

1. Соберите систему как показано на рисунке ниже.

Рис. 8. Схема соединений системы термостатирования на базе модуля МК110.

Примечание:

• Подключение системы к компьютеру через адаптер UPort 1150 показано на рисунке задания 1.

• Датчик темепатуры установите в зоне нагревателя – лампы.

• Modbus команды приема/передачи данных модуля MK110:



• В соответствии с modbus протоколом устройство МК110 дает ответ на каждую принятую команду в виде последовательности байт.

• Объект COM порта разделяет нулями байты ответа устройства МК110 которые считываются из приемного буфера СОМ порта. Это необходимо учитывать при выделении нужной информации из ответа устройства.

2. Драйвер USB адаптера МОХА UPort 1150 настройте на работу по протоколу RS-485 2W.

3. Запустите Excel и постройте форму как показано в задании 2 включив в нее следующие объекты Toolbox: “телефон”, прокрутку (Scrollbar) и кнопку (CommandButton).

Рис. 9. Пример рабочей формы.

4. Заполните шаблоны объектов формы следующими VBA кодами.

Код кнопки Run:

Private Declare Sub Sleep Lib «kernel32» (ByVal dwMilliseconds As Long) ‘необходима для задания задержки

Private Sub CommandButton1_Click()

Dim MyString As String

Dim b() As Byte

For i = 1 To 20 ‘ начало цикла термостатирования

‘ Установка связи c СОМ портом

MSComm1.CommPort = 2 ‘ номер СОМ порта

MSComm1.Settings = «9600,N,8,1» ‘ скорость передачи СОМ порта и другие параметры

MSComm1.InputLen = 0

On Error Resume Next

MSComm1.PortOpen = True

If Err Then ‘ выводимое сообщение об ошибке открытия СОМ порта:

MsgBox «Com» & MSComm1.CommPort & «: not available. Change CommPort property to another port.»

Exit Sub

End If

b = MSComm1.Input ‘ считывание ответов МК110 на команды “Counter Reset” и “Counter

‘ Read” из входного буфера COM порта (байты ответов разделен нулями),

‘ вычисление значения температуры датчика в градусах С и запись температуры в соответствующую

‘ ячейку таблицы Excel:

Sheet1.Cells(i + 6, 2).Value = (b(UBound(b) — 7) * 256 + b(UBound(b) — 5)) / 1.047 — 273.15

‘ сравнение температуры датчика с заданной температурой хранимой в ячейке В4: Sheet1.Cells(4, 2)

If Sheet1.Cells(i + 6, 2).Value > Sheet1.Cells(4, 2).Value Then

‘ Lamp OFF ‘ выключение лампы по протоколу modbus::

MSComm1.Output = Chr$(16) + Chr$(16) + Chr$(
Innocent
+ Chr$(1) + Chr$(
Innocent
+ Chr$(1) + Chr$(2) + Chr$(
Innocent
+ Chr$(
Innocent
+ Chr$(103) + Chr$(209)

Sheet1.Cells(i + 6, 3) = «Off» ‘ запись “Off” в соответствующую ячейку Excel

Else

‘ Lamp ON OFF ‘ включение лампы по протоколу modbus::

MSComm1.Output = Chr$(16) + Chr$(16) + Chr$(
Innocent
+ Chr$(1) + Chr$(
Innocent
+ Chr$(1) + Chr$(2) + Chr$(3) + Chr$(132) + Chr$(103) + Chr$(66)

Sheet1.Cells(i + 6, 3) = «On» » ‘ запись “On” в соответствующую ячейку Excel

End If

MSComm1.PortOpen = False ‘ отсоединение от COM порта

Next I ‘‘ окончание цикла

End Sub

Код прокрутки:

Private Sub ScrollBar1_Change()

‘запись значения прокрутки как заданной температуры в ячейку B4 Excel

Sheet1.Cells(4, 2).Value = ScrollBar1.Value

End Sub

5. Подготовьте заголовки таблицы:

6. Запустите макрос формы.

7. С помощью прокрутки установите заданную температуру отображаемую в ячейке B4.

8. Запустите термостатирование нажатием кнопки Run формы

9. Сравните собственный процесс термостатирования с результатом, представленным ниже.

Пример результатов работы системы термостатирования управляемой из Excel через COM порт. Excel не только напрямую управляет процессом поддержания заданной температуры (здесь 44С) используя макрос, но и накапливает действительные значения температуры (ячейки B7:B26) и состояния нагревателя (ячейки С7:C26).

КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Какие средства необходимы для обеспечения прямого управления из Excel?

2. От чего зависит частота контура управления через СОМ порт?

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Модули дискретного ввода/вывода MK110-220.8Д(ДН).4Р, MK110-24.8Д(ДН).4Р, MK110-224.8Д(ДН).4Р. Руководство по эксплуатации

2. Гульванский В.В., Забродин О.В., Кудряшов К.В. Отчет по ЛР №9 на тему: «Обмен данными черезcom-порт из Excel»

MSCOMM32.OCX прилагается:

Вложение Размер
08.04_COM port control in Excel.zip 52.16 КБ

Для работы с Excel файлами в системе 1C существуют определенные технологии. Организовать взаимодействие системы 1C с внешней программой MS Excel можно через COM-объект «Excel.Application». Также есть возможность наладить взаимодействие с Excel из 1C используя технологию ADO.

Данный пример демонстрирует работу с использованием «Excel.Application». Для работоспособности данного примера на компьютере обязательно должно быть установлено программное обеспечение MS Excel.

Прочитать из существующего Excel Файла

Процедура ПрочитатьСуществующийExcelФайл(ПутьКФайлу)Попытка
Excel = Новый COMОбъект("Excel.Application");
Excel.DisplayAlerts = 0;
Excel.Visible = 0;
Исключение
Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена");
Возврат;
КонецПопытки;

Книга

= Excel.Workbooks.Open(ПутьКФайлу);
КоличествоЛистов = Книга.Sheets.Count;//Перебор листов
Для НомерЛиста = 1 По КоличествоЛистов Цикл

Лист

= Книга.Sheets(НомерЛиста);
КоличествоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row;
КоличествоКолонок = Лист.Cells(1, 1).SpecialCells(11).Column;//Перебор строк
Для НомерСтроки = 1 По КоличествоСтрок Цикл//Перебор колонок
Для НомерКолонки = 1 По КоличествоКолонок Цикл
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
//Выполнение действий с полученным значением
//...
//...
КонецЦикла;КонецЦикла;КонецЦикла;

Excel

.Workbooks.Close();
Excel.Application.Quit();КонецПроцедуры

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

Процедура ЗаписатьСуществующийExcellФайл(ПутьКФайлу)Попытка
Excel = Новый COMОбъект("Excel.Application");
Excel.DisplayAlerts = 0;
Excel.Visible = 0;
Исключение
Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена");
Возврат;
КонецПопытки;

Книга

= Excel.Workbooks.Open(ПутьКФайлу);

Лист

= Книга.Sheets(1);
//Установить значение в ячейку
Лист.Cells(1, 1).Value = "Тестовое значение";
Книга.Save();

Excel

.Workbooks.Close();
Excel.Application.Quit();КонецПроцедуры

Создать новый Excel Файл

Процедура СоздатьНовыйExcellФайл(ПутьКФайлу)Попытка
Excel = Новый COMОбъект("Excel.Application");
Excel.DisplayAlerts = 0;
Excel.Visible = 0;
Исключение
Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена");
Возврат;
КонецПопытки; //Автоматически будут созданы три листа
Книга = Excel.WorkBooks.Add();
//Получить первый лист
Лист = Книга.Sheets(1);
//Установить значение в ячейку
Лист.Cells(1, 1).Value = "Тестовое значение";Попытка
Книга.SaveAs(ПутьКФайлу);
Исключение
Сообщить(ОписаниеОшибки() + " не удалось сохранить файл");
КонецПопытки;

Excel

.Workbooks.Close();
Excel.Application.Quit();КонецПроцедуры

Понравилась статья? Поделить с друзьями:
  • Combine tables in word
  • Com object with excel
  • Com object for excel
  • Com microsoft office word что это
  • Com microsoft office word 2290 9931