簡體   English   中英

如何處理外部范圍引用中的特殊字符?

[英]How do I handle special characters in external range references?

我的應用程序檢查外部工作簿的每個工作表,以查看該工作表上是否定義了具有特定名稱的范圍:

externalRangeName = "[" & workbookName & "]" & sheetName & "!" & rangeName
'
'  E.g., externalRangeName = "[source8.xlsm]PK CD=0!rawData"
'
Dim externalRange As Range
Dim rangeExists As Boolean
On Error Resume Next
Set externalRange = Range(externalRangeName)
rangeExists = Err.Number = 0

即使范圍存在,rangeExists 也是 False。 問題似乎是工作表名稱中存在特殊字符。 如果我將工作表名稱從“PK CD=0”更改為“foo”之類的簡單名稱,則應用程序會找到該范圍。

我已經發現外部范圍引用的文件名部分不能包含某些字符,因此我簡化了文件名。 但現在看起來工作表名稱也必須簡化。

這是一個已知的 VBA 錯誤嗎? 如果是這樣,是否有解決方法? 例如,有沒有辦法轉義特殊字符? 如果沒有,我做錯了什么?

您應該在引用中用單引號將工作簿名稱和工作表名稱括起來。 這就是 Excel 本身如何考慮文件名和工作表名稱中的空格。

所以

externalRangeName = "'[" & workbookName & "]" & sheetName & "'!" & rangeName

'  example: ='[Name of the workbook.xlsm]PK CD=0'!rawData

是的,我通過刪除特殊字符來簡化工作表名稱。

Dim wb As Workbook
Dim ws As Worksheet       

 For Each ws In wb.Worksheets
    
    'Rename sheet names that have ^ = - in them'

        If InStr(ws.Name, "^") > 0 Then
            ws.Name = Replace(ws.Name, "^", "")
        
        ElseIf InStr(ws.Name, "-") > 0 Then
            ws.Name = Replace(ws.Name, "-", "")
            
        ElseIf InStr(ws.Name, "=") > 0 Then
            ws.Name = Replace(ws.Name, "=", "")
        
        End If
    
 Next

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM