是否可以部署在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同时正常运行。
总结发生了什么:
- 当工作簿启动时,工作簿被隐藏,如果没有其他工作簿被打开,Excel应用程序将被隐藏。
- UserForm启动,以允许在同一时间使用Excel
- 当电子表格再次激活时,Excel将重新启用,应用程序将取消隐藏工作表
- 当用户窗体closures时,工作簿closures,如果没有其他工作簿,则closuresExcel应用程序
- 如果您设置默认值或填充ComboBoxes将它们放在“WorkBook”对象代码中。