3

我正在使用 OpenFileDialog 打开 Excel 工作簿,将数据从该工作簿传递到另一个工作簿,然后关闭我通过 OpenFileDialog 打开的工作簿。我的问题是传递数据...如何仅获取通过 OpenFileDialog 打开的文件的名称?我没有路径,我只需要带有扩展名的文件名。这是我的代码的一部分

Dim filedialog As OpenFileDialog = New OpenFileDialog()
Dim strFileName As String
                filedialog.Title = "Open File Dialog"
                filedialog.InitialDirectory = "W:\TOM\ERIC\NET Dev"
                filedialog.RestoreDirectory = True
                If filedialog.ShowDialog() = DialogResult.OK Then
                    strFileName = filedialog.FileName
                    System.Diagnostics.Process.Start(strFileName)
                    StatVar.xlApp.Workbooks(StatVar.workbookName).Sheets("Input Form     Info").Range("B4:B204").Value = StatVar.xlApp.Workbooks(strFileName).Sheets("DJA Corp     Use").Range("C2:C202").Value
                    StatVar.xlApp.Workbooks(strFileName).Close(False)
                End If
            Else
                Exit Sub
            End If

我无法将数据从工作簿传递到工作簿,因为 strFileName 变量包含文件路径。我一直在尝试使用此函数来返回文件名,但显然我经验不足。任何帮助表示赞赏。

    Public Function FileNameWithoutPath(ByVal FullPath As String) As String

    Return System.IO.Path.GetFileName(FullPath).ToString

    End Function
4

3 回答 3

0

您可能需要将其保留为 Process.Start() 的完整路径,然后删除该路径,使其只是文件名:

            If filedialog.ShowDialog() = DialogResult.OK Then
                strFileName = filedialog.FileName
                System.Diagnostics.Process.Start(strFileName)

                strFileName = System.IO.Path.GetFileName(strFileName)
                StatVar.xlApp.Workbooks(StatVar.workbookName).Sheets("Input Form     Info").Range("B4:B204").Value = StatVar.xlApp.Workbooks(strFileName).Sheets("DJA Corp     Use").Range("C2:C202").Value
                StatVar.xlApp.Workbooks(strFileName).Close(False)
            End If
于 2013-05-20T16:31:03.660 回答
0

你可以试试filedialog.SafeFileName

获取对话框中选定文件的文件名和扩展名。文件名不包括路径。

MSDN 链接

于 2013-05-20T16:32:40.470 回答
0

获取打开文件对话框的文件名,然后使用 System.IO.Path.GetFileName(OpenFileDialog1.FileName)

于 2014-07-11T14:37:18.600 回答