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

Вход

Регистрация

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

 

= Мир MS Excel/сбор данных из книги - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » сбор данных из книги (Макросы/Sub)
сбор данных из книги
sashok60 Дата: Среда, 06.08.2014, 15:31 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день коллеги!
Нужна ваша помощь в написании макроса.
Суть такова, есть эталонный шаблон в который нужно перенести данные из другой книги в определенные столбцы шаблона, трудность заключается в том что эти книги очень разные.
файлы прилагаю.
очень нужна ваша помощь.
заранее спасибо
К сообщению приложен файл: 8953313.xlsm (22.4 Kb) · 1771943.xls (61.0 Kb)
 
Ответить
СообщениеДобрый день коллеги!
Нужна ваша помощь в написании макроса.
Суть такова, есть эталонный шаблон в который нужно перенести данные из другой книги в определенные столбцы шаблона, трудность заключается в том что эти книги очень разные.
файлы прилагаю.
очень нужна ваша помощь.
заранее спасибо

Автор - sashok60
Дата добавления - 06.08.2014 в 15:31
sashok60 Дата: Среда, 06.08.2014, 15:32 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
и еще несколько файлов
К сообщению приложен файл: 7251097.xls (29.0 Kb) · 0878994.xlsx (15.1 Kb)
 
Ответить
Сообщениеи еще несколько файлов

Автор - sashok60
Дата добавления - 06.08.2014 в 15:32
Rioran Дата: Среда, 06.08.2014, 16:05 | Сообщение № 3
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
sashok60, здравствуйте

Для решения данного вопроса потребуются следующие навыки:
1). Открытие файла макросом.
2). Цикл для перебора файлов.
3). Цикл для перебора строк.
4). Владение оператором ветвления (if или select case), с помощью которого программа будет работать по-разному в зависимости от структуры таблиц файла. Для зацепки можно использовать столбец В, в котором во всех таблицах заголовки внутренних таблиц отличаются.

В идеале, необходимо привести все файлы к единообразию, к правильному табличному виду.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщениеsashok60, здравствуйте

Для решения данного вопроса потребуются следующие навыки:
1). Открытие файла макросом.
2). Цикл для перебора файлов.
3). Цикл для перебора строк.
4). Владение оператором ветвления (if или select case), с помощью которого программа будет работать по-разному в зависимости от структуры таблиц файла. Для зацепки можно использовать столбец В, в котором во всех таблицах заголовки внутренних таблиц отличаются.

В идеале, необходимо привести все файлы к единообразию, к правильному табличному виду.

Автор - Rioran
Дата добавления - 06.08.2014 в 16:05
RAN Дата: Среда, 06.08.2014, 16:21 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Раскидано уже по 3 форумам


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеРаскидано уже по 3 форумам

Автор - RAN
Дата добавления - 06.08.2014 в 16:21
sashok60 Дата: Среда, 06.08.2014, 16:21 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
1.открытие файла есть.
2.перебирать файлы не обязательно можно по одному открывать
3. не пойму с чего начать, подскажите или дайте пример
4. это знакомо но не понимаю как это все завязать, таблицы на столько разные.

привести к единообразному виду в шаблоне вот конечная цель макроса
 
Ответить
Сообщение1.открытие файла есть.
2.перебирать файлы не обязательно можно по одному открывать
3. не пойму с чего начать, подскажите или дайте пример
4. это знакомо но не понимаю как это все завязать, таблицы на столько разные.

привести к единообразному виду в шаблоне вот конечная цель макроса

Автор - sashok60
Дата добавления - 06.08.2014 в 16:21
sashok60 Дата: Среда, 06.08.2014, 16:27 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Раскидано уже по 3 форумам


какие из них живые?
 
Ответить
Сообщение
Раскидано уже по 3 форумам


какие из них живые?

Автор - sashok60
Дата добавления - 06.08.2014 в 16:27
Rioran Дата: Среда, 06.08.2014, 20:36 | Сообщение № 7
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
sashok60,

3). В общих чертах с циклами можно ознакомиться здесь. Для перебора строк Вам больше подойдёт цикл For ... Next, который будет копать от указанной строки до нижнего предела таблицы. Гуглу хорошо подойдут запросы "VBA Excel перебор строк циклом" и "VBA Excel поиск последней строки таблицы".
4). Разные? Да. Лично я бы при открытии любой из трёх Ваших таблиц сказал бы макросу: "Дружище, вот тебе три стринга: "Дата счета", "Дата" и "Дата талона". Кого первым найдёшь, двигаясь от первой строки вниз страницы вдоль 2-го столбца, того код и используй для получения данных".

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

Если у Вас несколько типов файлов. Например, три. И каждого из типов файлов в большом количестве - то, возможно, для начала Вам будет удобнее написать по отдельному макросу под каждый отдельный тип файла. Каждому типу файла свою отдельную папку и макрос, который перебирает всё, что только можно в заданной папке.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщениеsashok60,

3). В общих чертах с циклами можно ознакомиться здесь. Для перебора строк Вам больше подойдёт цикл For ... Next, который будет копать от указанной строки до нижнего предела таблицы. Гуглу хорошо подойдут запросы "VBA Excel перебор строк циклом" и "VBA Excel поиск последней строки таблицы".
4). Разные? Да. Лично я бы при открытии любой из трёх Ваших таблиц сказал бы макросу: "Дружище, вот тебе три стринга: "Дата счета", "Дата" и "Дата талона". Кого первым найдёшь, двигаясь от первой строки вниз страницы вдоль 2-го столбца, того код и используй для получения данных".

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

Если у Вас несколько типов файлов. Например, три. И каждого из типов файлов в большом количестве - то, возможно, для начала Вам будет удобнее написать по отдельному макросу под каждый отдельный тип файла. Каждому типу файла свою отдельную папку и макрос, который перебирает всё, что только можно в заданной папке.

Автор - Rioran
Дата добавления - 06.08.2014 в 20:36
RAN Дата: Среда, 06.08.2014, 22:41 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Был в платной клинике, пытался сказать спасибо заранее. Не взяли.
А давайте подойдем к проблеме, как ее решают платные клиники?
Врач. Вы знаете, и я знаю, что вам и мне это не надо. Но 1000 за вход в кабинет отдайте.
Пригласим медсестру.
Медсестра - процедура 5 минут, 350 рублей.
Ваш макрос часа по 4 на 1 файл.
Ну, и конечно, каждый файл посмотреть нужно. Как без этого?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеБыл в платной клинике, пытался сказать спасибо заранее. Не взяли.
А давайте подойдем к проблеме, как ее решают платные клиники?
Врач. Вы знаете, и я знаю, что вам и мне это не надо. Но 1000 за вход в кабинет отдайте.
Пригласим медсестру.
Медсестра - процедура 5 минут, 350 рублей.
Ваш макрос часа по 4 на 1 файл.
Ну, и конечно, каждый файл посмотреть нужно. Как без этого?

Автор - RAN
Дата добавления - 06.08.2014 в 22:41
sashok60 Дата: Среда, 06.08.2014, 22:59 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Был в платной клинике, пытался сказать спасибо заранее. Не взяли.
А давайте подойдем к проблеме, как ее решают платные клиники?
Врач. Вы знаете, и я знаю, что вам и мне это не надо. Но 1000 за вход в кабинет отдайте.
Пригласим медсестру.
Медсестра - процедура 5 минут, 350 рублей.
Ваш макрос часа по 4 на 1 файл.
Ну, и конечно, каждый файл посмотреть нужно. Как без этого?


ты заработать хочешь или помочь?
 
Ответить
Сообщение
Был в платной клинике, пытался сказать спасибо заранее. Не взяли.
А давайте подойдем к проблеме, как ее решают платные клиники?
Врач. Вы знаете, и я знаю, что вам и мне это не надо. Но 1000 за вход в кабинет отдайте.
Пригласим медсестру.
Медсестра - процедура 5 минут, 350 рублей.
Ваш макрос часа по 4 на 1 файл.
Ну, и конечно, каждый файл посмотреть нужно. Как без этого?


ты заработать хочешь или помочь?

Автор - sashok60
Дата добавления - 06.08.2014 в 22:59
RAN Дата: Среда, 06.08.2014, 23:11 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Да помочь я завсегда. Только понятие о помощи у нас разное.
Нужно было писать не
очень нужна ваша помощь.

а "очень хочу, чтобы вы за меня поработали".


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеДа помочь я завсегда. Только понятие о помощи у нас разное.
Нужно было писать не
очень нужна ваша помощь.

а "очень хочу, чтобы вы за меня поработали".

Автор - RAN
Дата добавления - 06.08.2014 в 23:11
sashok60 Дата: Четверг, 07.08.2014, 09:55 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013

а "очень хочу, чтобы вы за меня поработали".


вот Rioran почему то не стал писать как вы, а нормально попытался объяснить что к чему и с чего начать
 
Ответить
Сообщение

а "очень хочу, чтобы вы за меня поработали".


вот Rioran почему то не стал писать как вы, а нормально попытался объяснить что к чему и с чего начать

Автор - sashok60
Дата добавления - 07.08.2014 в 09:55
paramedic Дата: Четверг, 07.08.2014, 10:00 | Сообщение № 12
Группа: Проверенные
Ранг: Участник
Сообщений: 67
Репутация: 6 ±
Замечаний: 0% ±

Excel 2007
Что-то мне подсказывает, что требуемый отчет проще получить из медицинской системы, чем пытаться вручную связать разные отчеты из нее же.


Я не ламер - я честный чайник
 
Ответить
СообщениеЧто-то мне подсказывает, что требуемый отчет проще получить из медицинской системы, чем пытаться вручную связать разные отчеты из нее же.

Автор - paramedic
Дата добавления - 07.08.2014 в 10:00
sashok60 Дата: Четверг, 07.08.2014, 10:28 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Что-то мне подсказывает, что требуемый отчет проще получить из медицинской системы, чем пытаться вручную связать разные отчеты из нее же.


это не отчет, а шаблон для импорта в sql таблицу, для корректного импорта в таблицу sql, данные должны быть представлены в определенном виде как в шаблоне
 
Ответить
Сообщение
Что-то мне подсказывает, что требуемый отчет проще получить из медицинской системы, чем пытаться вручную связать разные отчеты из нее же.


это не отчет, а шаблон для импорта в sql таблицу, для корректного импорта в таблицу sql, данные должны быть представлены в определенном виде как в шаблоне

Автор - sashok60
Дата добавления - 07.08.2014 в 10:28
Rioran Дата: Четверг, 07.08.2014, 11:21 | Сообщение № 14
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
sashok60, излишне дублировать вопросы в теме и в ЛС =)

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

[vba]
Код
Sub Example()

'Объявляем переменную - счётчик.
Dim X As Long

'Проходим по ячейкам 2-го столбца до 100-й строки
For X = 1 To 100
     'Значение каждой ячейки проверяем
     Select Case Cells(X, 2).Value
         'В зависимости от значения выводим сообщение и выходим из макроса.
         Case "Дата счета"
             MsgBox "Это файл первого типа"
             Exit Sub
         Case "Дата"
             MsgBox "Это файл второго типа"
             Exit Sub
         Case "Дата талона"
             MsgBox "Это файл третьего типа"
             Exit Sub
     End Select
Next X

End Sub
[/vba]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщениеsashok60, излишне дублировать вопросы в теме и в ЛС =)

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

[vba]
Код
Sub Example()

'Объявляем переменную - счётчик.
Dim X As Long

'Проходим по ячейкам 2-го столбца до 100-й строки
For X = 1 To 100
     'Значение каждой ячейки проверяем
     Select Case Cells(X, 2).Value
         'В зависимости от значения выводим сообщение и выходим из макроса.
         Case "Дата счета"
             MsgBox "Это файл первого типа"
             Exit Sub
         Case "Дата"
             MsgBox "Это файл второго типа"
             Exit Sub
         Case "Дата талона"
             MsgBox "Это файл третьего типа"
             Exit Sub
     End Select
Next X

End Sub
[/vba]

Автор - Rioran
Дата добавления - 07.08.2014 в 11:21
paramedic Дата: Четверг, 07.08.2014, 11:38 | Сообщение № 15
Группа: Проверенные
Ранг: Участник
Сообщений: 67
Репутация: 6 ±
Замечаний: 0% ±

Excel 2007
это не отчет, а шаблон для импорта в sql таблицу, для корректного импорта в таблицу sql, данные должны быть представлены в определенном виде как в шаблоне

[offtop]Вы пытаетесь сделать колючую проволоку через скрещивания ежа с ужом. Если сидите на поддержке мед.системы, то задайте разрабам задачу на подготовку отчета по нужной форме и все.
Сам отчет настолько элементарен, что его (зная систему) можно сделать за 10 минут максимум. Это фактически один запрос к базе данных.
Еще лучше, если дадите разрабам формат обмена с другой системой и пусть они сделают экспорт. Это тоже элементарно. Зато никаких непоняток не будет гарантировано.[/offtop]


Я не ламер - я честный чайник
 
Ответить
Сообщение
это не отчет, а шаблон для импорта в sql таблицу, для корректного импорта в таблицу sql, данные должны быть представлены в определенном виде как в шаблоне

[offtop]Вы пытаетесь сделать колючую проволоку через скрещивания ежа с ужом. Если сидите на поддержке мед.системы, то задайте разрабам задачу на подготовку отчета по нужной форме и все.
Сам отчет настолько элементарен, что его (зная систему) можно сделать за 10 минут максимум. Это фактически один запрос к базе данных.
Еще лучше, если дадите разрабам формат обмена с другой системой и пусть они сделают экспорт. Это тоже элементарно. Зато никаких непоняток не будет гарантировано.[/offtop]

Автор - paramedic
Дата добавления - 07.08.2014 в 11:38
sashok60 Дата: Четверг, 07.08.2014, 11:56 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Оффтоп:
Вы пытаетесь сделать колючую проволоку через скрещивания ежа с ужом. Если сидите на поддержке мед.системы, то задайте разрабам задачу на подготовку отчета по нужной форме и все.
Сам отчет настолько элементарен, что его (зная систему) можно сделать за 10 минут максимум. Это фактически один запрос к базе данных.
Еще лучше, если дадите разрабам формат обмена с другой системой и пусть они сделают экспорт. Это тоже элементарно. Зато никаких непоняток не будет гарантировано.


все намного сложнее, на самом деле все эти файлы разные потому что их присылают разные клиники, у каждой клиники выгрузка происходит из разного ПО, я не могу их заставить присылать такие счета в удобном для нас виде.
 
Ответить
Сообщение
Оффтоп:
Вы пытаетесь сделать колючую проволоку через скрещивания ежа с ужом. Если сидите на поддержке мед.системы, то задайте разрабам задачу на подготовку отчета по нужной форме и все.
Сам отчет настолько элементарен, что его (зная систему) можно сделать за 10 минут максимум. Это фактически один запрос к базе данных.
Еще лучше, если дадите разрабам формат обмена с другой системой и пусть они сделают экспорт. Это тоже элементарно. Зато никаких непоняток не будет гарантировано.


все намного сложнее, на самом деле все эти файлы разные потому что их присылают разные клиники, у каждой клиники выгрузка происходит из разного ПО, я не могу их заставить присылать такие счета в удобном для нас виде.

Автор - sashok60
Дата добавления - 07.08.2014 в 11:56
paramedic Дата: Четверг, 07.08.2014, 12:17 | Сообщение № 17
Группа: Проверенные
Ранг: Участник
Сообщений: 67
Репутация: 6 ±
Замечаний: 0% ±

Excel 2007
все намного сложнее, на самом деле все эти файлы разные потому что их присылают разные клиники

[offtop]Последний: это у Вас оргпроблемы. Такие вещи решаются на уровне договоров. Еще в далеком 2004 году когда я работал в здраве это проходили. Нам просто сказали: данные даете в таком виде иначе не принимаем.
Вопросов почему-то ни у кого не возникло (точнее разные выкрики были, но закончились ничем).[/offtop]
Как вариант решения проблемы - пишем макросы парсинга для каждого вида файла, раскладываем их по разным папочкам и делаем импорт из каждой папки отдельно.


Я не ламер - я честный чайник
 
Ответить
Сообщение
все намного сложнее, на самом деле все эти файлы разные потому что их присылают разные клиники

[offtop]Последний: это у Вас оргпроблемы. Такие вещи решаются на уровне договоров. Еще в далеком 2004 году когда я работал в здраве это проходили. Нам просто сказали: данные даете в таком виде иначе не принимаем.
Вопросов почему-то ни у кого не возникло (точнее разные выкрики были, но закончились ничем).[/offtop]
Как вариант решения проблемы - пишем макросы парсинга для каждого вида файла, раскладываем их по разным папочкам и делаем импорт из каждой папки отдельно.

Автор - paramedic
Дата добавления - 07.08.2014 в 12:17
sashok60 Дата: Четверг, 07.08.2014, 12:20 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

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


почему то перебирает ячейки в самом шаблоне, а не в открытой книге, даже если принудительно делаешь перед циклом Workbooks("1.xls").Activate
 
Ответить
Сообщение
Для демонстрации, как можно отличить разные виды ваших файлов. Код можете запускать из любого файла, проверяться будет активный лист активной книги:


почему то перебирает ячейки в самом шаблоне, а не в открытой книге, даже если принудительно делаешь перед циклом Workbooks("1.xls").Activate

Автор - sashok60
Дата добавления - 07.08.2014 в 12:20
paramedic Дата: Четверг, 07.08.2014, 12:24 | Сообщение № 19
Группа: Проверенные
Ранг: Участник
Сообщений: 67
Репутация: 6 ±
Замечаний: 0% ±

Excel 2007
почему то перебирает ячейки в самом шаблоне

Добавьте типа:
[vba]
Код

ws=Workbooks("1.xls").Worksheets(1)
'и замените Cells(X, 2) на ws.Cells(X, 2)
[/vba]
По умолчанию Cells берется из книги с макросом.


Я не ламер - я честный чайник

Сообщение отредактировал paramedic - Четверг, 07.08.2014, 12:25
 
Ответить
Сообщение
почему то перебирает ячейки в самом шаблоне

Добавьте типа:
[vba]
Код

ws=Workbooks("1.xls").Worksheets(1)
'и замените Cells(X, 2) на ws.Cells(X, 2)
[/vba]
По умолчанию Cells берется из книги с макросом.

Автор - paramedic
Дата добавления - 07.08.2014 в 12:24
sashok60 Дата: Четверг, 07.08.2014, 12:41 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
пишет ошибку http://clip2net.com/s/iGyK9j
 
Ответить
Сообщениепишет ошибку http://clip2net.com/s/iGyK9j

Автор - sashok60
Дата добавления - 07.08.2014 в 12:41
Мир MS Excel » Вопросы и решения » Вопросы по VBA » сбор данных из книги (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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