如何获取打开或保存文件地址和文件名,VBA编程

如何获取打开或保存文件地址和文件名,VBA编程

编码文章call10242025-02-25 11:12:5319A+A-

No.1

VBA编程中有这样一种情景,就是当我们选择打开一个文件后,并不打算进行编辑,也就是说根本不想打开这个文件,而只是通过"打开文件"对话框来传递这个文件的地址和文件名。

怎么办呢?VBA给出了一个方法,可以方便地通过这个方法实现获取文件地址和名称。

如下图所示,GetOpenFilename方法可实现上述功能。

此文件是Application对象之下使用,使用方法:

Application.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)

参数说明可以参考下图:

如果,在打开对话框中没有单击确定按钮,也就是没有选择任何文件,单击了取消按钮的时候,GetOpenFilename方法返回False。

根据返回值,就可以对程序过程进行一个判断,是传递文件名还是进行其它操作。

下图为另一个方法,实现保存文件名返回。

语法:
Application.GetSaveAsFilename (InitialFilename, FileFilter, FilterIndex, Title, ButtonText)

获取用户文件名,而不保存任何文件。

感觉这两个方法都有些欺骗性,也不知道为什么这么做。

不管怎么着,只要理解在什么场景下可以使用达到目的就行了。

下图为例进行说明

三个按钮,一个打开文件,一个保存文件,一个清除记录。

每打开一个文件就记录一条,每保存一个文件就记录一条,其实都没有执行真正的操作。

清除记录可把记录的内容删除。

看下代码就明白了。

No.2

Private Sub CommandButton1_Click()
Dim O As Variant'定义变量
O = Application.GetOpenFilename’返回值
If O <> False Then‘如果不是False就执行工作表记录过程
    WriteValue O, Me.CommandButton1.Caption
Else
    MsgBox "没有选择文件!"
End If
End Sub
Private Sub WriteValue(O As Variant, Cname As String)
    Dim cell As Range, ir As Integer
    Set cell = ActiveSheet.Range("B3")
    ir = ActiveSheet.Cells(ActiveSheet.Cells.Rows.Count, cell.Column).End(xlUp).Row + 1
    With ActiveSheet.Cells(ir, cell.Column)
        .Value = "=row()-3"
        .Offset(0, 1).Value = O
        .Offset(0, 2).Value = Cname
    End With
End Sub

以上代码实现对工作表进行记录,记录内容为打开或保存工作表的地址和文件名。

调用系统标准对话框有几种方法,前面文章里有过介绍,如Dialog对象,就是Microsoft Excel 中的所有内置对话框集合,有兴趣可以参考学习。

欢迎关注、收藏

---END---

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4