Π Π°Π±ΠΎΡΠ° Ρ COM-ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Π² 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΡΠΈΡΠΎΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ, ΠΎΡΠΈΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΠ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΡΡΡΠ΄Π½ΠΎΡΡΡΠΌΠΈ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΈΠ·Π²Π»Π΅ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ°ΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² β Π±ΡΠ΄Ρ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π΅ΠΊ Excel, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Word-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ»ΠΈ ΠΎΡΠ²Π΅ΡΡ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠ° ΡΡΠ°ΡΡΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, ΠΊΠ°ΠΊ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· COM-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΈΠ·Π±Π΅Π³Π°Ρ ΡΠΈΠΏΠΈΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΡ ΠΊΠΎΠ΄.
ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π²ΡΠΎΠ΄Π΅ ΠΠΎΠ»ΡΡΠΈΡΡ() ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΡΠ΅ΡΠ΅Π· ΡΠΎΡΠΊΡ, Π½ΠΎ ΠΈ Π½ΡΠ°Π½ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌΠΈ, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. ΠΡΠΎΠ±ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΄Π΅Π»ΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ "Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΡ
" ΡΠ²ΠΎΠΉΡΡΠ² COM-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π² ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°Ρ
1Π‘, Π½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ΅ΡΠ΅Π· OLE-Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ. ΠΠΎΡΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΡΠΌ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ COM-ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ΠΈ Π½ΡΠΆΠ½Ρ Π² 1Π‘
COM (Component Object Model) β ΡΡΠΎ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΎΡ Microsoft, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ. Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅ COM-ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ:
- π ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Microsoft Office (ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡΡΠ΅ΡΠΎΠ² Π² Excel, Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² Π² Word)
- π₯οΈ ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (ΡΠΊΠ°Π½Π΅ΡΡ ΡΡΡΠΈΡ ΠΊΠΎΠ΄ΠΎΠ², ΡΠΈΡΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΎΡΡ)
- π ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Windows-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, AutoCAD, Adobe Acrobat)
- π‘ Π Π°Π±ΠΎΡΡ Ρ API Π²Π½Π΅ΡΠ½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ΡΠ΅Π· OLE-ΡΠ΅ΡΠ²Π΅ΡΡ
ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ COM β ΠΊΡΠΎΡΡ-ΡΠ·ΡΠΊΠΎΠ²Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ. ΠΠ°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° C++ ΠΈΠ»ΠΈ .NET ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΈΠ· 1Π‘ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π·Π΄Π΅ΡΡ ΠΊΡΠΎΠ΅ΡΡΡ ΠΈ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ: 1Π‘ "Π½Π΅ Π·Π½Π°Π΅Ρ" ΡΡΡΡΠΊΡΡΡΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π·Π°ΡΠ°Π½Π΅Π΅, ΠΏΠΎΡΡΠΎΠΌΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°.
ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈΠ· COM-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠ΅ΡΠ΅Π· ΡΠΎΡΠΊΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Excel.Application ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ Π²Π΅ΡΡΠΈΡ ΡΠ°ΠΊ:
Excel = ΠΠΎΠ²ΡΠΉ COMΠΠ±ΡΠ΅ΠΊΡ("Excel.Application");
ΠΠ΅ΡΡΠΈΡ = Excel.Version; // ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²Π΅ΡΡΠΈΡ Excel
ΠΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π½Π΅ Π²ΠΈΠ΄Π½ΠΎ Π² ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°Ρ
1Π‘? ΠΠ΄Π΅ΡΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ΠΠΎΠ»ΡΡΠΈΡΡ():
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ = COMΠΠ±ΡΠ΅ΠΊΡ.ΠΠΎΠ»ΡΡΠΈΡΡ("ΠΠΌΡΠ‘Π²ΠΎΠΉΡΡΠ²Π°");
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π»ΠΈΡΡΠ°ΠΌΠΈ Excel ΠΈΠ»ΠΈ Π°Π±Π·Π°ΡΠ°ΠΌΠΈ Word) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ:
ΠΠΈΡΡ = Excel.Workbooks(1).Sheets(1); // ΠΠ΅ΡΠ²ΡΠΉ Π»ΠΈΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ
Π―ΡΠ΅ΠΉΠΊΠ°A1 = ΠΠΈΡΡ.Cells(1, 1).Value; // ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΉΠΊΠΈ A1
ΠΠ»Ρ ΠΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΠΈΡΡ ΠΠ· Excel.ActiveWorkbook.Sheets Π¦ΠΈΠΊΠ»
Π‘ΠΎΠΎΠ±ΡΠΈΡΡ(ΠΠΈΡΡ.Name);
ΠΠΎΠ½Π΅ΡΠ¦ΠΈΠΊΠ»Π°;
-->
Π Π°Π±ΠΎΡΠ° Ρ "Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΠΌΠΈ" ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ COM-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
Π§Π°ΡΡΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°: Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ COM-ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, Π½ΠΎ Π² 1Π‘ Π΅Π³ΠΎ Π½Π΅Ρ Π² ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°Ρ . ΠΡΠΈΡΠΈΠ½Ρ:
- π Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ (ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ )
- π Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ ΡΠΊΡΡΡΠΎ Π² ΡΠΈΠΏΠΎΠ²ΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ
1Π‘ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
Application.FileDialogΠ² Excel) - π Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· IDispatch-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ
Π Π΅ΡΠ΅Π½ΠΈΡ:
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
ΠΠΎΠ»ΡΡΠΈΡΡ()Ρ ΡΠΎΡΠ½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ:ΠΠΈΠ°Π»ΠΎΠ³ = Excel.Application.FileDialog(1); // msoFileDialogOpenΠΠΈΠ°Π»ΠΎΠ³.ΠΠΎΠ»ΡΡΠΈΡΡ("Title").Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ("ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠ°ΠΉΠ»");
- ΠΡΠΎΠ±ΡΠΉΡΠ΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° (ΠΈΠ½ΠΎΠ³Π΄Π° Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ API ΡΠ°ΡΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ):
// ΠΠΌΠ΅ΡΡΠΎ Π½Π΅ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ "TextFrame"ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ = ΠΠ±ΡΠ΅ΠΊΡ.ΠΠΎΠ»ΡΡΠΈΡΡ("TextFrame2").TextRange.Text;
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ OLEView (ΡΡΠΈΠ»ΠΈΡΠ° ΠΈΠ· Windows SDK) Π΄Π»Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
ΠΠ°ΠΊ ΡΠ·Π½Π°ΡΡ Π²ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° COM-ΠΎΠ±ΡΠ΅ΠΊΡΠ°?
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° ΡΠ²ΠΎΠΉΡΡΠ² (ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²):
ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡΠ‘Π²ΠΎΠΉΡΡΠ²Π°(ΠΠ±ΡΠ΅ΠΊΡ)
Π’ΠΈΠΏ = Π’ΠΈΠΏΠΠ½Ρ(ΠΠ±ΡΠ΅ΠΊΡ);
ΠΡΠ»ΠΈ Π’ΠΈΠΏ = Π’ΠΈΠΏ("COMΠΠ±ΡΠ΅ΠΊΡ") Π’ΠΎΠ³Π΄Π°
ΠΠΎΠΏΡΡΠΊΠ°
Π‘Π²ΠΎΠΉΡΡΠ²Π° = ΠΠ±ΡΠ΅ΠΊΡ.ΠΠΎΠ»ΡΡΠΈΡΡ("Properties");
ΠΠ»Ρ ΠΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π‘Π² ΠΠ· Π‘Π²ΠΎΠΉΡΡΠ²Π° Π¦ΠΈΠΊΠ»
Π‘ΠΎΠΎΠ±ΡΠΈΡΡ(Π‘Π².Name);
ΠΠΎΠ½Π΅ΡΠ¦ΠΈΠΊΠ»Π°;
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π‘ΠΎΠΎΠ±ΡΠΈΡΡ("ΠΠ΅ ΡΠ΄Π°Π»ΠΎΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°: " + ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΡΠΈΠ±ΠΊΠΈ());
ΠΠΎΠ½Π΅ΡΠΠΎΠΏΡΡΠΊΠΈ;
ΠΠΎΠ½Π΅ΡΠΡΠ»ΠΈ;
ΠΠΎΠ½Π΅ΡΠΡΠΎΡΠ΅Π΄ΡΡΡ;
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ COM
COM-ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ°ΡΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ 1Π‘ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π² ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ:
| ΠΡΠΈΠ±ΠΊΠ° | ΠΡΠΈΡΠΈΠ½Π° | Π Π΅ΡΠ΅Π½ΠΈΠ΅ |
|---|---|---|
ΠΡΠΈΠ±ΠΊΠ° OLE: 0x800A03EC | ΠΠ΅Π²Π΅ΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌΡ Π»ΠΈΡΡΡ) | ΠΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ Π³ΡΠ°Π½ΠΈΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ ΡΠ΅ΡΠ΅Π· Count |
ΠΡΠΈΠ±ΠΊΠ° OLE: 0x800A10E1 | ΠΠΎΠΏΡΡΠΊΠ° Π·Π°ΠΏΠΈΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΡ ΡΡΠ΅ΠΉΠΊΡ Excel | Π‘Π½ΠΈΠΌΠΈΡΠ΅ Π·Π°ΡΠΈΡΡ Π»ΠΈΡΡΠ° ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Unprotect() |
ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° | ΠΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΠΠ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Excel Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½) | ΠΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΠ ΡΠ΅ΡΠ΅Π· ΡΠ΅Π΅ΡΡΡ ΠΈΠ»ΠΈ ΠΠΎΠΏΡΡΠΊΠ°...ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ |
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π° | ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Excel/Word Π±Π»ΠΎΠΊΠΈΡΡΡΡ Π΄ΠΎΡΡΡΠΏ | ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ Trust Center Settings Π² ΠΎΡΠΈΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ |
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° COM-ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²:
ΠΠΎΠΏΡΡΠΊΠ°
// ΠΠΎΠ΄ ΡΠ°Π±ΠΎΡΡ Ρ COM-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ = ΠΠ±ΡΠ΅ΠΊΡ.Π‘Π²ΠΎΠΉΡΡΠ²ΠΎΠΠ»ΠΈΠΠ΅ΡΠΎΠ΄();
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠ»ΠΈ Π’ΠΈΠΏΠΠ½Ρ(ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΡΠΈΠ±ΠΊΠΈ()) = Π’ΠΈΠΏ("ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΡΠΈΠ±ΠΊΠΈ") Π’ΠΎΠ³Π΄Π°
Π‘ΠΎΠΎΠ±ΡΠΈΡΡ("COM-ΠΎΡΠΈΠ±ΠΊΠ°: " + ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΡΠΈΠ±ΠΊΠΈ().ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅);
// ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ°
ΠΠ½Π°ΡΠ΅
Π‘ΠΎΠΎΠ±ΡΠΈΡΡ("ΠΠ΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°: " + ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΡΠΈΠ±ΠΊΠΈ());
ΠΠΎΠ½Π΅ΡΠΡΠ»ΠΈ;
ΠΠΎΠ½Π΅ΡΠΠΎΠΏΡΡΠΊΠΈ;
Excel.Quit();
ΠΠ±ΡΠ΅ΠΊΡ = ΠΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ; // ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ
-->
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΠΊΠ΅ΠΉΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌΠΈ COM-ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ:
1. Π§ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· Excel
ΠΠ°Π΄Π°ΡΠ°: ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΡΠ΅ΠΉΠΊΠΈ B2 ΠΊΠ½ΠΈΠ³ΠΈ ΠΡΡΠ΅Ρ.xlsx.
Excel = ΠΠΎΠ²ΡΠΉ COMΠΠ±ΡΠ΅ΠΊΡ("Excel.Application");
Excel.Visible = ΠΠΎΠΆΡ; // Π‘ΠΊΡΡΡΡΠΉ ΡΠ΅ΠΆΠΈΠΌ
ΠΠ½ΠΈΠ³Π° = Excel.Workbooks.Open("C:\ΠΡΡΠ΅ΡΡ\ΠΡΡΠ΅Ρ.xlsx");
ΠΠΈΡΡ = ΠΠ½ΠΈΠ³Π°.Sheets(1); // ΠΠ΅ΡΠ²ΡΠΉ Π»ΠΈΡΡ
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ = ΠΠΈΡΡ.Range("B2").Value; // ΠΈΠ»ΠΈ ΠΠΈΡΡ.Cells(2, 2).Value
ΠΠ½ΠΈΠ³Π°.Close(ΠΠΎΠΆΡ); // ΠΠ°ΠΊΡΡΡΡ Π±Π΅Π· ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ
Excel.Quit();
2. ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° ΠΈΠ· Word-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°
ΠΠ°Π΄Π°ΡΠ°: ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²Π΅ΡΡ ΡΠ΅ΠΊΡΡ ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΠΎΠ³ΠΎΠ²ΠΎΡ.docx:
Word = ΠΠΎΠ²ΡΠΉ COMΠΠ±ΡΠ΅ΠΊΡ("Word.Application");
ΠΠΎΠΊΡΠΌΠ΅Π½Ρ = Word.Documents.Open("C:\ΠΠΎΠΊΡΠΌΠ΅Π½ΡΡ\ΠΠΎΠ³ΠΎΠ²ΠΎΡ.docx");
Π’Π΅ΠΊΡΡ = ΠΠΎΠΊΡΠΌΠ΅Π½Ρ.Content.Text;
ΠΠΎΠΊΡΠΌΠ΅Π½Ρ.Close(0); // 0 - Π½Π΅ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
Word.Quit();
3. Π Π°Π±ΠΎΡΠ° Ρ Outlook: ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΈΡΠ΅ΠΌ
ΠΠ°Π΄Π°ΡΠ°: ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π½Π΅ΠΏΡΠΎΡΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΈΡΡΠΌΠ°:
Outlook = ΠΠΎΠ²ΡΠΉ COMΠΠ±ΡΠ΅ΠΊΡ("Outlook.Application");
ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΠΠΌΠ΅Π½ = Outlook.GetNamespace("MAPI");
ΠΠ°ΠΏΠΊΠ°ΠΡ
ΠΎΠ΄ΡΡΠΈΠ΅ = ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΠΠΌΠ΅Π½.GetDefaultFolder(6); // 6 - ΠΏΠ°ΠΏΠΊΠ° "ΠΡ
ΠΎΠ΄ΡΡΠΈΠ΅"
ΠΠ΅Π½Π°ΠΉΠ΄Π΅Π½ΠΎ = ΠΡΡΠΈΠ½Π°;
ΠΠ»Ρ ΠΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΠΈΡΡΠΌΠΎ ΠΠ· ΠΠ°ΠΏΠΊΠ°ΠΡ
ΠΎΠ΄ΡΡΠΈΠ΅.Items Π¦ΠΈΠΊΠ»
ΠΡΠ»ΠΈ ΠΠΈΡΡΠΌΠΎ.UnRead = ΠΡΡΠΈΠ½Π° Π’ΠΎΠ³Π΄Π°
Π’Π΅ΠΌΠ° = ΠΠΈΡΡΠΌΠΎ.Subject;
ΠΠ΅Π½Π°ΠΉΠ΄Π΅Π½ΠΎ = ΠΠΎΠΆΡ;
ΠΡΠ΅ΡΠ²Π°ΡΡ;
ΠΠΎΠ½Π΅ΡΠΡΠ»ΠΈ;
ΠΠΎΠ½Π΅ΡΠ¦ΠΈΠΊΠ»Π°;
βοΈ ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊ ΡΠ°Π±ΠΎΡΠ΅ Ρ COM Π² 1Π‘
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
Π Π°Π±ΠΎΡΠ° Ρ COM-ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΡΠΌΠΎΠ·ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ "ΡΠΎΡΠΌΠΎΠ·Π°":
- π’ Π§Π°ΡΡΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²ΡΠ·ΠΎΠ² β ΠΌΠ΅ΠΆΠΏΡΠΎΡΠ΅ΡΡΠ½ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅)
- π Π§ΡΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΈΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² ΡΡΠ΅Π΅ΠΊ Π² Excel ΠΏΠΎΡΡΡΠΎΡΠ½ΠΎ
- π ΠΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅/ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΡΠΈΠΊΠ»Π΅
Π‘ΠΏΠΎΡΠΎΠ±Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ:
- ΠΡΡΠΈΡΡΠΉΡΠ΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°:
// ΠΠ»ΠΎΡ ΠΎ (ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡΠΎΡ ΠΎΠ΄Π΅ ΡΠΈΠΊΠ»Π°)ΠΠ»Ρ i = 1 ΠΠΎ 100 Π¦ΠΈΠΊΠ»
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ = ΠΠΈΡΡ.Cells(i, 1).Value;
ΠΠΎΠ½Π΅ΡΠ¦ΠΈΠΊΠ»Π°;
// Π₯ΠΎΡΠΎΡΠΎ (ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°)
ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ = ΠΠΈΡΡ.Range("A1:A100");
ΠΠ½Π°ΡΠ΅Π½ΠΈΡ = ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½.Value;
- ΠΡΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΊΡΠ°Π½Π°:
Excel.ScreenUpdating = ΠΠΎΠΆΡ;// ... ΠΊΠΎΠ΄ ...
Excel.ScreenUpdating = ΠΡΡΠΈΠ½Π°;
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ Π΄Π»Ρ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ/ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ = ΠΠΈΡΡ.UsedRange; // ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π·Π°Π½ΡΡΡΡ ΠΎΠ±Π»Π°ΡΡΡ
ΠΠ°Π½Π½ΡΠ΅ = ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½.Value; // ΠΠΎΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΡΠ°Π·Ρ Π² Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²
-->
Π Π°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ
ΠΠ°ΠΆΠ΅ ΠΎΠΏΡΡΠ½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ COM. ΠΠΎΡ ΡΠΎΠΏ-5 ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ:
- Π£ΡΠ΅ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ:
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΠ΅ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Excel.Application ΠΈΠ»ΠΈ Word.Application ΠΎΡΡΠ°ΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΌΠΎΠ³ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ. ΠΡΠ΅Π³Π΄Π° Π²ΡΠ·ΡΠ²Π°ΠΉΡΠ΅
Quit()ΠΈ ΠΎΠ±Π½ΡΠ»ΡΠΉΡΠ΅ ΡΡΡΠ»ΠΊΡ:Excel.Quit();Excel = ΠΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ;
- ΠΠ΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ:
Π Excel ΠΈ Word ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ ΡΠ°ΡΡΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ 1, Π° Π½Π΅ Ρ 0. ΠΡΠΈΠ±ΠΊΠ°
0x800A03ECΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π²ΡΡ ΠΎΠ΄ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ. - ΠΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
Π½Π°ΡΡΡΠΎΠ΅ΠΊ:
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π Π°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ Π² ΡΠΎΡΠΌΡΠ»Π°Ρ Excel Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΠ΅Π³ΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Windows. Π ΡΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
;Π²ΠΌΠ΅ΡΡΠΎ,:ΠΠΈΡΡ.Range("A1").Formula = "=Π‘Π£ΠΠ(B1:B10)"; // ΠΠ»Ρ RU-Π²Π΅ΡΡΠΈΠΈ - ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²:
ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΠΎΡΠΊΡΡΡ Π²ΡΡΡΠ½ΡΡ, COM Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊ Π½Π΅ΠΌΡ Π΄ΠΎΡΡΡΠΏ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
ΠΠΎΠΏΡΡΠΊΠ°...ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°Π΅Π². - ΠΠ΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Π²Π΅ΡΡΠΈΠΉ:
ΠΠΎΠ΄, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π΄Π»Ρ Excel 2010, ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Excel 2019 ΠΈΠ·-Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π’Π΅ΡΡΠΈΡΡΠΉΡΠ΅ Π½Π° ΡΠ΅Π»Π΅Π²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ.
FAQ: Π§Π°ΡΡΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ COM-ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ
ΠΠ°ΠΊ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ COM-ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅?
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π Π΅Π΄Π°ΠΊΡΠΎΡ ΡΠ΅Π΅ΡΡΡΠ° Windows (regedit). ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π» HKEY_CLASSES_ROOT ΠΈ ΠΈΡΠΈΡΠ΅ ΠΊΠ»ΡΡΠΈ Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ CLSID ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΠΉΡΠ΅ Π²Π΅ΡΠΊΡ HKEY_LOCAL_MACHINE\SOFTWARE\Classes. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈΠ»ΠΈΡΡ OLEView ΠΈΠ· Windows SDK.
Π 1Π‘ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠ°ΠΊ:
ΠΠΎΠΏΡΡΠΊΠ°
ΠΠ±ΡΠ΅ΠΊΡ = ΠΠΎΠ²ΡΠΉ COMΠΠ±ΡΠ΅ΠΊΡ("ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°.ΠΠ±ΡΠ΅ΠΊΡ");
Π‘ΠΎΠΎΠ±ΡΠΈΡΡ("ΠΠ±ΡΠ΅ΠΊΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½!");
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π‘ΠΎΠΎΠ±ΡΠΈΡΡ("ΠΠ±ΡΠ΅ΠΊΡ ΠΠ Π΄ΠΎΡΡΡΠΏΠ΅Π½: " + ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΡΠΈΠ±ΠΊΠΈ());
ΠΠΎΠ½Π΅ΡΠΠΎΠΏΡΡΠΊΠΈ;
ΠΠΎΡΠ΅ΠΌΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΠΎΠ»ΡΡΠΈΡΡ() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ?
ΠΡΠΈΡΠΈΠ½Ρ:
- Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅
- ΠΠΏΠ΅ΡΠ°ΡΠΊΠ° Π² ΠΈΠΌΠ΅Π½ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° (ΡΠ΅Π³ΠΈΡΡΡ Π²Π°ΠΆΠ΅Π½!)
- Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠΊΡΡΡΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°)
- ΠΠ±ΡΠ΅ΠΊΡ Π½Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ (Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ Π½ΡΠΆΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
Open())
ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠ΅ΡΠ΅Π· OLEView ΠΈΠ»ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ Π΄Π°Π½Π½ΡΡ Π² COM-ΠΎΠ±ΡΠ΅ΠΊΡΡ?
ΠΠ»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π² Excel ΠΈΠ»ΠΈ Word ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ. ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΠΈΡΠΈ Π΄Π°Π½Π½ΡΡ Π² Excel:
ΠΠ°Π½Π½ΡΠ΅ = ΠΠΎΠ²ΡΠΉ ΠΠ°ΡΡΠΈΠ²();
ΠΠ°Π½Π½ΡΠ΅.ΠΠΎΠ±Π°Π²ΠΈΡΡ(ΠΠΎΠ²ΡΠΉ ΠΠ°ΡΡΠΈΠ²()); // Π‘ΡΡΠΎΠΊΠ° 1
ΠΠ°Π½Π½ΡΠ΅[0].ΠΠΎΠ±Π°Π²ΠΈΡΡ("Π―ΡΠ΅ΠΉΠΊΠ° A1");
ΠΠ°Π½Π½ΡΠ΅[0].ΠΠΎΠ±Π°Π²ΠΈΡΡ("Π―ΡΠ΅ΠΉΠΊΠ° B1");
ΠΠΈΡΡ.Range("A1:B1").Value = ΠΠ°Π½Π½ΡΠ΅;
ΠΠ»Ρ ΡΡΠ΅Π½ΠΈΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π² ΠΌΠ°ΡΡΠΈΠ²:
ΠΠ°Π½Π½ΡΠ΅ = ΠΠΈΡΡ.Range("A1:B10").Value; // ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ COM-ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Π² Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅ ΠΈΠ»ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ 1Π‘?
ΠΠ΅Ρ, COM-ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠ»ΡΡΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅ 1Π‘ ΠΏΠΎΠ΄ Windows. Π Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅, ΡΠΎΠ½ΠΊΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅ ΠΈΠ»ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ COM Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ.
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ:
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ HTTP-ΡΠ΅ΡΠ²ΠΈΡΡ ΠΈΠ»ΠΈ REST API Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ
- ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΡ 1Π‘ (
Π§ΡΠ΅Π½ΠΈΠ΅JSON,ΠΠ°ΠΏΠΈΡΡXMLΠΈ Ρ.Π΄.) - ΠΠ»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ 1Π‘ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ
ΠΠ°ΠΊ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ ΠΊΠΎΠ΄ Ρ COM-ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ?
Π‘ΠΏΠΎΡΠΎΠ±Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ:
- ΠΡΠ²ΠΎΠ΄ Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ:
Π‘ΠΎΠΎΠ±ΡΠΈΡΡ(Π’ΠΈΠΏΠΠ½Ρ(COMΠΠ±ΡΠ΅ΠΊΡ)); // ΠΡΠΎΠ²Π΅ΡΠΊΠ°, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠ·Π΄Π°Π½Π‘ΠΎΠΎΠ±ΡΠΈΡΡ(ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΡΠΈΠ±ΠΊΠΈ()); // ΠΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ
- ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠ°ΠΉΠ»:
Π’Π΅ΠΊΡΡ = ΠΠΎΠ²ΡΠΉ ΠΠ°ΠΏΠΈΡΡΠ’Π΅ΠΊΡΡΠ°("C:\log.txt");Π’Π΅ΠΊΡΡ.ΠΠ°ΠΏΠΈΡΠ°ΡΡΠ‘ΡΡΠΎΠΊΡ("ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅: " + ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅);
Π’Π΅ΠΊΡΡ.ΠΠ°ΠΊΡΡΡΡ();
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Excel Macro Recorder: Π·Π°ΠΏΠΈΡΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡ Π² Excel, Π·Π°ΡΠ΅ΠΌ Π°Π΄Π°ΠΏΡΠΈΡΡΠΉΡΠ΅ ΠΊΠΎΠ΄ Π΄Π»Ρ 1Π‘
- ΠΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ°: Π·Π°ΠΏΡΡΠΊΠ°ΠΉΡΠ΅ 1Π‘ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°, Π΅ΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ COM-ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ