Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Выполнить формулу Добавлено: 16.11.08 19:50  

Автор вопроса:  Nytrogen
Возможно ли каким-то образом в VBA вычислить значение формулы рабочего листа? Например, что-то типа MsgBox "=Sheet1!A1 + 5"

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 Nytrogen



Вопросов: 18
Ответов: 186
 Профиль | | #1 Добавлено: 16.11.08 20:19
Вроде нашёл.
  1. MsgBox Application.Evaluate("Sheet1!A1 + 5")


Однако, почему-то метод Evaluate не позволяет прочитать значение из закрытой рабочей книги. Например, такое выражение генерирует ошибку Type Mismatch:
  1. MsgBox Application.Evaluate("'D:\Documents\Creative\Projects\Test\[Data.xls]Sheet1'!A1")


Аналогичная формула в ячейке работает нормально. У кого какие идеи?

Ответить

Номер ответа: 2
Автор ответа:
 Nytrogen



Вопросов: 18
Ответов: 186
 Профиль | | #2 Добавлено: 16.11.08 20:34
А в прочем и на этот вопрос я уже ответил сам:
  1. MsgBox Application.ExecuteExcel4Macro("'D:\Documents\Creative\Projects\Test\[Data.xls]Sheet1'!R1C1")

Таким образом, используя метод Application.ExecuteExcel4Macro и стиль ссылок R1C1, мы можем читать значения из закрытой рабочей книги. Записывать значения аналогичным образом не прокатывает, тут уже нужно открывать эту самую книгу.

Что касается метода Application.Evaluate, то он полезен в случае, когда нужно выполнить выражение, представленное строкой, например,
  1. MsgBox Application.Evaluate("Sheet1!A1 * 5 + 12 + Sheet2!C10")


Спасибо за внимание, может инфа будет полезной =)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам