excel 如何使用已定义的名称对对象进行解密

evrscar2  于 2023-11-20  发布在  其他
关注(0)|答案(1)|浏览(125)

免责声明:我仍然是一个很新的,所以希望你的耐心
我正在尝试编写一个使用Range(“Defined Name”) 而不是Range(“Cell Address”)的代码
但是,我总是遇到错误,例如,在这段代码中,我试图使用我在单元格中输入的工作簿/工作簿名称来设置源文档和目标文档
我所尝试的:

  • 假设单元格的内容也是其定义的名称,并且此表位于目标工作簿中,其中还嵌入了验证码
    | | B(工作表名称)| B (Name of Worksheets) |
    | --|--|--|
    | 1 |SourceWB| SourceWS|
    | 2 |DestinationWB| DestinationWS|
  1. Sub ImportData()
  2. Dim WB_S as Workbook 'source workbook
  3. Dim WS_S as Worksheet 'source worksheet
  4. Dim WB_D as Workbook 'destination workbook
  5. Dim WS_D as Worksheet 'destination worksheet
  6. Application.DisplayAlerts = True
  7. 'OpenWorksheets
  8. Set WB_D = Workbooks.Open(Range("DestinationWB")) 'referring to A2
  9. Set WS_D = WB_D.Sheets(Range("DestinationWS")) 'referring to B2 'ERROR
  10. Set WB_S = Workbooks.Open(Range("SourceWB")) 'referring to A1
  11. Set WS_S = WB_S.Sheets(WB_D.Range("DestinationWS")) 'referring to B2 'referring to B1

字符串
当我到达Set WS_D的行时,我会得到错误
同样,我的目标是引用文件路径和名称作为定义的名称
谢谢你的帮助

jmp7cifd

jmp7cifd1#

尝试

  1. Option Explicit
  2. Sub ImportData()
  3. Dim WB_S As Workbook 'source workbook
  4. Dim WS_S As Worksheet 'source worksheet
  5. Dim WB_D As Workbook 'destination workbook
  6. Dim WS_D As Worksheet 'destination worksheet
  7. Dim ws As Worksheet, nm, msg As String
  8. Application.DisplayAlerts = True
  9. ' check named ranges
  10. Set ws = ThisWorkbook.ActiveSheet ' workbook where ranges are defined
  11. For Each nm In Array("SourceWB", "SourceWS", "DestinationWB", "DestinationWS")
  12. On Error Resume Next
  13. If ws.Range(nm) Is Nothing Then
  14. MsgBox "'" & nm & "' is not a named range", vbCritical
  15. Exit Sub
  16. Else
  17. msg = msg & vbLf & nm & " - " & ws.Range(nm)
  18. End If
  19. On Error Goto 0
  20. Next
  21. 'OpenWorksheets
  22. Set WB_D = Workbooks.Open(ws.Range("DestinationWB")) 'referring to A2
  23. Set WS_D = WB_D.Sheets(ws.Range("DestinationWS").Value2) 'referring to B2
  24. Set WB_S = Workbooks.Open(ws.Range("SourceWB")) 'referring to A1
  25. Set WS_S = WB_S.Sheets(ws.Range("SourceWS").Value2) 'referring to B1
  26. MsgBox msg, vbInformation
  27. End Sub

字符串

展开查看全部

相关问题