Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2011, 18:45   #1
united11
 
Регистрация: 14.07.2011
Сообщений: 6
По умолчанию как проверить сущестуют ли файлы xls с известными именами в папке и произвести изменения в них?

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

Ситуация такая: есть файл "отчет" по дням, в нем листы с названиями дней раб недели, 01.07 к примеру. на каждый лист заносится информация из xls файлов, которые лежат в папках обозванных как листы файла "отчет". Названия файлов известы, их около ста

мне необходимо сделать, чтобы осуществлялась проверка существования файла с заданным именем в папке, если файл (допустим "МДМ.xls") существует, то в него заносится диапазон ячеек из файла "ЛИСТ1", затем в нем выделяется диапазон ячеек, копируется и заносится Специальной вставкой в файл "отчет" на лист с соответствующей датой в яцейку напротив имени файла ("МДМ.xls"). после этого все файлы закрыть и сохранить изменения

можно ли такое сделать? заранее огромнейшее спасибо!!!
united11 вне форума Ответить с цитированием
Старый 14.07.2011, 18:57   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
можно ли такое сделать?
Да.
Макрос - и всё будет выполняться за несколько секунд нажатием одной кнопки.

Цитата:
заранее огромнейшее спасибо!!!
рано благодарите - чтобы сделать такой макрос, нужно иметь в наличии все эти файлы ("отчёт" + несколько обрабатываемых файлов)

Ну и желательно, чтобы вы на примере показали, что и куда должно копироваться.
EducatedFool вне форума Ответить с цитированием
Старый 14.07.2011, 19:28   #3
united11
 
Регистрация: 14.07.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
чтобы сделать такой макрос, нужно иметь в наличии все эти файлы ("отчёт" + несколько обрабатываемых файлов)

Ну и желательно, чтобы вы на примере показали, что и куда должно копироваться.
Хорошо, завтра принесу с работы файлы, выложу и напишу последовательность операций и их суть.
Спасибо за отклик!!!
united11 вне форума Ответить с цитированием
Старый 15.07.2011, 19:35   #4
united11
 
Регистрация: 14.07.2011
Сообщений: 6
По умолчанию

EducatedFool, здравствуйте!!!

С работы файлы забрать не возможно, я вот накидала пример
вот ссылка

http://ifile.it/wd6ytfi

Суть в следующем

в файле Лист Реквезит нужно скопировать выделенный желтым диапазон ячеек, затем проверить существуют ли файлы xls в папке "Детализация" из папки 01 с Именами Ивано, Петров, Сидоров, Гагарин (на деле их намного больше но число наименований одинаковое каждый день), если файлы существуют, то открыть их, вствить копированный диапазон ячеек во все файлы, сохранить их.

Затем в файлах в фапке "Детализация" проверить если какая-нибудь ячейка из 4х спрва от слова итого пуста (выделино красным в примере), то записать в нее цифру 0.

Потом выделить в каждом файле диапазон из 4х ячеек справа от слова Итого (в примере обозначены жирным прямоугольником), копировать его и вставить в Файл Отчет в нужный день в ячейкусправа от именем файла Специальной Вставкой, все файлы из папки Детализация закрыть, сохранить файл Отчет, но не закрывать его
и так для каждого дня

вот . можно ли такой макрос сделать?
united11 вне форума Ответить с цитированием
Старый 16.07.2011, 11:55   #5
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от united11 Посмотреть сообщение
EducatedFool, здравствуйте!!!

С работы файлы забрать не возможно, я вот накидала пример
вот ссылка

http://ifile.it/wd6ytfi

Суть в следующем

в файле Лист Реквезит нужно скопировать выделенный желтым диапазон ячеек, затем проверить существуют ли файлы xls в папке "Детализация" из папки 01 с Именами Ивано, Петров, Сидоров, Гагарин (на деле их намного больше но число наименований одинаковое каждый день), если файлы существуют, то открыть их, вствить копированный диапазон ячеек во все файлы, сохранить их.

Затем в файлах в фапке "Детализация" проверить если какая-нибудь ячейка из 4х спрва от слова итого пуста (выделино красным в примере), то записать в нее цифру 0.

Потом выделить в каждом файле диапазон из 4х ячеек справа от слова Итого (в примере обозначены жирным прямоугольником), копировать его и вставить в Файл Отчет в нужный день в ячейкусправа от именем файла Специальной Вставкой, все файлы из папки Детализация закрыть, сохранить файл Отчет, но не закрывать его
и так для каждого дня

вот . можно ли такой макрос сделать?
Да........ и кто такое только придумал
Вам в пору задуматься о правильной организации хранения и сбора информации.
С уважением Дмитрий.
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 16.07.2011, 14:06   #6
united11
 
Регистрация: 14.07.2011
Сообщений: 6
По умолчанию

Цитата:
Да........ и кто такое только придумал
Вам в пору задуматься о правильной организации хранения и сбора информации.
С уважением Дмитрий.
да саму это всё угнетает, не работа, а копипастинг...
но что я могу сделать, я не могу изменить ничего в ходе организации процесса организации, обработки, хранения информации...

Если кто может помочь с макросом, будет просто здорово, я вот начала разбираться, но могу только очень простые операции сделать
united11 вне форума Ответить с цитированием
Старый 16.07.2011, 14:38   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

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

Последний раз редактировалось IgorGO; 16.07.2011 в 14:41.
IgorGO вне форума Ответить с цитированием
Старый 16.07.2011, 16:10   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Сделать-то макрос не проблема.
Вот только дальше сложнее будет - если сейчас не заняться приведением данных в нормальный вид, вы только и будете делать, что ежедневно изобретать новые макросы для сбора и обработки данных.

А если сразу потребовать от начальства пересмотра формата хранения данных - то даже макросов никаких не надо будет, хватит простейшей сводной таблицы.
EducatedFool вне форума Ответить с цитированием
Старый 16.07.2011, 16:44   #9
united11
 
Регистрация: 14.07.2011
Сообщений: 6
По умолчанию

EducatedFool, да кто меня слушать будет, я только месяц работаю и после универа, это нереально

нашла в инете макрос для выборки файлов xls из папки и формирования названий и путей к файлам в новую книгу, немного изменила, но он не работае, подскажите где ошибка. пожалуйста?

Sub Макрос1()
Dim coll As Collection, ПутьКПапке As String
ПутьКПапке = CreateObject("WScript.Shell").Speci alFolders("C:\Documents and Settings\ССВ\Рабочий стол\Январь\Детализация\01")
Set coll = FilenamesCollection(ПутьКПапке, ".xls", 1)

Application.ScreenUpdating = False
Dim sh As Worksheet: Set sh = Workbooks.Add.Worksheets(1)
With sh.Range("a1").Resize(, 3)
.Value = Array("№", "Имя файла", "Полный путь")
.Font.Bold = True: .Interior.ColorIndex = 17
End With
For i = 1 To coll.Count
sh.Range("a" & sh.Rows.Count).End(xlUp).Offset(1). Resize(, 3).Value = _
Array(i, Dir(coll(i)), coll(i))
DoEvents
Next
sh.Range("a:c").EntireColumn.AutoFi t
[a2].Activate: ActiveWindow.FreezePanes = True
End Sub

и вот написала макрос для отрытия документа, правда с прописанным именем, вставки в него диапазона ячеек из другого документа и сохранением

Sub Макрос2()
Workbooks.Open "C:\Documents and Settings\ССВ\Рабочий стол\лист н2.xls"
Range("C:H").Select
Selection.Copy
Workbooks.Open "C:\Documents and Settings\ССВ\Рабочий стол\выписка.xls"
Range("C:H").Select
ActiveSheet.Paste
ActiveWorkbook.Close SaveChanges:=True
End Sub

можно ли, объеденить данные макросы чтобы второй макрос брал пути к файлам из новой книги и втавлял в них диапазон ячеек и сохранял?

мне бы хоть часть этого безобразия автоматизировать, а то вообще невозможно, я бы уволилась, но без опыта работу не найти, так что придется терпеть пока
united11 вне форума Ответить с цитированием
Старый 16.07.2011, 16:48   #10
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
да кто меня слушать будет, я только месяц работаю и после универа, это нереально
Еще как реально.
Покажите начальству эту тему. Может, хоть к нам прислушаются.

Цитата:
мне бы хоть часть этого безобразия автоматизировать, а то вообще невозможно
сейчас накидаю пример макроса
подождите немного
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как открыть файлы в папке по очерёдно Mrbober Общие вопросы C/C++ 21 26.02.2011 23:16
Открытие всех файлов xls в папке Milo4ka_Lucy Microsoft Office Excel 17 28.09.2010 14:50
Как найти все открытые „xls“ файлы? roplius Microsoft Office Excel 2 03.02.2010 09:55
Как найти все файлы в папке? blackstersl Общие вопросы Delphi 3 24.06.2009 16:52
Как проверить наличие в конкретной папке DLL, а потом на вход каждой подать массив байт,и на выходе тоже. Sanches_Ramires Общие вопросы .NET 1 02.02.2009 15:02