2016-12-05 4 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 

Я просто хочу, чтобы вернуть значение, которое записывается в первенствует

+0

Ваш код отлично работает на моем компьютере, когда я меняю диапазон «Тест» на «А1». Вы запустили его шаг за шагом и проверили переменную strSalesTotal? Вы также можете проверить, что произойдет, если вы измените диапазон на столбец, который хотите прочитать. –

ответ

1

Вы делаете это неправильно, Вы должны следовать Excel Object Model т.е.

Application -> Рабочая книга -> Sheets -> Range/Chart

В строке ниже:

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

Вы пропустили Sheets, Ваш код должен быть

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

Пожалуйста, замените «Лист1» и «А1» Accorodingly

+0

Фактически, когда вы ссылаетесь на именованный диапазон, вам не нужно ссылаться на лист ... Попробуйте сделать именованный диапазон «test» и направить его как этот '? [Test]' из непосредственного окна. – Vityata

+1

Это зависит от области действия диапазона при определении его. , чтобы использовать диапазон уровней рабочей книги, вам необходимо передать книгу с ней. Sub FormatRange() Range ("MyBook.xls! MyRange"). Font.Italic = True End Sub https://msdn.microsoft.com/en-us/library/office/ff823060.aspx – PankajKushwaha

+0

Это правда, @PankajKushawaha. Если вы определяете его вручную, через ячейку выше A1, он получает диапазон рабочих листов. – Vityata

0

Или попробуйте, как это, если вы не определили его явно быть действительным только в диапазоне листа:

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

или

strSalesTotal = mySpreadsheet.[Test]