Tag: com

Microsoft.Office.Tools.Excel.ApplicationFactory.GetVstoObject导致VBA内存泄漏?

下面是VSTO-Project的一个最小示例,它强制Excel VBA环境显示错误“内存不足”,并导致VBA-Project出现两次。 问题:这是“GetVstoObject”-Method中的一个错误。 我怎样才能解决? 脚步: 在Excel 2010中:创build一个新的工作簿并按ALT + F11进入VBA环境 在VBA.ThisWorkworkbook:创build一个空的新的子 小测() 结束小组 将工作簿保存为Test.xlsm并退出Excel。 在Visual Studio中创build一个新的Excel 2010加载项 用下面的代码replaceThisAddIn.cs中的所有代码。 用F5开始debuggingExcel 用F5开始debuggingExcelAddIn1 打开保存的工作簿Test.xlsm 。 重新打开保存的工作簿(重要:必须“外部”,例如通过使用Windows任务栏中的Excel跳转列表) 结果: CTP翻了一番 如果按ALT + F11打开VBA,将会得到“没有足够的内存” – 错误 感谢您的任何解释/解决scheme! 问候,Jörg C#最小插件代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Linq; using Excel = Microsoft.Office.Interop.Excel; using Office = Microsoft.Office.Core; using Microsoft.Office.Tools.Excel; namespace ExcelAddIn1 { […]

VBA – 使用.NET类库

我们有一个自定义的类库,它是从头开始构build的,它执行业务模型所需的各种function。 我们还使用VBA来自动化标准Microsoft软件包和SolidWorks的一些数据插入。 迄今为止,我们已经基本上重写了VBA应用程序macros中的代码,但是现在正在将类库包含到VBA引用中。 我们已经注册了COM interop的类库,并且确保它是COM可见的。 该文件是可引用的,我们在每个公共类上添加了<ClassInterface(ClassInterfaceType.AutoDual)> _标签,以便intellisense“有效”。 就这样说,现在出现了问题 – 当我们引用类库时,对于这个实例,我们称之为Test_Object ,它被拾取并且似乎工作得很好。 所以我们继续尝试一个小样本,以确保它使用公共函数并返回期望的值: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim test As New Test_Object.Formatting Dim t As String t = test.extractNumber("abc12g3y45") Target.Value = t End Sub 这按预期工作,返回12345在选定的单元格中。 但是,当我尝试不同的类,按照完全相同的过程,我得到一个错误( Object variable or With block variable not set )。 代码如下: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim test […]

进程ID /窗口句柄在Excel VBA中的后期绑定

我对后期绑定有问题,希望有人能帮助我。 我已经search了Google关于我的问题,大多数解决scheme根本不适合。 我绑定了一个用VBA编写的Excelmacros来与我自己的程序进行通信,它和GetObject()一起工作的很好。 然而,GetObject()得到一个随机的实例,我不希望这样,因为可以同时打开多个实例。 当我通过C#程序打开Excel时,我将窗口句柄和新打开的实例的进程ID作为parameter passing给excel。 我怎样才能通过只使用进程ID和/或窗口句柄在Excel VBA中进行后期绑定? 提前致谢。

使用(TCL)TCOM如何select完整的相邻单元格范围?

需要select一个完整的范围(固定从一个单元开始,但可以向左或向右延伸) 以下代码工作正常,并select表格的最后一行和最后一列从单元格B2开始(第2行第B列) #already opened handle to excel app set appHandle ::tcom::handle0x04C65180 [[$appHandle Range B2] Select set xlToRight -4161 [[$appHandle Selection] End $xlToRight] Select set xlDown -4121 [[$appHandle Selection] End $xlDown ] Select 但它不是select细胞。 有没有任何方法select这个范围。

Python(Pywin32)引用自己的单元格/水平移动

所以,请不要告诉我谷歌或研究或阅读任何东西,过去几天我一直这样做,如果我看到有人再说一遍,会感到恼火。 我的问题:我正在使用pywin32和python 2.7.8与(已经存在的)Excel工作表进行通信。 我用它来logging我的工作时间和赚取的钱等。我已经运行到可以打开工作簿,find我现有的条目下的下一个空单元格,并在该单元格中写入date。 我的问题在于我需要水平导航。 我想程序自动运行,所以我不会总是知道单元格的数量。 例如,我目前的细胞是18,1。 我需要移动到18,2 18,3 18,4和18,5。 但是下次我运行这个脚本,我可能需要19,2 …等等 我怎样才能做到这一点? 有没有办法返回当前单元格? 码: import win32com.client as win32 import os, time xl = win32.Dispatch('Excel.Application') xl.visible = True xl.Workbooks.Open(os.path.join('C:\\Users\\[REDACTED]\\Desktop', '[REDACTED].xls')) xlSheet = xl.Sheets(1) activecell = xlSheet.Cells(1,1) def GetEmptyCell(): global activecell activecell = xlSheet.Cells(1,1) for c in range(1,99,1): if activecell.Value == None: print 'Empty cell' activecell […]

Matlab:如何更新Excel中命名范围的值? (的ActiveX)

我想从Matlab中设置一个命名的范围在Excel中的值。 设置非命名范围的值工作正常。 例如,假设我有一个命名的范围“TENOR”(由一个单元格组成): calibFile = '//path/to/calibration-v2.xlsx' Excel = actxserver('Excel.Application'); Excel.Visible=1; AllWorkBooks = Excel.Workbooks WorkBook = AllWorkBooks.Open(calibFile) AllSheets = WorkBook.Sheets Sheet = get(AllSheets, 'Item', 1) // This Works: Sheet.Range('A1').Value = '5y' // This does not work: Sheet.Range('TENOR').Value = '5y' 有关如何设置命名范围的值的任何帮助?

如何使用混合的float和string元素来格式化vector以便从python转换为excel?

我使用Python 3.4并使用COM与Excel进行通信。 我想要使​​用python将vector转移到Excel。 当我顺序进行转移时,它工作正常。 1,“testing”和3出现在Excel Ws上。 但序列方法很慢,为了加快速度,我想一步转移载体。 喜欢 Range.value = (1,'Test',3) . 当我这样做的时候,我看到Excel方面有三个1。 它与数据types有关,因为当我使用下面的格式化/数据types时,它工作正常。 Range.value = ((1,),('Test'),(3,)) 我想要做的是将一个200+的元素向量与数字和string混合在一起。 如何使用for循环创build具有上述工作格式的向量? 以下是我的testing程序。 from win32com.client import Dispatch xlApp=Dispatch("Excel.Application") xlApp.visible=1 # xlApp.Workbooks.Add() Range = xlApp.ActiveWorkbook.ActiveSheet.Range("C2:C4") Range2 = xlApp.ActiveWorkbook.ActiveSheet.Range("C7;D9") vector=(1,'test3',3) # Elements transfered to Excel one by one xlApp.ActiveWorkbook.ActiveSheet.Range('C2').value = vector[0] xlApp.ActiveWorkbook.ActiveSheet.Range('C3').value = vector[1] xlApp.ActiveWorkbook.ActiveSheet.Range('C4').value = vector[2] print ('Elements transfered […]

Excel COM互操作,如果我编辑单元格,进程不会结束

我正在尝试通过COM互操作来处理Excel。 它工作正常,但Excel过程仍然挂在DoStuff方法完成后(虽然它在我的程序完成时消失)。 如果我删除填充单元格的代码,我没有这个问题。 using System; using System.Reflection; using System.Runtime.InteropServices; using Excel = Microsoft.Office.Interop.Excel; namespace ConsoleApplication13 { class Program { static void DoStuff() { string workbookPath = @"C:\….xlsx"; var excelApp = new Excel.Application(); excelApp.Visible = true; var workbooks = excelApp.Workbooks; var workbook = workbooks.Open(workbookPath, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, […]

是否有可能使用R作为Excel中的“独立”不可见的计算后端?

我知道有可能使用RExcel等软件包将R与Excel集成,但可以将R用作Excel中的“独立”不可见计算后端吗? 例如,我的目标是创build使用Excel作为前端的统计程序,并在后端利用R包进行统计计算。 我希望用户能够使用Excel工作簿而不必安装R.

如果你有Excel7的窗口句柄,你可以得到一个Excel工作簿吗?

使用这里描述的本地窗口挂钩方法,我有一个excel7窗口句柄。 https://blogs.msdn.microsoft.com/anandgeorge/2010/04/10/usage-of-nativewindow-assignhandlereleasehandle-when-unmanaged-code-is-involved/ 有没有办法使用AccessibleObjectFromWindow获取工作簿? 大部分的AccessibleObjectFromWindow用例似乎是为了获得应用程序本身的句柄,但那不是我所需要的,因为我已经通过我的VSTO插件获得了。