Function Get_Value_From_Close_Book(sWb As String, sShName As String, sAddress As String) Dim vData, objCloseBook As Object Set objCloseBook = GetObject(sWb)
vData = objCloseBook.Sheets(sShName).Range(sAddress).Value objCloseBook.Close False Set objCloseBook = Nothing
Get_Value_From_Close_Book = vData End Function
[/vba] В ячейках D2:N2 прописал =Get_Value_From_Close_Book("F:\101006649.csv";"101006649";"J2") , меняю только J2 до J12 с шагом 1. В следующей строке с D3 по N3 меняется только название файла источника, аналогично в последующих строках.
Могу получить номер строки методом NRow = Application.ThisCell.Row Хотел бы одним вызовом заполнить всю строку. Пробовал разные методы [vba]
Function Get_Value_From_Close_Book(sWb As String, sShName As String, sAddress As String) Dim vData, objCloseBook As Object Set objCloseBook = GetObject(sWb)
vData = objCloseBook.Sheets(sShName).Range(sAddress).Value objCloseBook.Close False Set objCloseBook = Nothing
Get_Value_From_Close_Book = vData End Function
[/vba] В ячейках D2:N2 прописал =Get_Value_From_Close_Book("F:\101006649.csv";"101006649";"J2") , меняю только J2 до J12 с шагом 1. В следующей строке с D3 по N3 меняется только название файла источника, аналогично в последующих строках.
Могу получить номер строки методом NRow = Application.ThisCell.Row Хотел бы одним вызовом заполнить всю строку. Пробовал разные методы [vba]
[/vba] в D1 прописал =Get_Value_From_Close_Book("F:\101006649.csv";"101006649") Но данных нет, в ячейке только [#ЗНАЧ!] при наведении (<!>Значение, используемое в формуле, имеет неправильный тип данных)
[/vba] в D1 прописал =Get_Value_From_Close_Book("F:\101006649.csv";"101006649") Но данных нет, в ячейке только [#ЗНАЧ!] при наведении (<!>Значение, используемое в формуле, имеет неправильный тип данных)novinky
Сообщение отредактировал novinky - Воскресенье, 01.12.2024, 13:07
Добрый день. Для этой задачи макрос-функция (UDF) не подходит. Вы используете хорошо известную UDF для извлечения значения из закрытой книги, но это только для одной ячейки из которой вызывается эта функция. Значения других ячеек UDF менять не могут. Если хотите сделать "одним вызовом", то вместо UDF используйте макрос-процедуру. P.S. В том источнике, где вы нашли эту функцию имеются примеры макросов для копирования диапазонов из закрытых книг. Правда у них есть один серьезный недостаток - они работают медленно. Удобнее и быстрее открыть файл, скопировать данные и закрыть его.
Добрый день. Для этой задачи макрос-функция (UDF) не подходит. Вы используете хорошо известную UDF для извлечения значения из закрытой книги, но это только для одной ячейки из которой вызывается эта функция. Значения других ячеек UDF менять не могут. Если хотите сделать "одним вызовом", то вместо UDF используйте макрос-процедуру. P.S. В том источнике, где вы нашли эту функцию имеются примеры макросов для копирования диапазонов из закрытых книг. Правда у них есть один серьезный недостаток - они работают медленно. Удобнее и быстрее открыть файл, скопировать данные и закрыть его.i691198
в D1 прописал =Get_Value_From_Close_Book("F:\101006649.csv";"101006649")
да и (к сказанному выше) - csv это не файл экселя, открывается как повезёт, если работает всегда на одной машине и все файлы по шаблону может и можно применять, но надёжности 0
в D1 прописал =Get_Value_From_Close_Book("F:\101006649.csv";"101006649")
да и (к сказанному выше) - csv это не файл экселя, открывается как повезёт, если работает всегда на одной машине и все файлы по шаблону может и можно применять, но надёжности 0Hugo
В том источнике, где вы нашли эту функцию имеются примеры макросов для копирования диапазонов из закрытых книг
Спасибо Большое, не знал. Пробовал через функцию вызвать код в Sub для заполнения нескольких ячеек, у меня не получилось - так то же не получиться?novinky
Нет, не получится. Почитайте об ограничениях и возможностях UDF, там прямо сказано о невозможности изменения значений в других ячейках, в том числе и при вызове процедур внутри функции. В интернете можно найти попытки обхода этого ограничения, но даже сами авторы говорят, что это очень ненадежно.
Нет, не получится. Почитайте об ограничениях и возможностях UDF, там прямо сказано о невозможности изменения значений в других ячейках, в том числе и при вызове процедур внутри функции. В интернете можно найти попытки обхода этого ограничения, но даже сами авторы говорят, что это очень ненадежно.i691198