Документ word на передний план

 
И. Павел ©
 
(2011-12-29 13:03)
[0]

Здравствуйте.

Я создаю документ Word на основе dot файла, используя ole (Word — 2007 но работать должно и в других версиях; версия Delphi — XE). Потом пытаюсь вывести приложение Word на передний план (app.Activate). При запуске в Delphi (т.е. вместе с отладчиком) работает, а при простом запуске exe — нет.
Вот код (кончено, между ActiveDocument и Visible := true есть код, но даже если его удалить, созданный пустой документ Word все равно не хочет выводиться на передний план)
 app := CreateOleObject("Word.Application");
 app.Documents.Add(ProgrDir+"doc.dot").Activate;
 doc := app.ActiveDocument;
 app.Visible := True;
 app.Activate;

Подскажите, пожалуйста, как вывести сгенерированный документ Word на передний план?
PS: конечно, можно попытаться найти Handle окна Word и вывести его на передний план средствами WIN API. Но называет Word окно как вздумается и, вероятно, это может меняться от версии к версии Word.

Заранее спасибо.


 
Kilowatt ©
 
(2011-12-29 13:08)
[1]

BringToFront?


 
И. Павел ©
 
(2011-12-29 13:16)
[2]

> [1] Kilowatt ©   (29.12.11 13:08)
> BringToFront?

Уточните, пожалуйста, о каком BringToFront идет речь? VCL/API/COM или др.?


 
И. Павел ©
 
(2011-12-29 13:18)
[3]

Нашел забавный способ :)
Но все же интересно, можно ли вывести окно Word на передний план без обходных путей.
app.WindowState := 2;
app.WindowState := 0;


 
Kilowatt ©
 
(2011-12-29 13:50)
[4]

app.BringToFront?


 
И. Павел ©
 
(2011-12-29 14:09)
[5]

> [4] Kilowatt ©   (29.12.11 13:50)
> app.BringToFront?

Оба варианта:
app.BringToFront;
app.BringToFront := True;
Приводят к ошибке: method not supported by automation object… Т.е. нет такого метода в OLE Word 2007…


 
Dimka Maslov ©
 
(2011-12-29 14:15)
[6]

У WordApplication нет метода BringToFront. Кроме того, обычно BringToFront заставляет приложение моргать в панели задач. Следовательно, метод с WindowState — единственно возможный. Но для пущей правильности (чтоб отрабатывать случай максимизированного окна) надо сначала сохранить значение, присвоить двойку, а потом значение восстановить. Можно ещё выключить анимацию при сворачивании окон, чтобы не моргало.


 
И. Павел ©
 
(2011-12-29 16:35)
[7]

> Можно ещё выключить анимацию при сворачивании окон, чтобы
> не моргало.

Я сделал так (решил максимизировать окно, т.к. после того, как пользователь нажал на кнопку печати, он скорее всего все равно будет работать именно с этим документом):
 app.WindowState := wdWindowStateMinimize;
 app.Visible := True;
 app.WindowState := wdWindowStateMaximize;


Ниже приведен (рабочий) фрагмент кода, который открывает документ Microsoft Word и переходит к определенному индексу из оглавления. filePath — это просто путь к файлу, и strTopic — это значение, которое ссылается на ToC в Word Doc.

Set objWord = CreateObject("Word.Application")
objWord.Visible = True

Set docWord = objWord.Documents.Open(fileName:=strPath, ReadOnly:=True)

docWord.Bookmarks(strTopic).Range.Select

однако мне нужно вывести документ Word на передний план.

это возможно с VBA во-первых? Есть ли toFront() тип «функция» я могу использовать? AFAIK C# имеет что-то вроде app.ActiveWindow.Activate(); но я не могу сделать ничего подобного работа в vba.

6 ответов


вы можете достичь того, что хотите, используя API. Я использую два API SetForegroundWindow и FindWindow

Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) _
As Long

Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) _
As Long

Sub Sample()
    Dim objWord As Object, docWord As Object
    Dim strPath As String, FileName As String
    Dim hwnd As Long

    Set objWord = CreateObject("Word.Application")
    objWord.Visible = True

    '~~> Change this to the relevant Filename and path
    strPath = "C:UsersSiddharth RoutDesktopSample.docx"
    '~~> Put the acutal file name here without the extension
    FileName = "Sample"

    Set docWord = objWord.Documents.Open(FileName:=strPath, ReadOnly:=True)

    hwnd = FindWindow(vbNullString, FileName & " [Read-Only] - Microsoft Word")

    If hwnd > 0 Then
      SetForegroundWindow (hwnd)
    End If
End Sub

Примечание: если вы уверены, что нет другого приложения Word, кроме того, что вы открыли, то вы можете использовать это, а также:)

Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long

Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Sub Sample()
    Dim objWord As Object, docWord As Object
    Dim strPath As String
    Dim hwnd As Long

    Set objWord = CreateObject("Word.Application")
    objWord.Visible = True

    '~~> Change this to the relevant Filename and path
    strPath = "C:UsersSiddharth RoutDesktopSample.docx"

    Set docWord = objWord.Documents.Open(FileName:=strPath, ReadOnly:=True)

    hwnd = FindWindow("OpusApp", vbNullString)
    If hwnd > 0 Then
      SetForegroundWindow (hwnd)
    End If
End Sub

Как насчет

docWord.Activate

Это должно вывести файл, который был «установлен» для объекта docWord на передний план.

EDIT: протестировал это на Access, тихий ненадежный в Excel. Использование API-это лучший способ, если запущено несколько экземпляров приложения Word.


после открытия документа (или добавления) Вы можете получить Hwnd для передачи функции SetForegroundWindow API из объекта ActiveWindow (например, obWord.ActivieWindow.дескриптор HWND.) Таким образом, вам не нужно искать правильный экземпляр Слова, чтобы вывести на передний план.


также можно использовать AppActivate «Microsoft Word»

посетите центр справки :здесь

использование AppActivate требует точного названия окна, которое вы хотите сфокусировать. Например. для шаблона word 2013, открытого как «добавить», вам нужно будет использовать AppActivate»Document1 — Word»

1

автор: Dinesh Niduvani Somanna



Это, кажется, работает каждый раз. Word работает или нет, несколько документов открыты или нет.

OpenAlready:

On Error GoTo 0
With wrdApp
    .Selection.Goto What:=1, Which:=2, Name:=PageNumber
    .Visible = True
    .Activate '<---seems to work well. regardless of number of Word docs open OR not open.
End With
Set wrdDoc = Nothing
Set wrdApp = Nothing

Below is a working code snippet that opens a Microsoft Word document, and goes to a specific index from the Table of Contents. filePath is a filepath, and strTopic is a value that links to the Table of Contents in the Word document.

Set objWord = CreateObject("Word.Application")
objWord.Visible = True

Set docWord = objWord.Documents.Open(fileName:=strPath, ReadOnly:=True)

docWord.Bookmarks(strTopic).Range.Select

I need to bring the Word document to the foreground.

Is there a toFront() type «function» in VBA?

Community's user avatar

asked Aug 18, 2014 at 11:46

RossC's user avatar

You can achieve what you want using APIS. I am using two APIs SetForegroundWindow and FindWindow

Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) _
As Long

Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) _
As Long

Sub Sample()
    Dim objWord As Object, docWord As Object
    Dim strPath As String, FileName As String
    Dim hwnd As Long

    Set objWord = CreateObject("Word.Application")
    objWord.Visible = True

    '~~> Change this to the relevant Filename and path
    strPath = "C:UsersSiddharth RoutDesktopSample.docx"
    '~~> Put the acutal file name here without the extension
    FileName = "Sample"

    Set docWord = objWord.Documents.Open(FileName:=strPath, ReadOnly:=True)

    hwnd = FindWindow(vbNullString, FileName & " [Read-Only] - Microsoft Word")

    If hwnd > 0 Then
      SetForegroundWindow (hwnd)
    End If
End Sub

NOTE: If you are sure that there is no other Word Application open other than what you opened then you can use this as well :)

Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long

Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Sub Sample()
    Dim objWord As Object, docWord As Object
    Dim strPath As String
    Dim hwnd As Long

    Set objWord = CreateObject("Word.Application")
    objWord.Visible = True

    '~~> Change this to the relevant Filename and path
    strPath = "C:UsersSiddharth RoutDesktopSample.docx"

    Set docWord = objWord.Documents.Open(FileName:=strPath, ReadOnly:=True)

    hwnd = FindWindow("OpusApp", vbNullString)
    If hwnd > 0 Then
      SetForegroundWindow (hwnd)
    End If
End Sub

answered Aug 18, 2014 at 11:58

Siddharth Rout's user avatar

Siddharth RoutSiddharth Rout

146k17 gold badges206 silver badges250 bronze badges

8

How about,

docWord.Activate

This should bring the file that has been «Set» for the docWord object to foreground.

EDIT: Tested this on Access, quiet unreliable on Excel. Using an API is the best way to go if there are multiple instances of the Word application running.

answered Aug 18, 2014 at 11:51

PaulFrancis's user avatar

PaulFrancisPaulFrancis

5,7381 gold badge19 silver badges35 bronze badges

9

Once you’ve opened a document (or added one) you can get a Hwnd to pass to the SetForegroundWindow API function from the ActiveWindow object (e.g. obWord.ActivieWindow.Hwnd). That way you don’t need to search for the correct Word instance to bring to front.

answered Jan 25, 2016 at 12:12

John0987's user avatar

1

This seems to work every time. Word running or not, multiple docs open or not.

OpenAlready:

On Error GoTo 0
With wrdApp
    .Selection.Goto What:=1, Which:=2, Name:=PageNumber
    .Visible = True
    .Activate '<---seems to work well. regardless of number of Word docs open OR not open.
End With
Set wrdDoc = Nothing
Set wrdApp = Nothing

answered Nov 14, 2017 at 17:26

RealEstateMan's user avatar

i’m quite new here, and in doing a ~30 min research on this specific case, I think I could bring something to the table here…

I found in this link: http://www.vbaexpress.com/forum/showthread.php?27589-bringing-Word-in-fornt-of-Excel this line of code:
Application.ActivateMicrosoftApp xlMicrosoftWord
It will force Word in front of everything, BUT if there is something opened it will create a new document, so what I found is that, if you want to open something and then bring it to front you use this sintax:

[…]

Application.ActivateMicrosoftApp xlMicrosoftWord
Word.Documents.Open(MyDocument)

[…]

Once in vba debugging the code will always be in front, but when using the code with the excel vba userform it works great! I can see the word changing the words on the fly!!!!

answered Nov 29, 2019 at 14:35

Alex Silva's user avatar

1

Can also use AppActivate «Microsoft Word»

visit Microsoft help :here

Using AppActivate needs the exact title of the window you want focused. E.g. for a word 2013 template opened as an «add», you would have to use AppActivate «Document1 — Word»

Community's user avatar

answered Aug 18, 2014 at 12:05

Dinesh Niduvani Somanna's user avatar

1

I just use;

FileAndPath = "C:tempMydocument.docx"
ThisWorkbook.FollowHyperlink (FileAndPath)

It even works if the file is already open.

answered Mar 26, 2020 at 7:37

Nibby's user avatar

NibbyNibby

161 bronze badge

Since «.Activate» is comented various times but at least for me calling it from excel to bring to fornt a word doc.
I have to do a work around minimizing and maximazing the window.
This works well for me until now:

Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True
wdApp.ScreenUpdating = True
Set wdDoc = wdApp.Documents.Open(ThisWorkbook.Path & "" & stWordDocument) 'update your path
wdDoc.Activate
ActiveDocument.ActiveWindow _
.WindowState = wdWindowStateMinimize
ActiveDocument.ActiveWindow _
.WindowState = wdWindowStateMaximize

answered May 20, 2021 at 8:12

Schn5's user avatar

Schn5Schn5

1292 silver badges8 bronze badges

Excel для Microsoft 365 Outlook для Microsoft 365 PowerPoint для Microsoft 365 Excel 2021 Outlook 2021 PowerPoint 2021 Excel 2019 Outlook 2019 PowerPoint 2019 Excel 2016 Outlook 2016 PowerPoint 2016 Excel 2013 Outlook 2013 PowerPoint 2013 Project профессиональный 2013 Project стандартный 2013 Excel 2010 Outlook 2010 PowerPoint 2010 Еще…Меньше

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

Объекты, упорядоченные в стопку

Примечания: 

  • Сведения о выравнивании объектов см. в статье Выравнивание или расположение рисунка, фигуры, надписи или объекта WordArt.

  • Сведения о группировании см. в статье Группирование и разгруппирование фигур, изображений и других объектов.

Перемещение рисунка, фигуры, текстового поля или объекта WordArt

  1. Щелкните границу объекта WordArt, надписи или фигуры, которую нужно переместить.

    Чтобы переместить несколько надписей или фигур, поочередно щелкните их границы, удерживая нажатой клавишу CTRL.

  2. Когда курсор примет вид четырехсторонней стрелки, перетащите объект в новое место.

    Курсор на границе надписи, имеющий вид четырехсторонней стрелки

    Для перемещения объекта с малым шагом используйте клавиши со стрелками, удерживая нажатой клавишу CTRL. Чтобы переместить объект строго по горизонтали или по вертикали, при перетаскивании удерживайте нажатой клавишу SHIFT.

Примечание: Размер шага (сдвига) составляет 1 пиксель. Размер пикселя в документе зависит от установленного масштаба. Если для документа задан масштаб 400%, то 1 пиксель представляет сдвиг на сравнительно небольшое расстояние. Если для документа задан масштаб 25%, то 1 пиксель равен сдвигу на достаточно большое расстояние.

В зависимости от того, насколько далеко вы перемещали wordArt, фигуру или текстовое поле, может быть проще вырезать и врезать его. Щелкните объект правой кнопкой мыши и выберите вырезать (или нажмите CTRL+X). Нажмите CTRL+V, чтобы вировать его. Вы также можете вырезать и врезать его в другой документ или между программами, например с PowerPoint слайда на Excel на другой.

Перемещение надписи, объекта WordArt или фигуры вперед или назад

  1. Выберите объект WordArt, фигуру или надпись, которую нужно переместить вверх или вниз в стопке.

  2. На вкладке Средства рисования -> Формат выберите команду Переместить вперед или Переместить назад.

    Команды ''Переместить вперед'' и ''Переместить назад'' на вкладке ''Средства рисования''

    Объект можно передвинуть на один слой вверх (пункт Переместить вперед) или поместить вверху стопки (На передний план). Аналогично при выборе команды Переместить назад можно передвинуть объект на один слой вниз (пункт Переместить назад) или поместить его внизу стопки (На задний план).

    Пункты ''Переместить вперед'' и ''На передний план'' в меню ''Переместить вперед''

    Советы: 

    • В Office 2016 и Office 2013: если у вас много объектов WordArt, фигур, надписей и других элементов, возможно, для их перемещения удобнее использовать стрелки вверх и вниз в области выделения. Область выделения отсутствует в приложении Project и в Office 2010.

    • Область выделения со всеми фигурами, надписями, объектами WordArt и другими элементами, имеющимися в документе

См. также

  • Выравнивание и у упорядока рисунка, фигуры, текстового полей или wordArt

  • Группировка и отмена группировки фигур, рисунков и других объектов

Нужна дополнительная помощь?

Below is a working code snippet that opens a Microsoft Word document, and goes to a specific index from the Table of Contents. filePath is a filepath, and strTopic is a value that links to the Table of Contents in the Word document.

Set objWord = CreateObject("Word.Application")
objWord.Visible = True

Set docWord = objWord.Documents.Open(fileName:=strPath, ReadOnly:=True)

docWord.Bookmarks(strTopic).Range.Select

I need to bring the Word document to the foreground.

Is there a toFront() type «function» in VBA?

Community's user avatar

asked Aug 18, 2014 at 11:46

RossC's user avatar

You can achieve what you want using APIS. I am using two APIs SetForegroundWindow and FindWindow

Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) _
As Long

Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) _
As Long

Sub Sample()
    Dim objWord As Object, docWord As Object
    Dim strPath As String, FileName As String
    Dim hwnd As Long

    Set objWord = CreateObject("Word.Application")
    objWord.Visible = True

    '~~> Change this to the relevant Filename and path
    strPath = "C:UsersSiddharth RoutDesktopSample.docx"
    '~~> Put the acutal file name here without the extension
    FileName = "Sample"

    Set docWord = objWord.Documents.Open(FileName:=strPath, ReadOnly:=True)

    hwnd = FindWindow(vbNullString, FileName & " [Read-Only] - Microsoft Word")

    If hwnd > 0 Then
      SetForegroundWindow (hwnd)
    End If
End Sub

NOTE: If you are sure that there is no other Word Application open other than what you opened then you can use this as well :)

Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long

Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Sub Sample()
    Dim objWord As Object, docWord As Object
    Dim strPath As String
    Dim hwnd As Long

    Set objWord = CreateObject("Word.Application")
    objWord.Visible = True

    '~~> Change this to the relevant Filename and path
    strPath = "C:UsersSiddharth RoutDesktopSample.docx"

    Set docWord = objWord.Documents.Open(FileName:=strPath, ReadOnly:=True)

    hwnd = FindWindow("OpusApp", vbNullString)
    If hwnd > 0 Then
      SetForegroundWindow (hwnd)
    End If
End Sub

answered Aug 18, 2014 at 11:58

Siddharth Rout's user avatar

Siddharth RoutSiddharth Rout

146k17 gold badges206 silver badges250 bronze badges

8

How about,

docWord.Activate

This should bring the file that has been «Set» for the docWord object to foreground.

EDIT: Tested this on Access, quiet unreliable on Excel. Using an API is the best way to go if there are multiple instances of the Word application running.

answered Aug 18, 2014 at 11:51

PaulFrancis's user avatar

PaulFrancisPaulFrancis

5,7381 gold badge19 silver badges35 bronze badges

9

Once you’ve opened a document (or added one) you can get a Hwnd to pass to the SetForegroundWindow API function from the ActiveWindow object (e.g. obWord.ActivieWindow.Hwnd). That way you don’t need to search for the correct Word instance to bring to front.

answered Jan 25, 2016 at 12:12

John0987's user avatar

1

This seems to work every time. Word running or not, multiple docs open or not.

OpenAlready:

On Error GoTo 0
With wrdApp
    .Selection.Goto What:=1, Which:=2, Name:=PageNumber
    .Visible = True
    .Activate '<---seems to work well. regardless of number of Word docs open OR not open.
End With
Set wrdDoc = Nothing
Set wrdApp = Nothing

answered Nov 14, 2017 at 17:26

RealEstateMan's user avatar

i’m quite new here, and in doing a ~30 min research on this specific case, I think I could bring something to the table here…

I found in this link: http://www.vbaexpress.com/forum/showthread.php?27589-bringing-Word-in-fornt-of-Excel this line of code:
Application.ActivateMicrosoftApp xlMicrosoftWord
It will force Word in front of everything, BUT if there is something opened it will create a new document, so what I found is that, if you want to open something and then bring it to front you use this sintax:

[…]

Application.ActivateMicrosoftApp xlMicrosoftWord
Word.Documents.Open(MyDocument)

[…]

Once in vba debugging the code will always be in front, but when using the code with the excel vba userform it works great! I can see the word changing the words on the fly!!!!

answered Nov 29, 2019 at 14:35

Alex Silva's user avatar

1

Can also use AppActivate «Microsoft Word»

visit Microsoft help :here

Using AppActivate needs the exact title of the window you want focused. E.g. for a word 2013 template opened as an «add», you would have to use AppActivate «Document1 — Word»

Community's user avatar

answered Aug 18, 2014 at 12:05

Dinesh Niduvani Somanna's user avatar

1

I just use;

FileAndPath = "C:tempMydocument.docx"
ThisWorkbook.FollowHyperlink (FileAndPath)

It even works if the file is already open.

answered Mar 26, 2020 at 7:37

Nibby's user avatar

NibbyNibby

161 bronze badge

Since «.Activate» is comented various times but at least for me calling it from excel to bring to fornt a word doc.
I have to do a work around minimizing and maximazing the window.
This works well for me until now:

Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True
wdApp.ScreenUpdating = True
Set wdDoc = wdApp.Documents.Open(ThisWorkbook.Path & "" & stWordDocument) 'update your path
wdDoc.Activate
ActiveDocument.ActiveWindow _
.WindowState = wdWindowStateMinimize
ActiveDocument.ActiveWindow _
.WindowState = wdWindowStateMaximize

answered May 20, 2021 at 8:12

Schn5's user avatar

Schn5Schn5

1292 silver badges8 bronze badges

Три изображения собаки, наложенные в Microsoft Word

Работать с изображениями в Microsoft Word не обязательно сложно, но есть некоторые уловки для позиционирования изображений. Если у вас есть два или более изображения, которые вы хотите пересечь друг с другом, мы покажем вам, как это сделать.

Настройте параметры макета изображения

Прежде чем вы сможете перекрывать изображения в Word, вы должны убедиться, что используете поддерживаемый вариант макета. Вы можете проверить это несколькими способами.

  • Выберите изображение и щелкните значок «Параметры макета», который появляется справа от него.
  • Выберите изображение, перейдите на появившуюся вкладку «Формат изображения» и щелкните стрелку раскрывающегося списка «Перенос текста».
  • Щелкните изображение правой кнопкой мыши и переместите курсор на «Перенос текста», чтобы отобразить параметры во всплывающем меню.

Щелкните правой кнопкой мыши и выберите «Перенести текст для просмотра».

Если вы используете опцию In Line with Text, вы не сможете перекрывать изображения, пока не выберете другой вариант макета. Выберите «Прямоугольный», «Плотный», «Сквозной» или один из других — в зависимости от того, что лучше всего подходит для вашего документа.

Выберите вариант макета в Word

Затем вы включите функцию перекрытия ваших изображений.

Вы можете заметить, когда перетаскиваете изображение рядом с другим в документе Word, что не можете поместить его поверх другого. Другая картинка может внезапно сместиться в сторону, чтобы освободить место для той, которую вы перетаскиваете.

Чтобы накладывать изображения в Word, вам необходимо включить эту опцию для каждого изображения, которое вы хотите в группе.

  • Выберите изображение, щелкните значок «Параметры макета» справа и нажмите «Подробнее» внизу.
  • Выберите изображение, перейдите на вкладку «Формат изображения», нажмите «Положение» и выберите «Дополнительные параметры макета».

Выберите положение, дополнительные параметры макета

Когда откроется окно «Макет», вы должны оказаться на вкладке «Положение». Но если нет, выберите его. Внизу окна под «Параметры» установите флажок «Разрешить перекрытие». Нажмите «ОК».

Установите флажок, чтобы разрешить перекрытие

Убедитесь, что вы включили параметр перекрытия для каждого изображения, которое хотите наложить.

Наложение изображений в Word

Как только все вышеперечисленное будет на месте, просто перетащите свои изображения и наложите их, как хотите.

Если вы хотите, чтобы определенное изображение было вверху, щелкните правой кнопкой мыши или перейдите на вкладку «Формат изображения» и выберите «На передний план» или «На передний план» в зависимости от количества используемых изображений и их расположения.

Выберите

Вы можете сделать то же самое, если хотите, чтобы изображение было сзади. Щелкните правой кнопкой мыши или перейдите на вкладку «Формат изображения» и выберите «Отправить назад» или «Отправить на задний план».

Выберите «Отправить назад» или «Отправить на задний план».

Как видите, перекрывать изображения в Word несложно. Но это один из тех скрытых приемов, которые могут значительно упростить работу с изображениями, точно так же, как размещение текста поверх изображения.

В продолжение материала «Пример работы с MS Word из 1С:Предприятие 8» хотелось бы поделиться следующим опытом.

Иногда (особенно это актуально для пользователей, которые работают через терминальное подключение к серверу), окно Microsoft Word открывается, но оказывается либо минимизированным, либо свернутым, либо окно 1С перекрывает его. Соответственно пользователь окно Word не видит.

Ниже  приведу два способа, позволяющие «выгнать» окно Word на передний план.

1. У объекта Application есть свойство WindowState, которое возвращает или устанавливает состояние окна документа, которое может принимать три значения: Normal, Maximized и Minimized (в значениях 1С — это 0, 1 и 2 соответственно). Суть данного способа сводится к тому, чтобы свернуть и снова развернуть окно.

ОбъектВорд.Application.Visible = Истина;
ОбъектВорд.Application.WindowState = 2;
ОбъектВорд.Application.WindowState = 1;

2. Второй способ является продолжением первого, но в этом случае мы сворачиваем все активные окна и разворачиваем все имеющиеся окна MS Word.

Оболочка = Новый COMОбъект(«Shell.Application»);
Оболочка.MinimizeAll();
ОбъектВорд.Visible = -1;
Окна = Документ.Windows;
Для Сч = 1 По Окна.Count Цикл
    Окно = Окна.Item(Сч);
    Окно.WindowState = 1;
КонецЦикла;
ОбъектВорд.Activate();

Понравилась статья? Поделить с друзьями:
  • Документ word для ipad
  • Документ word можно сохранить в этих форматах несколько вариантов ответа
  • Документ word для delphi
  • Документ word можно сохранить в формате выберите несколько вариантов
  • Документ word восстановить на флешке удаленные