2009-02-10 78 views
0

我们目前有一个包含大量VBA代码的Excel电子表格。 VBA代码负责:迁移到VSTO/Excel Interop选项

  • 操纵,转换和格式化工作表数据。
  • 调用C#和C++ COM公开的功能。在将表单数据编组到C#/ C++方法中,获取结果并使用结果更新工作表。

根据需要以及其他实用程序代码。

我们现在想要添加一个新工作表到我们的Excel工作簿,我们不想要任何VBA。我们想要使用C#。正如我所看到的,我仅限于以下选项:

  • 将整个项目移植到VSTO,将VBA手动重新编码为VSTO项目中的C#。
  • 用C#编写新工作表的功能,并通过COM公开它。 C#代码将使用Excel PIA来更新工作表。该表需要一层非常薄的VBA来将数据编组到C#方法。

我不认为ManagedXLL会帮助我,因为我的代码要求与处理表单数据一样多,因为它们是关于使用结果更新表单的。

请评论/要求任何更多的细节。

谢谢。

回答

1

你忘了:

  • 端口整个项目VSTO,移植现有的代码VB.Net(其中一些将刚才复制/粘贴),并在C#编写新的代码。
  • 将新工作表放在一个单独的工作簿中,并作为数据源调用旧工作簿。
0

看,如果你想听我的意见......在发展方面,可能需要更长的时间,但... 您是否使用VB.Net或C#采取这种做法..

  1. 做一个像转换一样。对于不重要的VBA数量,这将有助于您理解逻辑和数据解析的有时令人费解的方法。

  2. 通过单元迭代更改单元格的所有实例,并循环读取一次一次写入单页类型的方法。这将涉及重新编写代码的各个部分。在方法开始时读取所有道具和值,并在最后写出所有想要回退的道具和值。

  3. 确保所有的数据和逻辑处理都是在.net中使用.net数据类型完成的,不要直接在循环内使用范围对象或工作表对象属性,它只是昂贵的方法。

  4. 终于确保如果你使用多个线程你在主线程上做了所有的“Excel东西”。

  5. 阅读SO以获取正确处理COM对象的大量技巧。谨防错误的处理模式。