Добрый день коллеги! Нужна ваша помощь в написании макроса. Суть такова, есть эталонный шаблон в который нужно перенести данные из другой книги в определенные столбцы шаблона, трудность заключается в том что эти книги очень разные. файлы прилагаю. очень нужна ваша помощь. заранее спасибо
Добрый день коллеги! Нужна ваша помощь в написании макроса. Суть такова, есть эталонный шаблон в который нужно перенести данные из другой книги в определенные столбцы шаблона, трудность заключается в том что эти книги очень разные. файлы прилагаю. очень нужна ваша помощь. заранее спасибоsashok60
Для решения данного вопроса потребуются следующие навыки: 1). Открытие файла макросом. 2). Цикл для перебора файлов. 3). Цикл для перебора строк. 4). Владение оператором ветвления (if или select case), с помощью которого программа будет работать по-разному в зависимости от структуры таблиц файла. Для зацепки можно использовать столбец В, в котором во всех таблицах заголовки внутренних таблиц отличаются.
В идеале, необходимо привести все файлы к единообразию, к правильному табличному виду.
sashok60, здравствуйте
Для решения данного вопроса потребуются следующие навыки: 1). Открытие файла макросом. 2). Цикл для перебора файлов. 3). Цикл для перебора строк. 4). Владение оператором ветвления (if или select case), с помощью которого программа будет работать по-разному в зависимости от структуры таблиц файла. Для зацепки можно использовать столбец В, в котором во всех таблицах заголовки внутренних таблиц отличаются.
В идеале, необходимо привести все файлы к единообразию, к правильному табличному виду.Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
1.открытие файла есть. 2.перебирать файлы не обязательно можно по одному открывать 3. не пойму с чего начать, подскажите или дайте пример 4. это знакомо но не понимаю как это все завязать, таблицы на столько разные.
привести к единообразному виду в шаблоне вот конечная цель макроса
1.открытие файла есть. 2.перебирать файлы не обязательно можно по одному открывать 3. не пойму с чего начать, подскажите или дайте пример 4. это знакомо но не понимаю как это все завязать, таблицы на столько разные.
привести к единообразному виду в шаблоне вот конечная цель макросаsashok60
3). В общих чертах с циклами можно ознакомиться здесь. Для перебора строк Вам больше подойдёт цикл For ... Next, который будет копать от указанной строки до нижнего предела таблицы. Гуглу хорошо подойдут запросы "VBA Excel перебор строк циклом" и "VBA Excel поиск последней строки таблицы". 4). Разные? Да. Лично я бы при открытии любой из трёх Ваших таблиц сказал бы макросу: "Дружище, вот тебе три стринга: "Дата счета", "Дата" и "Дата талона". Кого первым найдёшь, двигаясь от первой строки вниз страницы вдоль 2-го столбца, того код и используй для получения данных".
Для отличения разных типов листов можно использовать любую проверку. Хитрость в том, чтобы понять чем отличаются разные виды страниц и на сколько эти свойства постоянны. Например, если во всех файлах с личными карточками пациентов первая фраза "Пациент: ..." всегда стоит во втором столбце и 13-й строке - это уже зацепка.
Если у Вас несколько типов файлов. Например, три. И каждого из типов файлов в большом количестве - то, возможно, для начала Вам будет удобнее написать по отдельному макросу под каждый отдельный тип файла. Каждому типу файла свою отдельную папку и макрос, который перебирает всё, что только можно в заданной папке.
sashok60,
3). В общих чертах с циклами можно ознакомиться здесь. Для перебора строк Вам больше подойдёт цикл For ... Next, который будет копать от указанной строки до нижнего предела таблицы. Гуглу хорошо подойдут запросы "VBA Excel перебор строк циклом" и "VBA Excel поиск последней строки таблицы". 4). Разные? Да. Лично я бы при открытии любой из трёх Ваших таблиц сказал бы макросу: "Дружище, вот тебе три стринга: "Дата счета", "Дата" и "Дата талона". Кого первым найдёшь, двигаясь от первой строки вниз страницы вдоль 2-го столбца, того код и используй для получения данных".
Для отличения разных типов листов можно использовать любую проверку. Хитрость в том, чтобы понять чем отличаются разные виды страниц и на сколько эти свойства постоянны. Например, если во всех файлах с личными карточками пациентов первая фраза "Пациент: ..." всегда стоит во втором столбце и 13-й строке - это уже зацепка.
Если у Вас несколько типов файлов. Например, три. И каждого из типов файлов в большом количестве - то, возможно, для начала Вам будет удобнее написать по отдельному макросу под каждый отдельный тип файла. Каждому типу файла свою отдельную папку и макрос, который перебирает всё, что только можно в заданной папке.Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Был в платной клинике, пытался сказать спасибо заранее. Не взяли. А давайте подойдем к проблеме, как ее решают платные клиники? Врач. Вы знаете, и я знаю, что вам и мне это не надо. Но 1000 за вход в кабинет отдайте. Пригласим медсестру. Медсестра - процедура 5 минут, 350 рублей. Ваш макрос часа по 4 на 1 файл. Ну, и конечно, каждый файл посмотреть нужно. Как без этого?
Был в платной клинике, пытался сказать спасибо заранее. Не взяли. А давайте подойдем к проблеме, как ее решают платные клиники? Врач. Вы знаете, и я знаю, что вам и мне это не надо. Но 1000 за вход в кабинет отдайте. Пригласим медсестру. Медсестра - процедура 5 минут, 350 рублей. Ваш макрос часа по 4 на 1 файл. Ну, и конечно, каждый файл посмотреть нужно. Как без этого?RAN
Был в платной клинике, пытался сказать спасибо заранее. Не взяли. А давайте подойдем к проблеме, как ее решают платные клиники? Врач. Вы знаете, и я знаю, что вам и мне это не надо. Но 1000 за вход в кабинет отдайте. Пригласим медсестру. Медсестра - процедура 5 минут, 350 рублей. Ваш макрос часа по 4 на 1 файл. Ну, и конечно, каждый файл посмотреть нужно. Как без этого?
Был в платной клинике, пытался сказать спасибо заранее. Не взяли. А давайте подойдем к проблеме, как ее решают платные клиники? Врач. Вы знаете, и я знаю, что вам и мне это не надо. Но 1000 за вход в кабинет отдайте. Пригласим медсестру. Медсестра - процедура 5 минут, 350 рублей. Ваш макрос часа по 4 на 1 файл. Ну, и конечно, каждый файл посмотреть нужно. Как без этого?
Что-то мне подсказывает, что требуемый отчет проще получить из медицинской системы, чем пытаться вручную связать разные отчеты из нее же.
это не отчет, а шаблон для импорта в sql таблицу, для корректного импорта в таблицу sql, данные должны быть представлены в определенном виде как в шаблоне
Что-то мне подсказывает, что требуемый отчет проще получить из медицинской системы, чем пытаться вручную связать разные отчеты из нее же.
это не отчет, а шаблон для импорта в sql таблицу, для корректного импорта в таблицу sql, данные должны быть представлены в определенном виде как в шаблонеsashok60
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]
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
это не отчет, а шаблон для импорта в sql таблицу, для корректного импорта в таблицу sql, данные должны быть представлены в определенном виде как в шаблоне
[offtop]Вы пытаетесь сделать колючую проволоку через скрещивания ежа с ужом. Если сидите на поддержке мед.системы, то задайте разрабам задачу на подготовку отчета по нужной форме и все. Сам отчет настолько элементарен, что его (зная систему) можно сделать за 10 минут максимум. Это фактически один запрос к базе данных. Еще лучше, если дадите разрабам формат обмена с другой системой и пусть они сделают экспорт. Это тоже элементарно. Зато никаких непоняток не будет гарантировано.[/offtop]
это не отчет, а шаблон для импорта в sql таблицу, для корректного импорта в таблицу sql, данные должны быть представлены в определенном виде как в шаблоне
[offtop]Вы пытаетесь сделать колючую проволоку через скрещивания ежа с ужом. Если сидите на поддержке мед.системы, то задайте разрабам задачу на подготовку отчета по нужной форме и все. Сам отчет настолько элементарен, что его (зная систему) можно сделать за 10 минут максимум. Это фактически один запрос к базе данных. Еще лучше, если дадите разрабам формат обмена с другой системой и пусть они сделают экспорт. Это тоже элементарно. Зато никаких непоняток не будет гарантировано.[/offtop]paramedic
Оффтоп: Вы пытаетесь сделать колючую проволоку через скрещивания ежа с ужом. Если сидите на поддержке мед.системы, то задайте разрабам задачу на подготовку отчета по нужной форме и все. Сам отчет настолько элементарен, что его (зная систему) можно сделать за 10 минут максимум. Это фактически один запрос к базе данных. Еще лучше, если дадите разрабам формат обмена с другой системой и пусть они сделают экспорт. Это тоже элементарно. Зато никаких непоняток не будет гарантировано.
все намного сложнее, на самом деле все эти файлы разные потому что их присылают разные клиники, у каждой клиники выгрузка происходит из разного ПО, я не могу их заставить присылать такие счета в удобном для нас виде.
Оффтоп: Вы пытаетесь сделать колючую проволоку через скрещивания ежа с ужом. Если сидите на поддержке мед.системы, то задайте разрабам задачу на подготовку отчета по нужной форме и все. Сам отчет настолько элементарен, что его (зная систему) можно сделать за 10 минут максимум. Это фактически один запрос к базе данных. Еще лучше, если дадите разрабам формат обмена с другой системой и пусть они сделают экспорт. Это тоже элементарно. Зато никаких непоняток не будет гарантировано.
все намного сложнее, на самом деле все эти файлы разные потому что их присылают разные клиники, у каждой клиники выгрузка происходит из разного ПО, я не могу их заставить присылать такие счета в удобном для нас виде.sashok60
все намного сложнее, на самом деле все эти файлы разные потому что их присылают разные клиники
[offtop]Последний: это у Вас оргпроблемы. Такие вещи решаются на уровне договоров. Еще в далеком 2004 году когда я работал в здраве это проходили. Нам просто сказали: данные даете в таком виде иначе не принимаем. Вопросов почему-то ни у кого не возникло (точнее разные выкрики были, но закончились ничем).[/offtop] Как вариант решения проблемы - пишем макросы парсинга для каждого вида файла, раскладываем их по разным папочкам и делаем импорт из каждой папки отдельно.
все намного сложнее, на самом деле все эти файлы разные потому что их присылают разные клиники
[offtop]Последний: это у Вас оргпроблемы. Такие вещи решаются на уровне договоров. Еще в далеком 2004 году когда я работал в здраве это проходили. Нам просто сказали: данные даете в таком виде иначе не принимаем. Вопросов почему-то ни у кого не возникло (точнее разные выкрики были, но закончились ничем).[/offtop] Как вариант решения проблемы - пишем макросы парсинга для каждого вида файла, раскладываем их по разным папочкам и делаем импорт из каждой папки отдельно.paramedic