2016-12-05 78 views
0

我有一個問題從Excel工作表中獲取值。我按照教程,但它不起作用。我還包括Excel引用到字,但我仍不能返回值
這是我的代碼:從Excel中返回一個值

Sub Return_a_Value_from_Excel() 

Dim mySpreadsheet As Excel.Workbook 
Dim strSalesTotal As String 

Set mySpreadsheet = GetObject("C:\Documents\Book1.xls") 
strSalesTotal = mySpreadsheet.Application.Range("Test").Value 
Set mySpreadsheet = Nothing 

Selection.TypeText "Current sales total: $" & strSalesTotal & "." 
Selection.TypeParagraph 
End Sub 

我只是想要回那是寫在Excel中

+0

當我將''Test''範圍改爲'「A1」'時,我的電腦上的代碼運行良好。你是否一步步運行並檢查了變量strSalesTotal?您也可以檢查發生了什麼,如果您將範圍更改爲您要閱讀的列。 –

回答

1

你做錯了的價值,您應該遵循的Excel對象模型即

應用程序 - >工作簿 - >表 - >範圍/圖

在下面一行:

strSalesTotal = mySpreadsheet.Application.Range("Test").Value 

你跳過表, 你的代碼應該是

strSalesTotal = mySpreadsheet.Sheets("Sheet1").Range("A1").Value 

請替換「Sheet1中」和「A1」 Accorodingly

+0

實際上,當你引用一個命名範圍時,你不需要引用這個表單......嘗試做一個命名範圍「test」,並像從這個''[test]'從即時窗口中引用它。 – Vityata

+1

定義它時取決於範圍的範圍。 要使用工作簿級別範圍,您必須將工作簿與它一起引用。 子FormatRange() 範圍( 「MyBook.xls!MyRange」)。Font.Italic =真 結束小組 https://msdn.microsoft.com/en-us/library/office/ff823060.aspx – PankajKushwaha

+0

這實際上是真的,@PankajKushawaha。如果您手動定義它,通過A1上方的單元格,它將獲取Worksheet範圍。 – Vityata

0

或者嘗試這樣的,如果你還沒有定義它明確爲有效僅在片材範圍:

strSalesTotal = mySpreadsheet.Range("Test").Value 

strSalesTotal = mySpreadsheet.[Test]