Tag: ole

使用来自SAP ABAP的参数调用Excelmacros

我如何使用ABAP中的参数调用excelmacros? 我已经find了大量的参考,使用下面的方法在线调用没有参数的macros: CALL METHOD OF obj_ex_APP 'Run' EXPORTING #1 = 'Macro_ID'. 但我无法find任何地方如何传递参数。 感谢任何指针。

OLE bstr不是null终止?

所以,我试图从C ++和OLE自动化Excel,使用Microsoft提供的Autowrapfunction,在他们的自动化示例中。 我已经得到了,我可以从电子表格的单元格中读取string值。 但是,对于某些值来说,string有些问题,比如它不是以null结尾。 这是我的代码: VARIANT result; VariantInit(&result); AutoWrap(DISPATCH_PROPERTYGET, &result, range, L"Value", 0); wprintf(L"%s, len: %d\n", result.bstrVal, SysStringLen(result.bstrVal)); wprintf(L"abc %s\n", SysAllocString(L"def")); 输出是: John Doe á, 11 abc def 而在Excel中显示的Excel文件中显示如下: John Doe (Excel文档的代码页是否可以成为一个问题?这是一个xlsx文件。)

OLE Excel输出中的国际date格式问题

在目前使用Excel的产品中,电子表格是使用Delphi的OLE生成的。 电子表格中包含许多应用程序从系统设置中加载shortdate格式并将其应用于单元格的date。 除非系统格式设置为至less俄语,巴什基尔,鞑靼语,雅库特,哈萨克和乌兹别克语(可能还有其他我没有尝试过的语言)之一,否则这种做法是完美的。 代码是 – xlws.Cells[irow,icol] := ActivityData.Target_Date; xlvalidrange := xlws.Range[xlws.Cells[irow,icol],xlws.Cells[irow,icol]]; xlvalidrange.NumberFormat:= LocShortDateFormat; 在这种情况下(同时debugging时)ActivityData.Target_Date是41192,这是Excel存储date和时间的格式,LocShortDateFormat等于“dd.MM.yyyy”。 这与俄罗斯的Windows中显示的商店date格式相匹配,并以代码方式以编程方式检索, LocShortDateFormat := ShortDateFormat; 以这种格式打开电子表格显示消息 – Excel在Spreadsheet.xlsx中发现无法读取的内容是否要恢复此工作簿的内容? 这样做的数据显示简单的单元格中没有NO格式的数字41192。 更奇怪的是,手动应用格式string“dd.MM.yyyy”,然后在单元格中显示“dd.MM.yyyy”而不是数据。 这同样适用于任何标准date/时间string格式化字符。 通过select“date”类别和相应types作为格式,数据可以手动更改为date格式,然后正确显示,所以这不是数据问题,而是格式string。 Excel手动select正确的date格式时使用的格式string是ДД.ММ.ГГГГ – 手动更改debugging时使用的格式string会在生成的电子表格中产生正确的输出,并且不可读的内容消息将消失。 奇怪的是,中文,日文,塞尔维亚文和马其顿文(作为非英文字符集的样本)都使用标准的date/时间格式字符。 在Excel本身中,即使电子表格是新的,并且还没有以编程方式创build,即在Excel应用程序内创build的新电子表格,标准字符似乎也不能正常工作。 这种情况下,它似乎不是一个Delphi或Windows的问题(C#Windows窗体没有问题,正确格式化date使用标准字符,即使俄语区域设置),但它仍然留下如何得到返回正确的格式Delphi中的string。 我并不热衷于对已知有问题的语言环境进行一系列有条件的“if”语句testing,但这似乎是基于迄今为止我所做的研究来处理这个问题的唯一方法。 有没有办法让Excel使用通过OLE的本地date格式化,而不提供格式化string,或者获取stringExcel用于格式化本地化date以便提供正确格式的string?

使用OLE删除excel文档中的colonefilter

我的程序是在C ++中,它是使用微软的OLE与Excelfunction。 我想知道是否有任何程序调用或somethings删除所有colonefilter。 说明: . AB … 1 IDs Value … 2 0 25 … 3 1 32 … … … … ID和价值有一点下拉框。 点击这些下拉框我可以select一个值,下面显示的行将只包含这个特定的值,隐藏其他。 所以有时当我打开一个文件,我是这样的: . AB … 1 IDs Value … 2 0 25 … //Betwin this line and the line above there are 6 hidden rows. 8 6 15 … … … … […]

Excel VBA在一次search中search最多15个值

我试图运行一个macros,它允许用户在一次search中search多达15个值。 用户有时可能只search1个值,但最终用户希望此选项可用。 我现在的代码在Sheet1search一个值,当发现它将整个行复制到Sheet2 ,效果很好。 现在我正在尝试多达15个值。 我目前的代码如下: Sub FindValues() Dim LSearchRow As Integer Dim rw As Integer,cl As Range,LSearchValue As Long,LCopyToRow As Integer Sheet2.Cells.Clear Sheet1.Select 在错误转到Err_Execute 这是为了让最终用户input所需的A / C进行search LSearchValue = InputBox(“请input要search的值”,“input值”) LCopyToRow = 2 对于rw = 1到1555 对于每个cl在范围内(“D”&rw&“:M”&rw) 如果cl = LSearchValue那么 cl.EntireRow.Copy “目标:=工作表( “Sheet2的”) '.Rows(LCopyToRow&“:”&LCopyToRow) 表( “Sheet2的”)。select 行(LCopyToRow&“:”&LCopyToRow)。select 'Selection.PasteSpecial粘贴:= xlPasteValuesAndNumberFormats Selection.PasteSpecial粘贴:= xlPasteValuesAndNumberFormats,操作:= _ xlNone,SkipBlanks:= False,Transpose:= […]

有没有办法将excel文件导入数据网格视图,而没有安装Excel或Access数据库引擎?

我发现如果你的电脑中安装了Excel或Access数据库引擎,就有办法把Excel文件导入到DataGridView。 我有一个应用程序,我希望它的工作,而不必安装Excel本身或Access数据库引擎。 有没有办法,我可以做到这一点,而无需安装任何这些工具? 这不是一个数据库项目。 我只需要从某个Excel文件中获取一些数据到DataGridView。

在另一个Excel工作簿中插入Excel OLE对象

我使用此代码在Excel工作表中添加一个OLE对象: Set OLE = wsAttachment.OLEObjects.Add(Filename:=sDateinameMitPfad, Link:=False, DisplayAsIcon:=True, IconIndex:=0, IconFileName:=sDateinameMitPfad) 当我插入像JPG,PNG或DOCX文件时,这工作当我尝试添加另一个xlsx文件我得到一个警告: 警告! 文件的一部分可能包含无法从文件检查中删除的个人信息。 (对不起,谷歌翻译)原始的德国消息框显示: Vorsicht! Teile Ihres Dokuments enthaltenmöglicherweisepersönlicheInformationen,die von derDokumentprüfungnicht entfernt werdenkönnen。 我知道这种行为可以在信任中心停止,这不是一个选项(用户不能改变他们的信任中心设置)。 如何在没有此警告的情况下添加外部xlsx文件?

我的VSTO Excel插件如何判断工作簿是否embedded在Word文档中?

我正在处理现有的Excel VSTO外挂程序,当用户编辑embedded在MS Word文档中的工作簿时,会导致问题。 即使在客户操纵与外挂程序无关的文件的情况下,插件在该环境中的function也不是要求的,而是导致embedded失效。 至less,我需要让它不为该工作簿自行初始化。 我调查了一些途径: Microsoft.Office.Interop.Excel.Workbook.Application的文档显示如下: “当使用没有对象限定符时,此属性返回一个代表Microsoft Excel应用程序的应用程序对象。当与对象限定符一起使用时,此属性返回一个应用程序对象它表示指定对象的创build者(您可以将此属性与OLE自动化对象一起使用来返回该对象的应用程序)。 这听起来很有希望,但是,我不明白什么“与对象修饰符”意味着在C#的上下文中。 这个链接build议检查命令行参数。 但是,如果我单独打开Excel,然后用embedded的Excel对象打开我的Word文档,Word使用相同的实例embedded,并且命令行参数将不包含“-embedded”标志。 我很想强制OLE使用Excel的新实例(而不是重用现有的独立实例),但我无法弄清楚如何做到这一点。 由于Excel的单个实例可同时托pipeembedded式和独立式工作簿,因此此信息需要处于工作簿级别。

如何使用OLE将button添加到Excel

我使用这样的OLE方法: var xlApp, xlWorkBook, xlWorkSheet, arr: Variant; begin xlApp := CreateOLEObject('Excel.Application'); xlApp.Visible := True; end; 如何添加button到Excel? 以及如何分配一个存在的马克在这个button? 我在哪里可以findDelphi-OLE-Office文档? 谢谢。

Excel自动化。 需要从范围中select多个项目

我有代码,让我select一个单一的项目在一个范围内: COleVariant vItems = cstrAddr; hr = AutoWrap( DISPATCH_PROPERTYGET, &vCell, irange, L"Item", 2, COleVariant((short)(1)), COleVariant((short)(1))); if (FAILED(hr)) return hr; // Use the dispatch interface to select the cell COleVariant result; hr = AutoWrap( DISPATCH_METHOD, &result, vCell.pdispVal, L"Select", 0); if (FAILED(hr)) return hr; 这工作正常。 不过,我需要select范围内的所有单元格,但是我一直无法在Item属性的“get”调用中find指定此方法的方法。 尝试使用-1,-1 …尝试在2个变种中传递一对bstr,指定冒号分隔的列和一系列行; 也尝试传入一个范围指定的string的单个参数。 没有工作。 更新 :我也试过了 hr = iRange->Select(vResult); 这确实返回S_OK,但它不select范围。 通常,我不能直接调用iRange结构中的函数; […]