Откройте Excel OLEObject в новом экземпляре Excel - PullRequest
0 голосов
/ 16 марта 2019

Я только что научился открывать программно встроенные объекты OLEObject с помощью следующего кода VBA-Excel:

mySheet.OLEObjects(myName).Verb xlVerbOpen

Однако, если «myName» соответствует объекту Excel, файл Excel открывается в том же экземпляре Excel вкоторый я запускаю программу.Поскольку в то время было открыто несколько форм, я бы хотел, чтобы этот объект открывался в новом экземпляре Excel (а не за формами, как это сейчас происходит).Это возможно?Как я мог это сделать?Заранее большое спасибо.

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Следуя совету Ричарда, см. Ниже код, созданный мной для возможности открытия встроенного объекта Excel через VBA в новой книге в новом экземпляре Excel:

                Dim xlApp As excel.Application
                Dim xlWb  As Workbook
                Dim mySheet As Worksheet
                Dim myName as String

                Set mySheet = Sheets("write sheet name")
                Set myName = Sheets("write object name")

                ThisWorkbook.Sheets(mySheet).OLEObjects(myName).Copy
                Set xlApp = New excel.Application
                xlApp.Visible = True
                Set xlWb = xlApp.Workbooks.Add
                xlWb.Sheets(1).Paste
                xlWb.Sheets(1).OLEObjects(myName).Verb xlVerbOpen

С уважением

0 голосов
/ 17 марта 2019

Вы можете создать новый экземпляр Excel в своем коде (в приведенном ниже примере - xlApp) и ссылаться на этот экземпляр во всех своих дальнейших действиях (однако это будет работать, только если OLEObject создан со ссылкой):

Dim xlApp As New Excel.Application, xlWb As Workbook

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True 'Make new instance visible (by default it's not visible)
Set xlWb = xlApp.Workbooks.Open(Filename) ' Filename is path to the linked workbook

Если OLEObject не связан, единственный способ открыть в новом экземпляре Excel - это открыть с помощью основного файла Excel, а это не то, что вам нужно:

xlApp.Workbooks.Open(workbookpath).Worksheets("mySheet").OLEObjects(myName).Verb xlVerbOpen
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...