Π’ экосистСмС 1Π‘ ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ взаимодСйствия с внСшними ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Microsoft Excel, Word, Outlook ΠΈΠ»ΠΈ спСциализированными CAD-систСмами. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ эту связь, базируСтся Π½Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ COM (Component Object Model). ПониманиС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² контСкстС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, являСтся критичСски Π²Π°ΠΆΠ½Ρ‹ΠΌ Π½Π°Π²Ρ‹ΠΊΠΎΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, стрСмящСгося Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Π΅ процСссы ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

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

Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Ρ‹ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ‡Π΅Ρ‚ΠΊΠΎΠ³ΠΎ понимания ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΡ€Π°Π²ΠΈΠ» управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ с экзСмплярами ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ зависанию Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… процСссов ΠΈΠ»ΠΈ ΡƒΡ‚Π΅Ρ‡ΠΊΠ°ΠΌ рСсурсов ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ создания, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ сцСнарии использования OLE Automation Π² Π²Π°ΡˆΠΈΡ… Π·Π°Π΄Π°Ρ‡Π°Ρ….

АрхитСктура взаимодСйствия ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ВСхнология COM построСна Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅, Π³Π΄Π΅ 1Π‘ выступаСт Π² Ρ€ΠΎΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (Automation Controller), Π° внСшнСС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β€” Π² Ρ€ΠΎΠ»ΠΈ сСрвСра (Automation Server). Когда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, опСрационная систСма ΠΈΡ‰Π΅Ρ‚ Π² рССстрС зарСгистрированный класс с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ запускаСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ исполняСмый Ρ„Π°ΠΉΠ» Π² скрытом ΠΈΠ»ΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ связь происходит Ρ‡Π΅Ρ€Π΅Π· интСрфСйсы, описанныС Π² Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… ΠΈΠ»ΠΈ динамичСски опрСдСляСмыС Π²ΠΎ врСмя выполнСния. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ опрСдСляСт Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ свойств, доступных для Π²Ρ‹Π·ΠΎΠ²Π°. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ транслируСт ваши ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° язык, понятный Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» OLE Automation.

БущСствуСт Π΄Π²Π° основных способа связи: Ρ€Π°Π½Π½Π΅Π΅ связываниС (Early Binding) ΠΈ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ связываниС (Late Binding). ΠŸΡ€ΠΈ Ρ€Π°Π½Π½Π΅ΠΌ связывании ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ прСимущСства Π² скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ автоподсказкС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΊΠΎΠ΄Π°. ПозднСС связываниС Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΠ΅, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈΠΌΠ΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ выполнСния.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ COM-соСдинСния внСшнСС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Excel) Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ установлСно Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π³Π΄Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½ сСрвСр 1Π‘ ΠΈΠ»ΠΈ клиСнтскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ установки Office сдСлаСт созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сСкунд Π΄ΠΎ ΠΌΠΈΠ½ΡƒΡ‚ Π² зависимости ΠΎΡ‚ тяТСсти внСшнСго прилоТСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ созданиС Π½ΠΎΠ²Ρ‹Ρ… экзСмпляров Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² считаСтся Π³Ρ€ΡƒΠ±ΠΎΠΉ ошибкой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ являСтся созданиС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ Π΅Π³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ использованиС для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ массива Π΄Π°Π½Π½Ρ‹Ρ….

πŸ’‘

ВсСгда ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΠ΅Ρ€Π΅Π΄ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π½Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ. Π­Ρ‚ΠΎ ускорит Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² дСсятки Ρ€Π°Π· ΠΈ снизит Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ создания ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

Π’ языкС 1Π‘ прСдусмотрСно нСсколько встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… соСдинСний. Π’Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π·Π½Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ прилоТСния (ProgID) ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс (CLSID), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ нСобходимости Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π‘Π°ΠΌΡ‹ΠΉ распространСнный способ β€” использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Новый COMObject. Она ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ строковоС имя класса, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Excel.Application" для запуска Microsoft Excel. Если ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСсколько вСрсий, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ явно, хотя ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ОБ сама подставляСт Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡƒΠΆΠ΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌ экзСмпляром прилоТСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒCOMΠžΠ±ΡŠΠ΅ΠΊΡ‚. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒΡΡ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ сСссию ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Однако, Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ, эта функция Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π² Π±Π»ΠΎΠΊΠ΅ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°..Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

  • πŸš€ Новый COMObject("ИмяКласса") β€” создаСт Π½ΠΎΠ²Ρ‹ΠΉ нСзависимый экзСмпляр прилоТСния.
  • πŸ”— ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒCOMΠžΠ±ΡŠΠ΅ΠΊΡ‚(, "ИмяКласса") β€” ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΌΡƒ процСссу.
  • βš™οΈ Новый COMObject("Класс", "Π‘Π΅Ρ€Π²Π΅Ρ€") β€” позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ сСрвСр для распрСдСлСнных вычислСний (DCOM).

ΠŸΡ€ΠΈ использовании Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Ρ‚ΠΈΠΏΠΎΠ² Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ дСлаСтся Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ "Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… символов". ПослС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊΠΎΠ΄ становится Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ, Π° срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ доступныС свойства.

πŸ“Š Какой способ создания COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Новый COMObject (Π½Π΅Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ)
Π’ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒCOMΠžΠ±ΡŠΠ΅ΠΊΡ‚ (ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ)
НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ COM, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°ΠΉΠ»Ρ‹

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² Excel

Рассмотрим ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ формирования ΠΎΡ‚Ρ‡Π΅Ρ‚Π°. Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· рСгистра свСдСний Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Excel, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ». Для Π½Π°Ρ‡Π°Π»Π° создадим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ прилоТСния ΠΈ сдСлаСм Π΅Π³ΠΎ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

ПослС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌΡƒ листу. Π Π°Π±ΠΎΡ‚Π° с ячСйками осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Cells ΠΈΠ»ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Range.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ’Excel()

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

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

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

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Excel. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ установку офиса.");

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚;

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

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

Книги = Excel.Workbooks;

Книга = Книги.Add();

Лист = Книга.Sheets(1);

// Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²

Лист.Cells(1, 1).Value = "НомСнклатура";

Лист.Cells(1, 2).Value = "ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ";

// Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° заполнСния..

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

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

β˜‘οΈ Алгоритм бСзопасной Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ

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

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ освобоТдСниС рСсурсов

Одной ΠΈΠ· самых частых ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² являСтся Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ освобоТдСниС COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ сборки мусора, Π½ΠΎ ΠΎΠ½ Π½Π΅ всСгда ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ освобоТдаСт внСшниС процСссы. Если Π½Π΅ ΠΎΠ±Π½ΡƒΠ»ΠΈΡ‚ΡŒ ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, процСсс EXCEL.EXE ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π²ΠΈΡΠ΅Ρ‚ΡŒ Π² диспСтчСрС Π·Π°Π΄Π°Ρ‡ Π΄Π°ΠΆΠ΅ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ 1Π‘.

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ гласит: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ созданный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ явно ΠΎΠ±Π½ΡƒΠ»Π΅Π½ присваиваниСм значСния НСопрСдСлСно. Π”Π΅Π»Π°Ρ‚ΡŒ это Π½ΡƒΠΆΠ½ΠΎ Π² порядкС, ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ созданию. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΎΠ±Π½ΡƒΠ»ΡΡŽΡ‚ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (листы, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹), Π·Π°Ρ‚Π΅ΠΌ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ само ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² управляСмом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π²Ρ‹Π·ΠΎΠ²Ρ‹ COM Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΈΠ»ΠΈ с использованиСм ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² асинхронности, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π”Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с тяТСлыми ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ "Π·Π°ΠΌΠΎΡ€Π°ΠΆΠΈΠ²Π°ΡŽΡ‚" ΠΊΠ»ΠΈΠ΅Π½Ρ‚.

Для Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ очистки рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°..Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅..Π’ΠšΠΎΠ½Π΅Ρ†. Π’ сСкции Π’ΠšΠΎΠ½Π΅Ρ† размСщаСтся ΠΊΠΎΠ΄ обнулСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ очистки Π΄Π°ΠΆΠ΅ Π² случаС возникновСния критичСской ошибки Π²ΠΎ врСмя выполнСния основного ΠΊΠΎΠ΄Π°.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Π² 1Π‘ ДСйствиС ΠΏΠΎ очисткС
ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ExcelApp ExcelApp = НСопрСдСлСно;
Книга Book Book = НСопрСдСлСно;
Лист Sheet Sheet = НСопрСдСлСно;
Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Range Range = НСопрСдСлСно;

Π—Π°Π²ΠΈΡΡˆΠΈΠ΅ процСссы ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·. РСгулярная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° диспСтчСра Π·Π°Π΄Π°Ρ‡ послС запуска тяТСлых ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ мСста, Π³Π΄Π΅ очистка Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ.

πŸ’‘

ПолноС освобоТдСниС рСсурсов достигаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ явным ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ΠΌ всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π² порядкС ΠΎΡ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊ ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° соСдинСний

ВзаимодСйствиС с внСшними систСмами всСгда нСсСт риски сбоСв. ВСрсия Office ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ, Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π° ΠΏΡ€Π°Π²Π° доступа ΠΊ рССстру ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ любой ΠΊΠΎΠ΄, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ с COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.

ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ошибки ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ содСрТит свойства Number, Source ΠΈ Description, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ. Часто ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° кроСтся Π½Π΅ Π² ΠΊΠΎΠ΄Π΅ 1Π‘, Π° Π² настройках бСзопасности самого внСшнСго прилоТСния ΠΈΠ»ΠΈ Π² отсутствии Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ видимости прилоТСния (Visible = Π˜ΡΡ‚ΠΈΠ½Π°). Π­Ρ‚ΠΎ позволяСт Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΠΎΠ΄ выполнСния: Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, какая ячСйка заполняСтся, ΠΊΠ°ΠΊΠΎΠ΅ мСню открываСтся. Π’ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ срСдС Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ для ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ ошибок COM

0x800A03EC β€” ошибка синтаксиса ΠΈΠ»ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π² Excel; 0x80040154 β€” класс Π½Π΅ зарСгистрирован (Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹); 0x800A0046 β€” ΠΎΡ‚ΠΊΠ°Π· Π² доступС (ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ).

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Ошибка "Бвойство ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½" часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ пСрСносС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π±Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΈ соврСмСнныС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹

НСсмотря Π½Π° ΠΌΠΎΡ‰ΡŒ COM-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ ряд нСдостатков: ТСсткая привязка ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Windows, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ установки тяТСлого ПО Π½Π° сСрвСр ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ со ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. Π’ соврСмСнных вСрсиях 1Π‘ ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 ΠΈ Π²Ρ‹ΡˆΠ΅ рСкомСндуСтся Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ сущСствуСт встроСнный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π’Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, совмСстимом с Excel, Π±Π΅Π· запуска самого Excel. Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС, кроссплатформСнно (Π² Ρ‚ΠΎΠΌ числС Π½Π° Linux-сСрвСрах) ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΉ Microsoft Office.

Для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΏΠΎΡ‡Ρ‚Ρ‹ вмСсто Outlook COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠŸΠΎΡ‡Ρ‚Π° ΠΈ ΠŸΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ΅Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅. Они Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‡Π΅Ρ€Π΅Π· стандартныС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ SMTP/POP3/IMAP ΠΈ Π½Π΅ зависят ΠΎΡ‚ установлСнного ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π° машинС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

  • πŸ“Š Π’Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ β€” быстрая гСнСрация ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² Π±Π΅Π· запуска Excel.
  • πŸ“§ ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠŸΠΎΡ‡Ρ‚Π° β€” нСзависимая ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΈ писСм.
  • πŸ“„ UTF8 ВСкстовый Ρ„Π°ΠΉΠ» / JSON β€” ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ систСмами.

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

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, COM остаСтся Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΌ для слоТных сцСнариСв, Π³Π΄Π΅ трСбуСтся использованиС ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° стороннСго ПО, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² Π² стандартных срСдствах 1Π‘. Π“Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅ ΠΈ эффСктивныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

πŸ’‘

Если ваша Π·Π°Π΄Π°Ρ‡Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Windows ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ слоТного форматирования, COM всС Π΅Ρ‰Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½. Но для сСрвСрной ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ ΠΈΠ»ΠΈ кроссплатформСнных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ встроСнныС Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ COMObject ΠΈ Π’Π½Π΅ΡˆΠ½Π΅ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ?

COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ управляСт внСшнСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΊΠ°ΠΊ процСссом, вызывая Π΅Ρ‘ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π’Π½Π΅ΡˆΠ½ΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° β€” это Ρ„Π°ΠΉΠ» 1Π‘, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ сСссии ΠΈ выполняСт ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘, Π½Π΅ запуская стороннСС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ процСсс Excel висит послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ 1Π‘?

Π­Ρ‚ΠΎ происходит, Ссли Π²Ρ‹ Π½Π΅ ΠΎΠ±Π½ΡƒΠ»ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Excel (Книга, Лист, ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅). Π‘Π±ΠΎΡ€Ρ‰ΠΈΠΊ мусора 1Π‘ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ сразу ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ внСшниС рСсурсы. НСобходимо явно ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ НСопрСдСлСно всСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ COM Π½Π° сСрвСрС Linux?

НСт, тСхнология COM являСтся ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Microsoft ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² срСдС Windows. На Linux-сСрвСрах 1Π‘ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнныС срСдства Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ сСтСвыми ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ.

Как ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ запись большого количСства Π΄Π°Π½Π½Ρ‹Ρ… Π² Excel Ρ‡Π΅Ρ€Π΅Π· COM?

ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ экрана (ScreenUpdating = Π›ΠΎΠΆΡŒ) ΠΈ автопСрСсчСт Ρ„ΠΎΡ€ΠΌΡƒΠ». ЗаписывайтС Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ячСйкС, Π° сразу Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌΠΈ (массивами), Ссли это ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ интСрфСйс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка "Класс Π½Π΅ зарСгистрирован"?

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π²Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ, Π½Π΅ установлСно ΠΈΠ»ΠΈ Π½Π΅ зарСгистрировано Π² рССстрС Windows. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ восстановлСниС установки Office ΠΈΠ»ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ администратора.