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

 

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

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

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


В ячейках D2:N2 прописал
=Get_Value_From_Close_Book("F:\101006649.csv";"101006649";"J2")
, меняю только J2 до J12 с шагом 1.
В следующей строке с D3 по N3 меняется только название файла источника, аналогично в последующих строках.

Могу получить номер строки методом NRow = Application.ThisCell.Row
Хотел бы одним вызовом заполнить всю строку.
Пробовал разные методы

objCloseBook.Sheets(sWb).Range("J2:J12").Copy Destination:=vData.Range("D2:N2")


Range("J2:J12").Copy Destination:=Range("D" & RowNum & ":N" & RowNum)


Не получается, помогите пожалуйста.
 
Ответить
Сообщение[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 = vDataEnd 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 & ":Ч" & RowNum)
[/vba]
Не получается, помогите пожалуйста.

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

Excel 2010

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



 
Ответить
Сообщение[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% ±

Цитата doober, 01.12.2024 в 10:59, в сообщении № 2 ( писал(а)):
vData.Range("D2:N2") = Application.Transpose(objCloseBook.Sheets(sWb).Range("J2:J12"))

Спасибо, попробовал

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"))
...


в D1 прописал =Get_Value_From_Close_Book("F:\101006649.csv";"101006649")
Но данных нет, в ячейке только [#ЗНАЧ!] при наведении (<!>Значение, используемое в формуле, имеет неправильный тип данных)


Сообщение отредактировал novinky - Воскресенье, 01.12.2024, 13:07
 
Ответить
Сообщение
Цитата doober, 01.12.2024 в 10:59, в сообщении № 2 ( писал(а)):
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
Группа: Друзья
Ранг: Ветеран
Сообщений: 993
Репутация: 345 ±
Замечаний: 0% ±

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


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

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

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

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

365
Цитата novinky, 01.12.2024 в 13:03, в сообщении № 3 ( писал(а)):
в D1 прописал =Get_Value_From_Close_Book("F:\101006649.csv";"101006649")

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


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщение
Цитата novinky, 01.12.2024 в 13:03, в сообщении № 3 ( писал(а)):
в 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% ±

Цитата i691198, 01.12.2024 в 13:57, в сообщении № 5 ( писал(а)):
В том источнике, где вы нашли эту функцию имеются примеры макросов для копирования диапазонов из закрытых книг

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

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

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

2016
Цитата novinky, 01.12.2024 в 14:08, в сообщении № 7 ( писал(а)):
так то же не получиться?
Нет, не получится. Почитайте об ограничениях и возможностях UDF, там прямо сказано о невозможности изменения значений в других ячейках, в том числе и при вызове процедур внутри функции. В интернете можно найти попытки обхода этого ограничения, но даже сами авторы говорят, что это очень ненадежно.
 
Ответить
Сообщение
Цитата novinky, 01.12.2024 в 14:08, в сообщении № 7 ( писал(а)):
так то же не получиться?
Нет, не получится. Почитайте об ограничениях и возможностях UDF, там прямо сказано о невозможности изменения значений в других ячейках, в том числе и при вызове процедур внутри функции. В интернете можно найти попытки обхода этого ограничения, но даже сами авторы говорят, что это очень ненадежно.

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

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