是否可以部署在Excel中的VB应用程序作为一个独立的应用程序?

基本上想知道是否有一种方法可以让我在Excel中创build一个VB应用程序,并让它运行没有完整版本的MS Office。 VB应用程序将加载一个Excel工作表,导入一个CSV onload,然后打印工作表的PDF并closures。

如果您有任何问题,请告诉我。

不,不是没有转换到独立的应用程序。

如果您熟悉VB6(并且已经可以访问它,不再销售),您可以创build一个VB6应用程序。 引用excel COM组件(仍然需要在每个目标PC上安装)。

否则,build立一个应用程序。 使用VB.NET并使用Office VSTO 2010(需要参考Office PIA)

如何: 通过主互操作程序集来定位Office应用程序

只是有点冲突。 在办公室里,你用VBA编码,而不是VB。 你需要做的是创build一个VB应用程序,使用Excel库或一些有意义的工作。

最简洁的答案是不。

可以编写一个外部的可视化基本脚本来调用办公室,然后使用一些excel库打开excel,如果内存正确地服务于我,你仍然需要在这台机器上安装office。 (不幸的是我现在找不到链接来支持)

最好的办法是自己parsingCSV数据,并从中生成PDF。

这里有一些信息: http : //www.rlmueller.net/ReadCSV.htm关于如何使用VBS读取CSV数据(为了得到例子运行,你只需要将.txt重命名为.vbs并双击它。)

我会离开你,找出你如何生成PDF。

但是我不认为这是解决您的问题的最佳解决scheme – 完整的.NET应用程序或者一些Python可能会更好地为您服务。

代码会在几个不同的地方出现,“ThisWorkbook”对象和“UserForm”代码。

“ThisWorkbook”包含的代码将确定UserForm是否是唯一的Excel事件(工作簿)打开,如果是,则会隐藏Excel应用程序并隐藏工作簿本身。 如果其他工作簿已打开,则只是隐藏工作簿。 我将它设置为在两种情况下隐藏应用程序和工作簿,以便可以在用户窗体运行后打开一个新的Excel实例,而不必拉起与用户窗体关联的工作簿。 下面的代码(进入“ThisWorkbook”对象):

Private Sub WorkBook_Open() Dim wb As Workbook Set wb = Workbooks("MyBook.xlsm") If Workbooks.Count > 1 Then wb.Windows(1).Visible = False Else wb.Windows(1).Visible = False Application.Visible = False End If UserForm1.Show vbModeless 'Put defaults and populations here End Sub 

UserForm1.Show vbModeless允许在UserForm处于活动状态时使用Excel。 关于这一部分的几个笔记:

  • “UserForm1”是我的UserForm的名称,将其更改为您的名称
  • 我在哪里Set wb = Workbooks("")在引号内更改为用户窗体的工作簿的名称
  • IfElse语句可以被删除并移动到If ,如果您不需要任何其他操作打开其他工作簿

代码的下一部分进入UserForm代码。 我设置了一个button来显示Excel工作簿,以便对其进行编辑,如果您不想显示button,则可以点击一个区域。 当你想激活Excel工作表时,需要激活应用程序。 我卸载(停用)活动的东西(UserForm)。 如果用户不需要访问电子表格,那么这一点代码是不必要的:

 Private Sub See_Excel_Click() Dim wb As Workbook Set wb = Workbooks("MyBook.xlsm") wb.Windows(1).Visible = True Application.Visible = True wb.Sheets("Sheet1").Activate Unload Me End Sub 

在用户表单中,应该有一种方法来处理在用户表单closures时发生的情况,因为excel应用程序和工作簿将在后台保持打开状态。 我有行动closures工作簿和应用程序。 快速注意,如果您设置Cancel = True那么红色的xbutton将不会closures用户窗体。 我使用的代码是:

 Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then Cancel = False Dim wb As Workbook Set wb = Workbooks("MyBook.xlsm") wb.Windows(1).Visible = True Application.Visible = True ThisWorkbook.Saved = True ThisWorkbook.Activate If Workbooks.Count > 1 Then ActiveWorkbook.Close Else Application.Quit End If End If End Sub 

这是用于UserForm内的代码。 在VBA中具有UserForm所需的代码充当它自己的应用程序,同时允许Excel与UserForm同时正常运行。

总结发生了什么:

  1. 当工作簿启动时,工作簿被隐藏,如果没有其他工作簿被打开,Excel应用程序将被隐藏。
  2. UserForm启动,以允许在同一时间使用Excel
  3. 当电子表格再次激活时,Excel将重新启用,应用程序将取消隐藏工作表
  4. 当用户窗体closures时,工作簿closures,如果没有其他工作簿,则closuresExcel应用程序
  5. 如果您设置默认值或填充ComboBoxes将它们放在“WorkBook”对象代码中。