Tag: vb6

一种使用c#更新活动工作簿的活动工作表的方法?

我想更新当前文档中当前工作表的值,而不考虑excel的文件名。 在vb6.0我们可以做到 Set AppExcel = GetObject(, "Excel.Application") Set SheetExcel = AppExcel.ActiveWorkbook.ActiveSheet 我曾经试图在C#中做同样的事情。 有没有办法在C#中做同样的事情。

VBA数据层error handling

我有一些传统的Excel文件,大量调用存储过程和数据库连接,所有这些都是用旧的方式完成的。 因为在VBA中没有像.NET一样的try-catch-finally的概念,是否有任何最佳实践来申请有一个更坚实的数据访问层? 我想就如何打开连接,执行需要一些参数的存储过程,然后在任何成功或错误的情况下,closures连接和释放资源,有一个很好的例子。

免费的VB6 / VBA分析器和最佳的Excel实践

我们有很多通过VBA和Excel生成的报告。 只有一小部分的报告是实际的计算 – 大部分工作是sql调用和单元格的格式化/写入。 其中最长的时间需要几个小时,大多数需要大约20-30分钟。 VBA / Excel代码插入VB6桌面应用程序使用的dll – 在这里所有的SQL调用。 虽然我确信这里有改进的空间,但这不是我所关心的 – 桌面应用程序相当快速。 两个VBA函数被大量使用:它们被称为GetRange和SetupCell,它们几乎总是一起出现。 GetRange函数是Excel.Range对象的包装器。 它需要一张表,并且范围的范围有4个值。 它的主要用途是挑选单元格进行编辑。 似乎没有太多的机会,但这是最好的方法吗? 它的合作伙伴是SetupCell。 这需要一个Excel.Range对象,文本和关于单元格的十几个参数(字体,边框等)。 大多数这些参数是可选的布尔值,但是再一次,这看起来非常浪费。 其中一些可以追授,但有些依赖于包含在单元格中的值。 这些函数中包含了相当多的代码,主要是如果声明和工作不会感激我发布它。 我想我有两个问题: 有没有更好的方法,是什么 , 是否有免费的分析器,我可以用来看看是否大部分时间在这里或在DLL中?

在这个VB6代码中,“Shift:=”是什么意思?

我在VB6应用程序中运行以下行。 mobjParentWrkBk.ExcelWorkBook.Application.Selection.Insert Shift:=xlToRight 不幸的是,谷歌和其他search引擎不是很有用,因为他们似乎省略:=部分。 什么是C#等价物?

VB.NET相当于VB6属性Item.VB_UserMemId = 0

我已经从VB6升级到VB.NET通过COM在Excel中使用。 在VB6中,我有一个在类MyScalars定义的属性,如下所示: Public Property Get Item(vntIndexKey As Variant) As MyScalar Attribute Item.VB_UserMemId = 0 Set Item = mCol(vntIndexKey) … End Property 这似乎使得在Excel VBA中,我可以访问此属性而不指定它(如同默认属性): Dim oOut As Object Set oOut = MyScalars(Range("E10").Value) 在VB.NET中是否有一个等价的属性呢? 我试过以下,但它给VBA中的错误: Default Public ReadOnly Property Item(ByVal vntIndexKey As String) As MyScalar Get If mCol.ContainsKey(vntIndexKey) Then Item = mCol.Item(vntIndexKey) End If … End Property

ReDim保留“下标超出范围”

我正试图将数据从2个双数组移动到2个不同的双数组。 我不确定尺寸是什么,因为我正在从第一个数组中取出一个随机样本,并把它放到第二个数组中。 当我添加ReDim保留线时,我得到下标超出范围错误。 Function CreateTrainingSet(TrainingPercent As Double, Inputs() As Double, Outputs() As Double) ' Create Randomized Training set data Dim TrainingInputs() As Double, TrainingOutputs() As Double Dim i As Integer, j As Integer, count As Integer 'ReDim TrainingInputs(UBound(Inputs, 1), UBound(Inputs, 2)) 'ReDim TrainingOutputs(UBound(Outputs, 1), UBound(Outputs, 2)) count = 0 ' Move TraningPercent % of data […]

通过打开文件启动Excel时,Excel加载项不加载

有几个用户报告说,如果他们通过双击Excel文件启动Excel,那么加载项将不会加载。 但是,如果他们通过开始菜单(或快速启动工具栏)打开Excel,加载项加载正常。 一些细节,如果他们帮助: 这是一个COM加载项,用VB6编写。 该问题已在Windows XP / Excel 2003和Vista / Excel 2007系统中报告。 加载项实现了IDTExtensibility2。 启动模式设置为“启动时加载”。 任何想法的原因或如何解决这个将不胜感激。 更新:我相信我已经find了解决这个问题的方法。 当一个IDTExtensibility2 dll被注册时,它会自动为加载行为,加载项名称等创buildHKCU条目。但是我也有我的设置文件注册到HKLM的加载项,以便所有用户都可以使用机。 这导致系统上的registry项双重。 我不认为这将是问题的原因。 我手动编辑了HKCU的条目,而Excel似乎忽略了它们,并遵循了HKLM的条目。 但是,我收到另一位开发人员的提示,说明他们有同样的问题,他们的解决scheme是删除重复的registry项。 我试了一下,似乎已经解决了报告错误的(非常less的)人的问题。 下面的Inno设置代码将添加HKLM条目,仔细检查加载行为是否正确(因为我是偏执狂),然后删除HKCU条目。 将您的文件属性replace为您看到的全部大写。 [Registry] Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; Flags: uninsdeletekey Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: string; ValueName: FriendlyName; ValueData: ADDIN_NAME Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: string; ValueName: Description; ValueData: ADDIN_DESC Root: HKLM; Subkey: […]

一个简单的C#DLL – 我如何从Excel,Access,VBA,VB6中调用它?

我有一个简单的类库用C#编写。 using System; namespace TestDll { public class Test { public string HelloWorld { get { return "Hello World"; } } } } 我的问题是如何从Microsoft Office Visual Basic(我认为是VB6)调用这个HelloWorld函数? 我的第一步是添加DLL作为参考 – 但在浏览和select编译的DLL消息“无法添加对指定文件的引用”。 被抛出 任何人都可以指出我正确的方向为什么/如何得到这个工作? 在此先感谢!