vb.net - exe打开文件
问题描述
我有一个包含六个 Excel 文件的文件夹。它们是彼此的克隆,最后附加了友好的名称。Excel 工作簿连接到同一文件夹中的单个数据库。Excel 文件通过 LAN 上不同 PC 上的桌面快捷方式使用。由于应用程序可以多人同时使用,因此前端需要有单独的 Excel 文件。
我想创建一个 Exe(而不是简单的快捷方式,它将从六个文件中打开一个选定的文件,然后记住从该桌面选择的文件。
这是我在 vb.net 的第一次尝试
Private Sub Form1_Activated(sender As Object, e As EventArgs) Handles Me.Activated
Dim Bfld As String, sFileName as string
Bfld = Application.StartupPath
' Say, Bfld is "D:\TestFolder"
' Populate a list box here with files with names containing ""MyExcelFileClient*.xlsm"
' sFileName = selected listbox item
sFileName ="MyExcelFileClient1.xlsm" ' Hard coded with ...Client1.xlsm for testing
Bfld = Bfld & "\" & sFileName
Label1.Text = Bfld
' Wait timer 6 seconds with countdown label in Form1
ShellExecute(Bfld)
Me.Close()
End Sub
Private Function ShellExecute(ByVal File As String) As Boolean
Dim myProcess As New Process
myProcess.StartInfo.FileName = File
myProcess.StartInfo.UseShellExecute = True
myProcess.StartInfo.RedirectStandardOutput = False
myProcess.Start()
myProcess.Dispose()
End Function
End Class
我将不胜感激使用 6 个匹配文件填充 Form1 中的列表框。选择任何文件,将记住选择 (Bfld),直到用户更改它。如果 label1 为空,则 form1 应保留在屏幕上。
如果 label1 有数据(用 Bfld 填充),倒计时 6 秒应该关闭 Form1 并运行 shellExecute 函数。6 秒应该足以让用户更改之前选择的文件。关闭 Form1 或单击按钮应立即运行 ShellExecute 函数。
解决方案
这是我处理这个问题的方法。设置一个带有一个标签以显示文件名和两个按钮的表单。一键更改所选文件,一键实际启动 Excel。计时器是个坏主意。您无法判断用户何时会被打断。
您将需要设置项目属性的设置。请务必将范围限定为用户,以便可以更改值。
当程序启动时,Form.Load
将运行。该代码检查用户设置ExcelPath
。为简单起见,标签仅填充文件名,但表单级别变量FilePathToOpen
存储完整路径。如果没有找到路径,我们调用该ChangePath
方法。btnChangePath
从用户想要更改文件时调用相同的方法。
该ChangePath
方法利用OpenFileDialog
. 设置更改并在关闭时自动保存,表单级别变量被重置,标签显示新选择。
实际运行 Excel 的按钮首先检查是否有FilePathToOpen
. Using...End Using
即使有错误,块也会处理 Dispose 方法。
Private FilePathToOpen As String
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Label1.Text = Path.GetFileName(My.Settings.ExcelPath)
FilePathToOpen = My.Settings.ExcelPath
If Label1.Text = "" Then
ChangePath()
End If
End Sub
Private Sub btnChangePath_Click(sender As Object, e As EventArgs) Handles btnChangePath.Click
ChangePath()
End Sub
Private Sub ChangePath()
Dim OFD As New OpenFileDialog()
OFD.InitialDirectory = "C:\Users\maryo\OneDrive\Documents\Excel"
OFD.Filter = "Excel Files (*.xlxs)|*.xlsx"
OFD.Title = "Select File to Open"
If OFD.ShowDialog() = DialogResult.OK Then
My.Settings.ExcelPath = OFD.FileName
FilePathToOpen = OFD.FileName
Label1.Text = Path.GetFileName(OFD.FileName)
End If
End Sub
Private Sub btnOpenExcel_Click(sender As Object, e As EventArgs) Handles btnOpenExcel.Click
If Not String.IsNullOrEmpty(FilePathToOpen) Then
Using myProcess As New Process
myProcess.StartInfo.FileName = FilePathToOpen
myProcess.StartInfo.UseShellExecute = True
myProcess.StartInfo.RedirectStandardOutput = False
myProcess.Start()
End Using
Close()
Else
MessageBox.Show("You must choose a file.")
End If
End Sub
推荐阅读
- dart - 当我明确地说类型是双精度时,为什么 dart 将变量类型推断为 int?
- python - 如何对带有上下文的句子中的所有单词进行分类?
- c - C循环直到给出0
- mysql - 在查询优化中结合启发式和基于成本的方法
- django - 不同社交用户登录时的电子邮件冲突
- javascript - 如何在同一页面上正确添加/显示多个 chart.js 折线图?
- python - 关于在各种架构和操作系统上运行可执行文件的问题
- python - Python win32gui 在使用 WM_MOUSEMOVE 模拟鼠标时在 Window 上绘制一个假光标
- c# - 使用 LINQ 选择 x 子项到新列表
- javascript - 如何使用 express node.js 在 mongodb 中保存数据?