Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/не могу скопировать столбец в строку - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
не могу скопировать столбец в строку
novinky Дата: Воскресенье, 01.12.2024, 07:57 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

[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]
Код
objCloseBook.Sheets(sWb).Range("J2:J12").Copy Destination:=vData.Range("D2:N2")
[/vba]
[vba]
Код
Range("J2:J12").Copy Destination:=Range("D" & RowNum & ":N" & RowNum)
[/vba]
Не получается, помогите пожалуйста.
 
Ответить
Сообщение[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]
Код
objCloseBook.Sheets(sWb).Range("J2:J12").Copy Destination:=vData.Range("D2:N2")
[/vba]
[vba]
Код
Range("J2:J12").Copy Destination:=Range("D" & RowNum & ":N" & RowNum)
[/vba]
Не получается, помогите пожалуйста.

Автор - novinky
Дата добавления - 01.12.2024 в 07:57
doober Дата: Воскресенье, 01.12.2024, 10:59 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 983
Репутация: 340 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код
vData.Range("D2:N2") = Application.Transpose(objCloseBook.Sheets(sWb).Range("J2:J12"))
[/vba]


 
Ответить
Сообщение[vba]
Код
vData.Range("D2:N2") = Application.Transpose(objCloseBook.Sheets(sWb).Range("J2:J12"))
[/vba]

Автор - doober
Дата добавления - 01.12.2024 в 10:59
novinky Дата: Воскресенье, 01.12.2024, 13:03 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

vData.Range("D2:N2") = Application.Transpose(objCloseBook.Sheets(sWb).Range("J2:J12"))

Спасибо, попробовал
[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.Range("D2:N2") = Application.Transpose(objCloseBook.Sheets(sShName).Range("J2:J12"))
...
[/vba]
в D1 прописал =Get_Value_From_Close_Book("F:\101006649.csv";"101006649")
Но данных нет, в ячейке только [#ЗНАЧ!] при наведении (<!>Значение, используемое в формуле, имеет неправильный тип данных)


Сообщение отредактировал novinky - Воскресенье, 01.12.2024, 13:07
 
Ответить
Сообщение
vData.Range("D2:N2") = Application.Transpose(objCloseBook.Sheets(sWb).Range("J2:J12"))

Спасибо, попробовал
[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.Range("D2:N2") = Application.Transpose(objCloseBook.Sheets(sShName).Range("J2:J12"))
...
[/vba]
в D1 прописал =Get_Value_From_Close_Book("F:\101006649.csv";"101006649")
Но данных нет, в ячейке только [#ЗНАЧ!] при наведении (<!>Значение, используемое в формуле, имеет неправильный тип данных)

Автор - novinky
Дата добавления - 01.12.2024 в 13:03
doober Дата: Воскресенье, 01.12.2024, 13:50 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 983
Репутация: 340 ±
Замечаний: 0% ±

Excel 2010
Если функция используется в ячейке, то ничего работать не будет.Она не может менять другие ячейки


 
Ответить
СообщениеЕсли функция используется в ячейке, то ничего работать не будет.Она не может менять другие ячейки

Автор - doober
Дата добавления - 01.12.2024 в 13:50
i691198 Дата: Воскресенье, 01.12.2024, 13:57 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 346
Репутация: 109 ±
Замечаний: 0% ±

Хотел бы одним вызовом заполнить всю строку.
Добрый день. Для этой задачи макрос-функция (UDF) не подходит. Вы используете хорошо известную UDF для извлечения значения из закрытой книги, но это только для одной ячейки из которой вызывается эта функция. Значения других ячеек UDF менять не могут. Если хотите сделать "одним вызовом", то вместо UDF используйте макрос-процедуру.
P.S. В том источнике, где вы нашли эту функцию имеются примеры макросов для копирования диапазонов из закрытых книг. Правда у них есть один серьезный недостаток - они работают медленно. Удобнее и быстрее открыть файл, скопировать данные и закрыть его.
 
Ответить
Сообщение
Хотел бы одним вызовом заполнить всю строку.
Добрый день. Для этой задачи макрос-функция (UDF) не подходит. Вы используете хорошо известную UDF для извлечения значения из закрытой книги, но это только для одной ячейки из которой вызывается эта функция. Значения других ячеек UDF менять не могут. Если хотите сделать "одним вызовом", то вместо UDF используйте макрос-процедуру.
P.S. В том источнике, где вы нашли эту функцию имеются примеры макросов для копирования диапазонов из закрытых книг. Правда у них есть один серьезный недостаток - они работают медленно. Удобнее и быстрее открыть файл, скопировать данные и закрыть его.

Автор - i691198
Дата добавления - 01.12.2024 в 13:57
Hugo Дата: Воскресенье, 01.12.2024, 14:03 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация: 792 ±
Замечаний: 0% ±

365
в D1 прописал =Get_Value_From_Close_Book("F:\101006649.csv";"101006649")

да и (к сказанному выше) - csv это не файл экселя, открывается как повезёт, если работает всегда на одной машине и все файлы по шаблону может и можно применять, но надёжности 0


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщение
в D1 прописал =Get_Value_From_Close_Book("F:\101006649.csv";"101006649")

да и (к сказанному выше) - csv это не файл экселя, открывается как повезёт, если работает всегда на одной машине и все файлы по шаблону может и можно применять, но надёжности 0

Автор - Hugo
Дата добавления - 01.12.2024 в 14:03
novinky Дата: Воскресенье, 01.12.2024, 14:08 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

В том источнике, где вы нашли эту функцию имеются примеры макросов для копирования диапазонов из закрытых книг

Спасибо Большое, не знал.
Пробовал через функцию вызвать код в Sub для заполнения нескольких ячеек, у меня не получилось - так то же не получиться?
 
Ответить
Сообщение
В том источнике, где вы нашли эту функцию имеются примеры макросов для копирования диапазонов из закрытых книг

Спасибо Большое, не знал.
Пробовал через функцию вызвать код в Sub для заполнения нескольких ячеек, у меня не получилось - так то же не получиться?

Автор - novinky
Дата добавления - 01.12.2024 в 14:08
i691198 Дата: Воскресенье, 01.12.2024, 14:44 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 346
Репутация: 109 ±
Замечаний: 0% ±

так то же не получиться?
Нет, не получится. Почитайте об ограничениях и возможностях UDF, там прямо сказано о невозможности изменения значений в других ячейках, в том числе и при вызове процедур внутри функции. В интернете можно найти попытки обхода этого ограничения, но даже сами авторы говорят, что это очень ненадежно.
 
Ответить
Сообщение
так то же не получиться?
Нет, не получится. Почитайте об ограничениях и возможностях UDF, там прямо сказано о невозможности изменения значений в других ячейках, в том числе и при вызове процедур внутри функции. В интернете можно найти попытки обхода этого ограничения, но даже сами авторы говорят, что это очень ненадежно.

Автор - i691198
Дата добавления - 01.12.2024 в 14:44
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!