如何将单元格值定义为工作表

时间:2019-05-21 18:48:33

标签: excel vba

我当前在代码中使用的是固定文件名,但是我想用特定单元格的值替换该固定名

我在所有线程中进行了广泛的研究,很不幸-我对编码非常陌生,所以我发现了类似的问题,但是我无法将其应用于编码或完全满足我的需求

我尝试使用

Set wbBook2 = Workbooks(wsSheet1_1.Range("O35").Value) 

和其他一些类似步骤,但无济于事

Dim wbBook1 As Workbook
Dim wsSheet1_1 As Worksheet
Dim wsSheet1_2 As Worksheet

Dim wbBook2 As Workbook
Dim wsSheet2_1 As Worksheet

Set wbBook1 = Workbooks("Main File.xlsm")
Set wsSheet1_1 = wbBook1.Worksheets("Example1")
Set wsSheet1_2 = wbBook1.Worksheets("Example2")

Set wbBook2 = Workbooks("Look Up File.xlsm")
Set wsSheet2_1 = wbBook2.Worksheets("Example3")

以上内容使我可以使用“ wbBook2.Activate”切换到数据所在的工作簿并采取必要的操作,但是我希望能够从使用“查找File.xlsm”更改为单元格wsSheet1_1上为O35。

当前,我只是要确保我的查找文件具有与代码中指出的名称相同的名称,但是如果不小心重命名或用户将此名称命名为LookUp File(忽略空格),显然会导致失败例如。

请注意,使用此代码后'wbBook2'将已经打开,并且文件名可以更改。用户分别定义完整的文件路径和名称(包括.xlsm),然后在单独的宏中打开该文件,该宏需要保持独立

1 个答案:

答案 0 :(得分:0)

循环浏览工作簿并寻找匹配项比较安全

Private Function set_wb(ByVal toName As String) As Workbook

    ' Function set_wb(<String>), returns Workbook Object on match.
    ' - if no match found, return Nothing
    ' - invokation example: Set wb1 = set_wb("Book1")

    Dim wb As Workbook
    For each wb in Application.Workbooks
       If wb.Name = toName Then
           Set set_wb = wb ' wb found
           Exit Function
       End If
    Next wb

    Set set_wb = Nothing ' wb not found
End Function

并且在您的情况下将通过以下方式调用:

Set wbBook2 = set_wb(wsSheet1_1.Range("O35"))