Модераторы: mihanik

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Макросы для Exel 
:(
    Опции темы
Tsinarski
Дата 10.6.2007, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



кто небудь может помочь со скриптом макроса ?
мне надо чтоб автоматический с одного Exel файла информация копировалась в другую
если не затруднит пожалусто ответте 

PM MAIL   Вверх
RockClimber
Дата 11.6.2007, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: 7
Всего: 15



Насколько автоматически? Если по одной простой команде пользователя (например, нажите кнопки), то просто:
Код

Workbooks("Книга1").Sheets("Лист1").Range("A1:D10").Copy Destination:=Workbooks("Книга2").Sheets("Лист2").Range("E1:H10")

Если совсем автоматически, то объясни, в какой момент должно происходить копирование...


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
mihanik
Дата 13.6.2007, 07:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 9
Всего: 109



Модератор: 
Tsinarski, не надо плодить темы!!!
Если вдруг случилось так, что создал тему не там, то обратись к модерам или комодерам...
 smile 


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Tsinarski
Дата 13.6.2007, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



Мне нужно сделать маленкий макрос который будет с нескольких файлов Exel копировать данные в один, 
то-есть у меня проблемма такая много Exel файлов у которых по 2 листа преходется соберать всё в один Exel фаил с помощью копирования (мне это приходется делть часто, exel фаилы вынемаются из базы данных автоматический "ведётся статистика" у етих файлов постоянно одинаковые имена "у всех разные")
мне хочется найти путь патом я сам создаду такой документ (нужен скрипт который будет копировать информацию с одного Exel файла в другой) если можите помогите плиз ато у меня очень много времени занемает копирование (в vb немного я тоже баловатся умею но я не програмист и не смог до токого скрипта додуматся)

Добавлено через 9 минут и 26 секунд
ребята плиз не удоляйте тему мне уже ктото решил помочь дайте моей теме реализоватся ведь людям exelочень часто нужен и многие интересуются с темами макросав
PM MAIL   Вверх
RockClimber
Дата 13.6.2007, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: 7
Всего: 15



У меня дома экселя нет, а на память я не помню. Делай так: в меню "сервис" находишь режим записи макроса, включаешь запись, потом кликаешь правой кнопкой на названии листа, выбираешь "Копировать/переместить", выбираешь книгу экселя, жмешь "ОК", потом останавливаешь запись макроса и смотришь, что он поназаписал. Потом делаешь так:
Код

Sub CopySheets()

Dim i as Long
Dim j as Long

for i =1 to Workbooks.Count
    if Workbooks(i).Name <> "Отчет" Then
        Workbooks(i).Activate
        for j=1 to Sheets.Count  
          ' сюда вставляешь функцию копирования листов из текущей книги в книгу "Отчет"

        Next j
    End If
Next i

End Sub


Эта незатейливая функция скопирует все листы из всех книг в книгу "Отчет". Если будут вопросы - пиши сюда.

P. S. И пиши грамотно, а то сообщения в почти "падонак-стайл" тяжело читаются и не всегда понятно, чего человек вообще хочет...

Это сообщение отредактировал(а) RockClimber - 13.6.2007, 23:37


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
Tsinarski
Дата 14.6.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



ребята спасибо за то что помогаите

скрипт который преслали он работаен но есть проблемма, после того как я сохраняю фаил он перестоёт работать
Workbooks("Книга1").Sheets("Лист1").Range("A1:D10").Copy Destination:=Workbooks("Книга2").Sheets("Лист2").Range("E1:H10")

PM MAIL   Вверх
RockClimber
Дата 14.6.2007, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: 7
Всего: 15



А подробнее? С каким именем сохраняешь? После сохранения закрываешь? Если хотя бы один ответ будет "да", то так и должно быть...


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
Tsinarski
Дата 15.6.2007, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



И так  
Workbooks("Книга1").Sheets("Лист1").Range("A1:D10").Copy Destination:=Workbooks("Книга2").Sheets("Лист2").Range("E1:H10")

тут ясно видны имена фаилов, то-есть по умолчанию Книга1, Книга2 вот я  сохраняю эти фаилы по умолчанию с этими же именами, просто программа перестаёт работать после сохронения, не понятно в чём дело до сохронение всё работает как по маслу.

Стрнно всё это выглядет, я даже подумал а вдруг до сохронение всё работает в буфере а после сохронение программа наченает требовать конкретные маршруты етих файлов типо C:\Documents and Settings\dnanobashvili\Desktop\1, но если да, то как указывать и куда встовлять путь маршрута?
PM MAIL   Вверх
dionisiu
Дата 16.6.2007, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 13.5.2006
Где: Крым

Репутация: 1
Всего: 2



Стоп.
Цитата(Tsinarski @  14.6.2007,  12:27 Найти цитируемый пост)
скрипт который преслали он работаен но есть проблемма, после того как я сохраняю фаил он перестоёт работать
Workbooks("Книга1").Sheets("Лист1").Range("A1:D10").Copy Destination:=Workbooks("Книга2").Sheets("Лист2").Range("E1:H10")

тут может быть такая фишка: в "Книга1" в указаном диапазоне могут быть ссылки на лист2, например, или ссылки за пределы диапазона. Тогда эксель при переносе в новую книгу пропишет (перепишет) ссылки из Книга2 на Книга1, и открыв книгу2 будет требовать обновления ссылок.

Вас не затруднит взять пару книг с исходными данными, а также книгу, куда это вставлять, удалить из них персональную информацию (типа имена, названия, адреса) - оставить только цифры и заменяющие персональные данные спецслова (Вместо клиентов Иванов, Петров, Сидоров вставить Клиент1, Клиент2, Клиент3, вместо названий товаров типа "Печенье топлёное", "Консерва Тунец", "Водка Крепкая" ввести Товар1, Товар2, Товар3 и так далее...) и выложить на форум в архиве (тут можно до 120к за-раз приложить) с инструкцией: что, из какой книги, с какого листа, при каких условиях и в какую ячейку отчёта вставлять.

по поводу имён файлов исходников: я так понимаю, что есть набор файлов (Прайс1, Список2, Маршрут3...), который генерируется в Акцесе, но каждый из этих файлов всегда сохраняется именно с таким именем, и не зависит от прочих условий (типа Прайс2007_06_16 сегодня, а завтра Прайс2007_06_16). Если имена файлов и места их "хранения" стабильны, то можно и вовсе обойтись без макросов, через функции СУММЕСЛИ() - у меня такое работает на нескольких отчётах (в прайс загоняются остатки из 1С, в отчёт для центрального офиса - данные о продажах, при этом никаких макросов, уже два года работает)



RockClimber, 

Цитата(RockClimber @  13.6.2007,  23:35 Найти цитируемый пост)
P. S. И пиши грамотно, а то сообщения в почти "падонак-стайл" тяжело читаются и не всегда понятно, чего человек вообще хочет...


просто для автора русский язык, видимо, не является родным. Кстати, от "падонкаф" автор выгодно отличается отсутствием грубости
Цитата(Tsinarski @  15.6.2007,  08:43 Найти цитируемый пост)
dnanobashvili


PM MAIL ICQ   Вверх
Tsinarski
Дата 16.6.2007, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



Это фаил автоматического получения из базы
у него 2 листа
мне приходится сначало копировать 1 лист встовлять в фаил в другой фаил обшая статистика патом второй лист и опять встовлять чтоб вся информация собералась в одном фаиле, таких фаилов несколько сотен согласитесть очень трудоёмкая работа и эта ерунда отнемает уймо времени просто на работе требуют чтоб именно так и делалась обшая статистика (работаю я в сотовой компание которая в процесе стройки, виду мониторинг базавых станции и вконце недели преходится проверять нагрузки на секторы). Живу в Грузие меня Гиоргий зовут спасибо за поддержку ребята!

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  statistika.rar 9,51 Kb
PM MAIL   Вверх
Tsinarski
Дата 16.6.2007, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



1 копирую из получаемого файла

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  1.jpg 81,65 Kb
PM MAIL   Вверх
Tsinarski
Дата 16.6.2007, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



2 встовляю в фаил обшая статистика

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  2.jpg 95,81 Kb
PM MAIL   Вверх
Tsinarski
Дата 16.6.2007, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



3 опять копирую с принятого файла диаграму уже со второго листа и втовляю в обшуб статистику

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  3.jpg 86,88 Kb
PM MAIL   Вверх
dionisiu
Дата 19.6.2007, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 13.5.2006
Где: Крым

Репутация: 1
Всего: 2



Как я и говорил - копирование в новую книгу загоняет связи, а не данные. Причём связи тянутся не по формулам, а за диаграммами.
Два варианта: Или рисовать диаграмму макросом и тянуть только листы с данными, или в статистике единожды нарисовать диаграмму, привязав её к некой таблице, где прописать ссылки на соответствуюшие файлы (можно и через кнопку, куда повесить последовательное открытие нужных файлов, выборку числовых данных с первого листа и закрытие исходников).


Из Вашего описания последовательности работ и файлов исходных данных следует примерно следующее:
1. Есть некая база на акцессе, которая каким-то образом собирает данные, при этом способна генерировать файлы с таблицей и диаграмой, причём имя файла стабильно, однако, одной точке снятия данных соответствует несколько файлов, которые нужно различать по ключевому слову seqtor и номеру за ним
(парадокс - а зачем делать внешний обработчик, если можно сделать в самом акцессе лишнюю кнопку по выводу общей статистики?)

2. Сгенерированные файлы лежат в некоторой стабильно определённой папке (видимо, в документах текущего пользователя) (судя по приведённому пути)
3. За неделю файлов собирается очень много. Тут не понятно: вроде в файле перечислены дни недели, в выложенном примере даны файлы одной точки по трём секторам (насколько мне хватает познаний в сотовой связи - секторов должно быть 4), а в статитстике сбор по 4-м точкам (или это урезанная версия для примера?)
4. Данные из файла точки, сектора1 нужно расположить вверху соответствующего листа статистики, из сектора 2 - немного ниже, из сектора 3 - ещё ниже и так далее..., при этом формат диаграммы остаётся тем же.

я правильно понял Вашу задачу?
PM MAIL ICQ   Вверх
Tsinarski
Дата 20.6.2007, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 10.6.2007

Репутация: нет
Всего: нет



dionisiu, не обязательно 4 сектора  обычно ставят 3 сектора на каждой базавой станцые но это не стандарт иногда устонавливают 2 или 4 в зависимости от вероятной нагрузки на базавую станцию в радиусе его деяствия, эти фаилы не берутся с ексел там стоит специальная программа  солярис которая постовляется с апаратурог алкател, она при запросе выдают данные нагрузки заданого интервала времени на секторы с именами бызовых стании где устоновлен сектор к примеру bumajnajafabrika-sector1.xls, bumajnajafabrika-sector2.xls в ексел фаилах для каждого сектора 1 фаил (ну то что я преслал это был пример я там вручную эти фаилы сделал наверно неправильно) просто для меня главное соорудить скрипт для ексал для сбора всех етих фаилов в 1 ексел фаил, понемаю наверно это какимто мазохизмом кажетсяsmile если честно мне тожеsmile но начальство требует чтоб было всё собраноо  
PM MAIL   Вверх
dionisiu
Дата 22.6.2007, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 13.5.2006
Где: Крым

Репутация: 1
Всего: 2



Вроде стало понятней. Вижу два варианта:
1. (ПРОСТЕЙШИЙ): сделать один раз файл "Общая статистика", в нём листы на каждую базовую станцию, на каждом листе в соответствии с количеством секторов сделать таблицы и там же нарисовать соответствующие диаграммы. Далее, при открытых файлах исходных данных входим в нужные ячейки таблицы, жмём "равно", переходим к нужному файлу станции (с учётом сектора), там ставим курсор на такую же ячейку таблицы, жмём "Enter" - получили связь с файлом. Так делаем для каждой ячейки каждой таблицы каждого файла. Далее, идём Сервис/Параметры/вкладка Правка. Здесь удаляем галочку с пункта "Запрашивать об обновлении автоматических связей". Потом идём меню Правка/Связи, жмём слева внизу кнопку "Запрос на обновление связи", выбираем "Не задавать вопрос и обновлять связи".
Сохраняем книгу.
Примечание: Книги исходных файлов должны иметь стабильные имена и строго определённый путь хранения. То есть, если есть необходимость накапливать информацию для архива, то при условии хранения файлов в каталоге : C:\Documents and Settings\dnanobashvili\Desktop\1, там нужно создать каталог "Архив", куда перемещать устаревшие файлы, а новые ложить именно по этому пути.
Дальнейшая работа будет заключаться для Вас в следующем: Запросить из оборудования файлы, переместить их в нужный каталог (предварительно, при необходимости, заархивировав старые), открыть их все одновременно, потом открыть файл "Общая статистика", выбрать Правка/Связи/Обновить, книгу сохранить, исходники закрыть.


2.(СЛОЖНЕЕ): сделать то же самое, но с включённым макрорекордером, однако после того, как из ячейки таблицы Статистики будет создана ссылка на файл исходников, нужно будет скопировать эту ячейку и вставить туда же, но через СпецВставку/Значения - это разорвёт связь с книгой. Так же при работе этого макроса будет необязательно строгое соответствие маршрута хранения данных, важно, чтоб при его запуске были открыты исходники, и они имели стабильные имена.
После прохода по всем книгам всех станций и всех секторов, можно остановить макрорекордер и почистить его код на предмет удаления явно лишних деталей (он записывает подряд даже смещения окна просмотра, типа так:

Код

ActiveWindow.SmallScroll ToRight:=7
    Range("O9").Select
    ActiveWindow.SmallScroll ToRight:=10
    Range("X16").Select
    ActiveWindow.SmallScroll Down:=16
    Range("X32").Select
    ActiveWindow.SmallScroll ToRight:=-17
    Range("G32").Select
    ActiveWindow.SmallScroll Down:=8
 
Вот как раз эти скроллы и нужно удалить, так как они приводят к излишней "иллюминации" процесса и дико тормозят работу.

3. (ЕЩЕ СЛОЖНЕЕ) В файле "Общаяя статистика" завести лист с перечнем базовых станций, количеством секторов на них, именами файлов (первая часть имени, без ключевого слова seqtor), каталогом хранения.
Далее, на этом же листе забабахать кнопку, в её коде написать процедуру со следующей логикой: 
1. Прочитать с листа и загрузить в массив имена базовых станций, количество секторов на каждой, названия файлов.
2. прочитать с листа путь к каталогу
3. перейти в каталог
4. прочитать содержимое каталога, сравнить имена файлов со списком, просчитать количество секторов: При нехватке файлов выдать предупреждение о невозможности работы (если не сформирован файл по третьему сектору БумажнойФабрики, то работать невозможно), при избытке файлов выдать предупреждение, что данных слишком много (вот поставили Вы новую станцию, а в список внести забыли, или у старой станции новый сектор добавился).
5. При отсутствии файлов прекратить работу, при избытке прекратить работу (каталог желательно держать чистым от посторонней информации), при совпадении количества продолжить работу.
6. последовательно открыть все файлы.
7. проверить в "Общей Статистике" существование листов с именами станций:Если есть - удалить
8. Создать листы с именами базовых станций.
9. перенести данные с листов исходников (по конкретной базовой станции по секторам в порядке очереди) на соответствующий лист (можно любой вариант: от прямого копирования области до по-ячеечного переноса значений)
10 нарисовать диаграммы (можно потренироваться в макрорекордере)
11. последовательно закрыть все книги, общую статистику сохранить.
PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.