У меня 64битное все
Наткнулся на "The program only works in a 32-bit terminal!"
Странно, что существует резон до сих пор использовать 32битное. Думал, что это уже давно кануло в лету
Очень простой пример работы с Word.
Допустим, мы хотим написать одно слово.
Назначить ему шрифт, размер, цвет и выравнивание по центру.
Первым делом запускаем Word.
Включаем запись макроса.
Делаем вручную, всё, что нам нужно.
Выключаем запись макроса.
После этого заходим в редактирование макроса.
Sub Макрос1() ' ' Макрос1 Макрос ' ' Selection.Font.Name = "Arial" Selection.Font.Size = 20 Selection.Font.Color = 5287936 Application.Keyboard (1049) Selection.TypeText Text:="Сочинение" Selection.TypeParagraph Selection.MoveUp Unit:=wdLine, Count:=1 Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter ActiveDocument.SaveAs FileName:="Сочинение.docx", FileFormat:= _ wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _ :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _ :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _ SaveAsAOCELetter:=False End Sub
В нём видно какие функции нужно вызывать и какие константы использовать.
Чтобы узнать значение константы, надо нажать на ней правую кнопку мыши, и выбрать в меню "Definition".
Затем переносим всё в MQL.
Для начала нужно создать документ.
Поскольку это не попало в макрос, воспользуемся справкой.
#include <ComObject.mqh> const int wdAlignParagraphCenter = 1; static ComObject* Word = NULL; string fileName = TerminalInfoString( TERMINAL_COMMONDATA_PATH ) + "\\Сочинение.docx"; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { HRESULT result = CoInitialize( 0 ); if( result == S_OK ){ Word = new ComObject( "Word.Application" ); if( Word.isValid() ){ ComObject Documents = Word.GetProperty( "Documents" ); if( Documents.isValid() ){ ComObject Document = Documents.Function( "Add" ); // Создание документа. if( Document.isValid() ){ ComObject Selection = Word.GetProperty( "Selection" ); if( Selection.isValid() ){ ComObject Font = Selection.GetProperty( "Font" ); if( Font.isValid() ){ Font.SetProperty( "Name", Variant( "Arial" ) ); Font.SetProperty( "Size", Variant( 20 ) ); Font.SetProperty( "Color", Variant( 5287936 ) ); } ComObject ParagraphFormat = Selection.GetProperty( "ParagraphFormat" ); if( ParagraphFormat.isValid() ){ ParagraphFormat.SetProperty( "Alignment", Variant( wdAlignParagraphCenter ) ); } Variant var = "Сочинение"; Selection.Function( "TypeText", var ); } Document.Function( "SaveAs", Variant( fileName ) ); } } Word.Function( "Quit" ); } else { Print( "Word не обнаружен" ); } delete Word; CoUninitialize(); } } //+------------------------------------------------------------------+

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Библиотека для работы с COM-объектами.:
Эта библиотека даёт возможность работать с COM-объектами, предоставленными некоторыми приложениями. Например: Excel, Word, Mathcad, Matlab. А также объект ADODB для работы с базами данных через драйвер ODBC. Библиотека работает и в MT4 и в MT5.
Автор: Koldun Zloy