Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ с внСшними прилоТСниями часто Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ использования Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ COM (Component Object Model). Π­Ρ‚ΠΎ стандарт Microsoft, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ ΡƒΠΌΠ΅Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ являСтся критичСски Π²Π°ΠΆΠ½Ρ‹ΠΌ Π½Π°Π²Ρ‹ΠΊΠΎΠΌ, особСнно ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с офисными ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ, ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΈΠ»ΠΈ спСциализированным ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

Π’ срСдС 1Π‘ этот процСсс рСализуСтся Ρ‡Π΅Ρ€Π΅Π· встроСнный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ скрываСт ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ взаимодСйствия, прСдоставляя ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ синтаксис. Однако, нСсмотря Π½Π° простоту Π²Ρ‹Π·ΠΎΠ²Π°, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π½ΡŽΠ°Π½ΡΡ‹ рСгистрации сСрвСров, управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° с внСшними ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠ°ΠΌ памяти ΠΈΠ»ΠΈ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ всСго прилоТСния.

Π”Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚ процСсс ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ. ΠœΡ‹ рассмотрим ΠΊΠ°ΠΊ стандартныС сцСнарии, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² Microsoft Excel, Ρ‚Π°ΠΊ ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТныС случаи взаимодСйствия с кастомными Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ. ПониманиС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ Новый COMObject ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ Π±Π΅Π· использования сторонних ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ COM ΠΈ Π΅Ρ‘ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π² 1Π‘

ВСхнология COM прСдставляСт собой Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ стандарт, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Microsoft для обСспСчСния взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. Π’ контСкстС 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ свойства ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, написанных Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках (C++, Delphi, VB), ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ элСмСнтом здСсь являСтся сСрвСр Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ зарСгистрирован Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ 1Π‘ ΠΌΠΎΠ³Π»Π° ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ внСшний ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ProgID ΠΈΠ»ΠΈ CLSID. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ эти ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ для поиска ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ исполняСмого Ρ„Π°ΠΉΠ»Π° (DLL ΠΈΠ»ΠΈ EXE) Π² систСмном рССстрС Windows. Если рСгистрация Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΡ€Π°Π²Π° доступа ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ошибкой, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅.

πŸ’‘

ВсСгда провСряйтС Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ (x86/x64) прилоТСния 1Π‘ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ COM-сСрвСра. Они Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ, ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ систСмой.

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° с COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π² 1Π‘ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² толстом ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΈΠ»ΠΈ Π² сСрвСрном Ρ€Π΅ΠΆΠΈΠΌΠ΅ (для сСрвСра 1Π‘ Π½Π° Windows). Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚ΠΎΠ½ΠΊΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° прямоС созданиС COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° сторонС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·-Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ бСзопасности Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сСрвСром. Π­Ρ‚ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

πŸ’‘

COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² срСдС Windows ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ совпадСния разрядности процСссов 1Π‘ ΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ прилоТСния.

Бинтаксис создания ΠΈ инициализация ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

ΠŸΡ€ΠΎΡ†Π΅ΡΡ создания внСшнСго ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² ΠΊΠΎΠ΄Π΅ 1Π‘ начинаСтся с использования конструктора Новый COMObject. Π­Ρ‚ΠΎΡ‚ конструктор ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ строковый ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, содСрТащий ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Бинтаксис ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ прост, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ указания ΠΈΠΌΠ΅Π½ΠΈ класса, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ часто ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊ Ρ†Π΅Π»Π΅Π²ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ просмотра рССстра.

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

ExcelApp = Новый COMObject("Excel.Application");

ExcelApp.Visible = Π˜ΡΡ‚ΠΈΠ½Π°;

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚:" + ОписаниСОшибки);

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм экзСмпляр прилоТСния Excel. Π‘Ρ‚Ρ€ΠΎΠΊΠ° "Excel.Application" являСтся стандартным ProgID для этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ создания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ExcelApp присваиваСтся ссылка Π½Π° внСшний ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈ Π΄Π°Π»Π΅Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π΅Π³ΠΎ свойствам ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° использованиС Π±Π»ΠΎΠΊΠ° ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°..Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтом Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с внСшними источниками.

  • πŸ“Œ Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ установлСно Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ сСрвСрС.
  • πŸ”‘ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²Π° доступа: для создания Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€Π°Π²Π° администратора.
  • πŸ”„ Π£Ρ‚ΠΎΡ‡Π½ΠΈΡ‚Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ имя ProgID, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ вСрсиями ПО.

Иногда трСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, Π° ΠΏΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ числовому ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ CLSID. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях строка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ GUID Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках. Π­Ρ‚ΠΎ ΠΌΠ΅Π½Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для чтСния ΠΊΠΎΠ΄Π°, Π½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, особСнно Ссли Π² систСмС установлСно нСсколько вСрсий ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ.

Π“Π΄Π΅ Π½Π°ΠΉΡ‚ΠΈ ProgID?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ OLE/COM Object Viewer (oleview.exe) ΠΈΠ· состава Windows SDK ΠΈΠ»ΠΈ просмотритС Π²Π΅Ρ‚ΠΊΡƒ рССстра HKEY_CLASSES_ROOT для поиска зарСгистрированных сСрвСров Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π Π°Π±ΠΎΡ‚Π° с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΈ свойствами внСшнСго прилоТСния

ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ доступ ΠΊ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π’ 1Π‘ это рСализуСтся Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΡƒΡŽ Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ: имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚ΠΎΡ‡ΠΊΠ°, имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ свойства. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° автоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… 1Π‘ Π² Ρ‚ΠΈΠΏΡ‹, понятныС COM-сСрвСру, ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ заполнСния ячСйки Π² Excel. ΠœΡ‹ обращаСмся ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ листов, Π·Π°Ρ‚Π΅ΠΌ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ячСйкС ΠΈ присваиваСм Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Excel ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 1-индСксныС, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ цикличСском ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

Лист = ExcelApp.Workbooks.Add.Sheets(1);

Лист.Cells(1, 1).Value ="Π”Π°Ρ‚Π°";

Лист.Cells(1, 2).Value ="Π‘ΡƒΠΌΠΌΠ°";

Лист.Cells(2, 1).Value = ВСкущаяДата;

ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, 1Π‘ позволяСт ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, Ссли сСрвСр Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Однако Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ способом остаСтся позиционная ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π² строгом соотвСтствии с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ API внСшнСго прилоТСния. Ошибка Π² порядкС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСпрСдсказуСмому повСдСнию ΠΈΠ»ΠΈ падСнию процСсса.

πŸ“Š Π‘ ΠΊΠ°ΠΊΠΈΠΌ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
Excel
Word
Outlook
Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
Π”Ρ€ΡƒΠ³ΠΎΠ΅

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ слСдуСт ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏΠ°ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, простоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ. Π’ 1Π‘ всС ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ прСдставлСны ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° COMObject, ΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ (ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ) ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. ИспользованиС встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π’ΠΈΠΏΠ—Π½Ρ‡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, с Ρ‡Π΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ строкС ΠΊΠΎΠ΄Π°.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ

ΠΠ΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” главная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ. Excel ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠ½ΡƒΡ‚ΡŒ, Word ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ дСйствия Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π° ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ соСдинСниС с сСрвСром. Π’ 1Π‘ СдинствСнным способом Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΡ… сбоСв являСтся грамотная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Код, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ с COM, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ Π² Π±Π»ΠΎΠΊΠΈ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, критичСски Π²Π°ΠΆΠ½ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Если Π²Ρ‹ создали экзСмпляр прилоТСния, Π²Ρ‹ обязаны Π΅Π³ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π’ 1Π‘ это дСлаСтся ΠΏΡƒΡ‚Π΅ΠΌ присваивания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ значСния НСопрСдСлСно ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ внСшнСго прилоТСния, Ссли Ρ‚Π°ΠΊΠΎΠΉ прСдусмотрСн Π΅Π³ΠΎ интСрфСйсом. Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ этого ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ процСссы Excel ΠΈΠ»ΠΈ Word ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π²ΠΈΡΠ΅Ρ‚ΡŒ Π² диспСтчСрС Π·Π°Π΄Π°Ρ‡.

ДСйствиС ΠœΠ΅Ρ‚ΠΎΠ΄/Бвойство ОписаниС
Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Close(SaveChanges) Π—Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ», ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° сохранСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ прилоТСния Quit ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ процСсс внСшнСго прилоТСния.
ОсвобоТдСниС памяти ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ = НСопрСдСлСно Π Π°Π·Ρ€Ρ‹Π²Π°Π΅Ρ‚ ссылку 1Π‘ Π½Π° COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.
ΠŸΠΎΠ΄Π°Ρ‡Π°_alerts DisplayAlerts = Π›ΠΎΠΆΡŒ ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π° ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ.

β˜‘οΈ Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Excel

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4

Π’ сСрвСрном Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ 1Π‘ ситуация услоТняСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс внСшнСго прилоТСния Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΊΠ°Π·Π°Π½. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ сСрвСра ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ зависанию сСссии. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π° сСрвСрС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ интСрфСйса (свойство Visible = Π›ΠΎΠΆΡŒ ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈ) ΠΈ ΠΏΠΎΠ΄Π°Π²Π»ΡΡ‚ΡŒ всС систСмныС увСдомлСния.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ оставляйтС процСссы Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²ΠΈΡΠ΅Ρ‚ΡŒ Π² памяти послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΈΡΡ‡Π΅Ρ€ΠΏΠ°Π½ΠΈΡŽ рСсурсов сСрвСра ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрном Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅

АрхитСктура запуска ΠΊΠΎΠ΄Π° 1Π‘ Π΄ΠΈΠΊΡ‚ΡƒΠ΅Ρ‚ свои ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с COM. Π’ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ΄ выполняСтся Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΈ созданиС COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° происходит Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ станции ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π­Ρ‚ΠΎ позволяСт Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с локально установлСнным ПО, ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΌΠΈ ΠΈ сканСрами, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ графичСский интСрфСйс Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π’ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрном Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ ΠΊΠΎΠ΄, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ &НаБСрвСрС, выполняСтся Π½Π° сСрвСрС 1Π‘. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ создан Π½Π° сСрвСрС. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° сСрвСрС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ установлСно ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Excel), ΠΈ ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² автоматичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π±Π΅Π· интСрфСйса. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ процСсса открытия Ρ„Π°ΠΉΠ»Π°, ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

πŸ’‘

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с офисными Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Π½Π° сСрвСрС часто Π²Ρ‹Π³ΠΎΠ΄Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ спСциализированныС внСшниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΠ»ΠΈ сСрвисы, Π° Π½Π΅ тяТСловСсныС офисныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Ρ‡Π΅Ρ€Π΅Π· COM.

БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅ΠΆΠΈΠΌ &ΠΠ°ΠšΠ»ΠΈΠ΅Π½Ρ‚Π΅. Π’ Ρ‚ΠΎΠ½ΠΊΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ созданиС COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ бСзопасности. Однако, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ толстый ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ΠΊΠΎΠ΄ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ‡Π΅Ρ‚ΠΊΠΎ Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ, Π³Π΄Π΅ выполняСтся ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ компиляции, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок выполнСния Π² Π½Π΅ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ срСдС.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΈ возмоТности сСрвСрной вСрсии 1Π‘ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ клиСнтской. ВсСгда тСстируйтС Ρ€Π°Π±ΠΎΡ‚Ρƒ с COM Π² Ρ‚ΠΎΠΉ срСдС, Π³Π΄Π΅ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π΅.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ способы ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

НаиболСС частой ошибкой являСтся сообщСниС"НСвСрный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ строки" ΠΈΠ»ΠΈ"Активный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚". Π­Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… с рСгистрациСй COM-сСрвСра ΠΈΠ»ΠΈ нСсоотвСтствии разрядности. РСшСниС Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² пСрСрСгистрации Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора ΠΈΠ»ΠΈ установкС вСрсии прилоТСния, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ разрядности ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘.

Другая распространСнная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€”"Π£Π΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ сСрвСр нСдоступСн" ΠΈΠ»ΠΈ зависаниС Π½Π° Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π­Ρ‚ΠΎ часто случаСтся ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Excel, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Π²Π²ΠΎΠ΄Π° ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, подтвСрТдСния пСрСзаписи Ρ„Π°ΠΉΠ»Π°). РСшСниС β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ всСх ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΈ ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΊΠΎΠ½ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

  • πŸ›  ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²Π° доступа ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи слуТбы 1Π‘ ΠΊ рССстру ΠΈ ΠΏΠ°ΠΏΠΊΠ°ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².
  • 🚫 ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ надстройки Π² Ρ†Π΅Π»Π΅Π²ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΈ ΠΏΡ€ΠΈ стартС.
  • ⏱ Π£Π²Π΅Π»ΠΈΡ‡ΡŒΡ‚Π΅ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρ‹ оТидания для Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ формирования ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ².

Π’Π°ΠΊΠΆΠ΅ стоит ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ памяти ΠΏΡ€ΠΈ частом создании ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π₯отя 1Π‘ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ сборки мусора, внСшниС COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ. Π’ Ρ†ΠΈΠΊΠ»Π°Ρ… с большим количСством ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ рСкомСндуСтся явно ΠΎΠ±Π½ΡƒΠ»ΡΡ‚ΡŒ ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ шага ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΠ» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ссли Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ позволяСт.

πŸ’‘

Π‘Ρ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ зависит ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ настройки окруТСния ΠΈ подавлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ ProgID нСизвСстного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°?

Для поиска ProgID ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ бСсплатныС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Π²Ρ€ΠΎΠ΄Π΅ OLE Viewer. Π’Π°ΠΊΠΆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ часто ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ПО ΠΈΠ»ΠΈ Π² рССстрС Windows ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словам названия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ COM Π² Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ 1Π‘?

НСт, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ нСльзя. НСобходимо ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² Π½Π° сСрвСрС (Ссли Ρ‚Π°ΠΌ установлСно ПО) ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ внСшнюю ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, Π·Π°ΠΏΡƒΡΠΊΠ°Π΅ΠΌΡƒΡŽ Π² толстом ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ².

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Excel Π½Π΅ закрываСтся послС Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта?

Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, Π²Ρ‹ Π½Π΅ Π²Ρ‹Π·Π²Π°Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Quit ΠΈΠ»ΠΈ Π½Π΅ ΠΎΠ±Π½ΡƒΠ»ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ссылок Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (ΠΊΠ½ΠΈΠ³ΠΈ, листы, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅). Π’Π°ΠΊΠΆΠ΅ процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Ссли ΠΎΠ½ Π½Π΅ Π±Ρ‹Π» явно Π·Π°ΠΊΡ€Ρ‹Ρ‚.

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ CreateObject ΠΈ Новый COMObject?

Π’ 1Π‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ конструктор Новый COMObject. Π’Π΅Ρ€ΠΌΠΈΠ½ CreateObject относится ΠΊ языку VBScript ΠΈΠ»ΠΈ VBA. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹, Π½ΠΎ синтаксис 1Π‘ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Новый.

БСзопасно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ COM Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ сСрвСрС?

ИспользованиС тяТСлых офисных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° сСрвСрС Π½Π΅ рСкомСндуСтся Microsoft ΠΈΠ·-Π·Π° рисков Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Для сСрвСрной Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ спСциализированныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠ»ΠΈ сСрвисы, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ GUI.