![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 23.12.2008
Сообщений: 5
|
![]()
Пишу макрос (осваиваю VBA с нуля) - как задать условие перехода на соседнюю ячейку в Еxcel - вправо (влево чтоб знать потом).
1) Хочу организовать цикл по формированию сводной таблицы из нескольких файлов. Просто сдвиг вправо нужен для перемещения с E2 на F2 и т.д., в этих ячейках путь для загрузки следующего файла. Конец цикла на ячейке с пустым значением. И можно ли не открывая файл данных командой Workbooks.Open FileName: взять диапазон данных из нужного столбца и все. Или только открыл -взял-закрыл. 2) Также хочу убить нолевые значения в загружаемом диапазоне значением "" А ситуация грубо выглядит вот так: Sub Opitnaja_zagruzka() ' ' Opitnaja_zagruzka Макрос ' Макрос записан 09.01.2009 (User) ' Workbooks.Open FileName:="H:\финансы\БС\2009\2009 01 adm.xls", Password:=",ci" - образец файла загрузки в ячейке Е2 ' Загружается диапазон данных (по столбцу) из первого файла Workbooks.Open FileName:=Range("E2"), Password:="abc" Range("J2:J83").Select Selection.Copy Windows("Расходы БС 2009.xls").Activate Range("E6").Select ActiveSheet.Paste Link:=True ' Загружается диапазон из следующего файла - но эти строчки хочу убить циклом для этого и нужно смещение на ячейку вправо: с Е2 на F2 Workbooks.Open FileName:=Range("F2"), Password:="abc" Range("J2:J83").Select Selection.Copy Windows("Расходы БС 2009.xls").Activate Range("F6").Select ActiveSheet.Paste Link:=True End Sub |
![]() |
![]() |
#2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
к конкретной ячейке активного листа можно обратиться как Cells(R, C), где R - номер ряда (строки), C - номер колонки (столбца)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
#3 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Попробуйте такой вариант:
Код:
Аналогичный код можно найти в этом посте. Вообще, тема копирования из файла в файл в этом разделе форума встречается очень часто. Воспользуйтесь поиском. |
![]() |
![]() |
#4 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]() Цитата:
Об этом говорилось в этой и этой теме. Но вряд ли такое возможно с запароленными файлами... Впрочем, если файлов немного, разница в скорости будет нет так заметна. В любом случае, перед обращением к файлу не помешает проверить его существование (вдруг в ячейку с именем файла вкралась ошибка) Без проверки ошибок макрос из предыдущего поста можно было бы сократить до такого варианта: Код:
|
|
![]() |
![]() |
#5 | ||
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]() Цитата:
Получить данные из файла не открывая его можно двумя способами: либо воспользоваться макросом XLM , либо создать ссылку, получить данные и удалить ссылку. Посмотрите пример второго варианта. Пусть требуется из файла "Test.xls", расположенного в папке "D:\Temp", из листа "Лист1" получить данные диапазона "A1:A40". Можно воспользоваться кодом: Код:
P.S Цитата:
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 11.01.2009 в 06:45. |
||
![]() |
![]() |
#6 |
Регистрация: 23.12.2008
Сообщений: 5
|
![]()
Добрый вечер, SAS888.
Вот визуальное представление файлов по моему вопросу (прикреплено в 2 файлах). В сводный файл требуется собрать все диапазоны данных (план или факт) за январь (по другим месяцам) по всем подразделениям компании . Работа у меня двигается, но крайне медленно. Не все операторы и функции VBA понятны (но я их обязательно разберу). А интерес смоделировать экономическую модель предприятия на основе отчетных данных подразделений и формирование плановых показателей для начала на квартал. Попробовал вашу прогу. Работает и смысл очень хороший. Пока вставляет столбец данных по этому же номеру столбца с той же ячейки в сводный файл, а нужна очередность столбцов согласно очередности файлов загрузки заданной по строке с позиции Е2 в сводном файле. Как задать диапазон для вставки в нужное место? Оператор пока жестко привязан - как взял так и скопировал. Файл открывается с паролем Password:=",ci". Можно ведь по месту открытия (пути) 1 файла для загрузки остальные забирать из этого же каталога, согласно задаваемой маски "ГГГГ ММ " & "маска" & ".xls" по строке начиная с позиции Е3, например "2009 01 adm.xls" и далее. А то у меня 14 подразделений и вручную делать это долго. Еще раз спасибо за ваш предыдущий ответ. |
![]() |
![]() |
#7 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
1. В предложенном коде диапазон, предназначенный для получения данных из файла-источника задается строкой
Код:
Код:
Код:
3. Для более детального ответа по другим вопросам, прикрепите вложение с файлами-источниками (хотя бы два в несколько строк) и результирующим файлом в котором приведен пример того, как Вам требуется представить результат.
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 15.01.2009 в 06:33. |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как задать команду загрузки файлов данных на кнопку если каталог и имена файлов известны??? | Andbuba | Microsoft Office Excel | 2 | 28.12.2008 17:28 |
Помогите исправить задачу. Заранее спасибо | Liver | Помощь студентам | 1 | 20.12.2008 09:47 |
помогите пожалуйста решить 2 задачи,заранее спасибо | Анютка...... | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 24.11.2008 11:21 |
Опять Паскаль...Тема множества...Заранее огромное спасибо!!! | Miledi | Помощь студентам | 1 | 20.04.2008 16:34 |