2017-07-31 41 views
1

我寫了這個代碼,但得到一個錯誤:VB接取創建在使用範圍內的每個範圍從Excel

Function getFileRange(ByVal objFilePath As String) As String 
    Dim xlApp As Object 
    Dim xlWb As Object 
    Dim xlSheet As Object 
    Dim rng As Object 
    Dim usedRng As Variant 

    Set xlApp = CreateObject("Excel.Application") 
    Set xlfile = xlApp.Workbooks.Open(objFilePath) 
    Set xlSheet = xlfile.Sheets(1) 

    usedRng = xlSheet.usedRange.Address 
    getFileRange = Replace(usedRng, "$", "") 

    For Each rng In usedRng 
     If rng.MergeCells Then 
      With rng.MergeArea 
       .UnMerge 
       .Formula = rng.Formula 
      End With 
     End If 
    Next 


    Debug.Print getFileRange 

    Workbooks.Close True 

    Set xlApp = Nothing 
    Set xlfile = Nothing 
    Set xlSheet = Nothing 

End Function 

如何界定RNG的範圍在Excel中?任何參考,我可以瞭解有關在vb訪問轉換excel vb? (我不知道你是怎麼說的,我需要知道很多關於在訪問中創建excel應用程序的情況,反之亦然)

+1

'昏暗的RNG作爲Range' – Vityata

回答

1

您將其定義爲Dim rng as Range。 然後你應該設置它。 usedRng也一樣。該範圍的屬性AddressString,您應該參考而不是。一般來說,在你的代碼中看起來像這樣:

Dim rng  As Range 
Dim usedRng As Range 
set usedRng = xlSheet.usedRange 

然後它可以工作。


您也可以使用後期綁定,如果你錯過了Microsoft Excel N Object Library。然後,這樣的事情可以做的工作:

Dim rng  As Object 
Dim usedRng As Object 

Set usedRng = xlSheet.usedRange 
+0

它不會承認的範圍錯誤:沒有定義的用戶定義類型。我錯過任何參考嗎? – Anthony

+0

@Anthony - 給出參考的屏幕截圖。你應該有'Microsoft Excel N Object Library' – Vityata

+0

是我錯過了那個庫。已經添加和工作。但是現在在usedRng = xlSheet.usedRange.Address「對象變量或未設置塊變量時,我得到了不同的錯誤。」 – Anthony