Vb.net 在授予用户控制权后,从excel.application获取用户另存为路径

Vb.net 在授予用户控制权后,从excel.application获取用户另存为路径,vb.net,excel,Vb.net,Excel,在显示对象并授予用户控制权后,如何从Excel.Application对象获取保存的文件路径 我不知道这是否重要,但我需要这些信息,因为我想将此路径写入注册表,以便应用程序知道搜索或未来编辑的位置。如果文件不存在或者我的程序没有提供位置,那么我想开始创建一个带有默认标题的文件,并允许它们编辑并用excel另存为 该程序的主要功能是读取excel文件中的搜索值并填充表单控件。此功能用于文件维护/错误处理 我当前的代码: Dim xlApp As Excel.Application Dim xlBo

在显示对象并授予用户控制权后,如何从Excel.Application对象获取保存的文件路径

我不知道这是否重要,但我需要这些信息,因为我想将此路径写入注册表,以便应用程序知道搜索或未来编辑的位置。如果文件不存在或者我的程序没有提供位置,那么我想开始创建一个带有默认标题的文件,并允许它们编辑并用excel另存为

该程序的主要功能是读取excel文件中的搜索值并填充表单控件。此功能用于文件维护/错误处理

我当前的代码:

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim misVal As Object = Reflection.Missing.Value
在这里,我试图让用户在编辑之前将文件保存到某个位置,但excel仍然要求他们在关闭时另存为

xlApp = New Excel.Application
Dim file As String = xlApp.GetSaveAsFilename()

xlApp = New Excel.Application(file)
显示工作簿效果很好,我只是被困在如何在用户关闭显示界面后检索用户保存到的路径上

xlBook = xlApp.Workbooks.Add(misVal)
xlSheet = xlBook.Sheets("sheet1")
xlSheet.Cells(1, 1) = "Group #"

xlApp.DefaultSaveFormat = Excel.XlFileFormat.xlExcel12

xlApp.UserControl = True
xlApp.Visible = True
谢谢,砰

编辑:

亨德森的答案基本上就是我最后所做的

xlApp = New Excel.Application
Dim file As String = xlApp.GetSaveAsFilename()
' make changes to the book
xlBook.SaveAs(file)
xlApp = New Excel.Application(file)
在这之后,当用户关闭窗口时,我不断从excel获得另存为的提示。使用xlBook.Saved=True修复了此问题。我希望用户为文件选择一个位置,然后让程序在关闭时自动保存,所以我还需要添加一个事件处理程序

AddHandler xlBook.BeforeClose, AddressOf auto_save 

其中auto_save是我定义用来执行处理程序xlBook.save的子文件的名称。

此代码将创建一本新书,并提示输入新文件名。对于用户来说,他们将首先得到“另存为”提示,然后显示新的WB。Flname包含另存为文件的完整路径:

Set NewWkbk = Workbooks.Add
Flname = Application.GetSaveAsFilename(InitialFileName:="", FileFilter:="Excel Files (*.xlsx), *.xlsx", Title:="Enter Path for new file..")
NewWkbk.SaveAs (Flname)
注意,GetSaveAsFilename筛选器正在指定.xlsx文件类型。您可能需要调整这是您想要的.xls或.xlsm