我有问题的创新实例excel2007使用VBA(从入2002年)。

在第一我被误解的问题和更复杂的比我想象的。

Set myXL = CreateObject("Excel.Application")

创造了新的进程(我认为它没有),但是仍然奇怪的事情发生。我用OLE储存Excel文件SQL服务器数据库.

这是功能限制的excel文件的形式:

Public Function OpenExcelObjFrame() As BoundObjectFrame
    Dim myXL As Object

    Set myXL = CreateObject("Excel.Application") '#1

    Set gTempWorkbook = myXL.Workbooks.Add
    myXL.Visible = True               '#2

    DoCmd.OpenForm "Excel_OBJ"
    Forms("Excel_OBJ").Visible = False
    Forms("Excel_OBJ").RecordSource = "SELECT Excel_File FROM Excel_File_Obj;"
    Set OpenExcelObjFrame = Forms("Excel_OBJ").Excel_File
End Function

下:

Dim tExcelObjFrame As BoundObjectFrame
Set tExcelObjFrame = OpenExcelObjFrame()

tExcelObjFrame.Verb = acOLEVerbOpen
tExcelObjFrame.Action = acOLEActivate '#3

ad1 2流程excel.exe 开始

ad2 加入这一行检查什么是发生在2号程

广告3 OLE界限的文件现有的excel的实例,第2过程中被杀死在这里:/

所以问题是:

  1. 为什么tExcelObjFrame.Action=acOLEActivate杀死2过程

  2. 如何以武力对象的框架,以激活excel文件中的第2流程

编辑

我已经找到部分解释这里的(没有明确的解决方案):

http://www.xtremevbtalk.com/showthread.php?t=292170

  1. 如果没有Excel实例是运行、OLE创建一个实例Excel时访问的对象,无论是直接或通过编程。
  2. 如果一个Excel实例是已经运行,那么这是一个实例是使用由OLE对象。

问题是,OLE对象的选择是错误的excel的实例。问题是如果有一种方法来点OLE到一个具体实例。

同样的问题,这里所描述的(没有办法解决定):

http://groups.google.com/group/microsoft.public.win32.programmer.ole/browse_thread/thread/9c4cde2a79453037

有帮助吗?

解决方案

更新:
我一直在现有的码在我的工作站并且:

Set myXL = CreateObject("Excel.Application")

似乎作为你的请求。
我已经有一个进程打开,然后我跑那条线,它创造另一个过程。

我一直在调查有点进一步事实证明,这是有点怪癖的Excel2007年。
我一直在寻找使我回到windows 文件的类型 (滚动权利的底部)或 注册 黑客,这基本上是改变同样的事情,在这种情况。

我知道,在VBA你可以与注册键CreateNewKey和SetKeyValue,但是我不确定你要这样做。

其他提示

Sub New_Excel()

'Create a Microsoft Excel instance via code using late binding. (No references required)

Dim xlApp As Object

Dim wbExcel As Object

'Create a new instance of Excel

Set xlApp = CreateObject("Excel.Application")

'Open workbook

Set wbExcel = xlApp.Workbooks.Open("Book1")  'or you may place here the complete name and path of the file you want to open upon the creation of the new instance

'Set the instance of Excel visible. (It's been hiding until now)

xlApp.visible = True

'Release the workbook and application objects to free up memory

Set wbExcel = Nothing

Set xlApp = Nothing

End Sub

我有类似问题,只是时候试图打开的多个工作簿中的各个Excel2007年实例-在Excel2003年这个工作很好,但现在他们都在同一个实例。

我不知道这会解决你的问题太多,但我固定的(或作出其工作的方式,我想要!) 告诉Excel不使用DDE(选项、先进的、普遍的、忽略的其他应用程序使用DDE)。注意,如果你做了这个,你会需要改变所有的文件种类在资源管理器,开始为他们使用DDE默认情况下编辑的文件的选择,取消"使用DDE"和添加"%1"结束的命令行。

(实际上,我认为,可能回答一个评论是从安迪的回答,其中只有一个Excel实例是正在建立,但是不一定有助于与原来的问题,其中多个实例, 打开)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top