使用workbooks.open打开工作簿后如何获取工作簿名称?

时间:2019-03-27 08:39:38

标签: excel vba

Workbooks.Open "C:\abc.xlsx"
Workbooks("abc").Worksheets("Sheet1").Range("A1:B7").Clear

在上面的代码中,我在第一行中使用Workbooks.Open打开工作簿。在第二行中,我使用工作簿名称访问打开的工作簿。

如何在第二行中没有文件名的情况下访问打开的工作簿?

(我想创建一个函数,并且我不想分别传递文件路径和文件名)

4 个答案:

答案 0 :(得分:4)

您需要使用参考,并参考工作簿和工作表,例如:

Option Explicit

Sub OpenWorkbook()

   Dim wb As Workbook, ws As Worksheet

   Set wb = Workbooks.Open("C:\abc.xlsx", UpdateLinks:=False, ReadOnly:=True)
   Set ws = wb.Sheets("Sheet1")

   ws.Range("A1:B7").ClearContents

End Sub

请注意,您可以根据需要将openworkbook上的参数(例如UpdatelinksReadOnly修改为TrueFalse

答案 1 :(得分:3)

创建类型为Excel.Workbook的对象,然后将其打开。

喜欢

Dim w as Excel.Workbook
set w= Workbooks.Open ("C:\abc.xlsx")

然后你可以说

w.worksheets.add.....

答案 2 :(得分:1)

您可以缩短代码:

Option Explicit

Sub OpenWb()

    Dim ws As Worksheet

    Set ws = Workbooks.Open("C:\abc.xlsx").Worksheets("Sheet1")

    With ws '<- Use With Statement to avoid sheet repetition
        .Range("A1:B7").ClearContents
    End With

End Sub

答案 3 :(得分:1)

你可以试试这个

Option Explicit
Sub TEST()
Dim WB As Workbook
Set WB = Workbooks.Open(Filename:="C:\abc.xlsx")
For Each WB In Workbooks
    If WB.Name = "abc.xlsx" Then
        WB.Worksheets(Sheet1).Range("A1:B7").ClearContents
        Exit Sub
    End If
Next
End Sub