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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2012, 12:22   #1
Vult
Пользователь
 
Регистрация: 11.04.2012
Сообщений: 23
По умолчанию Копирование из файла в файл по выбраной строке

Здравствуйте!
Случилось так, что на работе заставляют писать макрос, а я этим никогда не занимался.
Есть два xls файла: таблица с кучей столбов и оформленный файл.
Требуется, чтобы данные из таблицы копировались из определённой ячейки в определённую ячейку второго файла. Наполнение таблицы будет каждый раз меняться.
При этом, хотелось бы чтобы это выглядело так:
открываем красивый файл. жмём кнопку, выпадает окошко "выберите файл", выбираем, выпадает ещё одно окошко "выберите организацию" (организация это первый столбец таблицы) и уже исходя из выбранной организации, макрос выбирал значения остальных столбов и подставлял в файл, после чего сохранял заполненный файл уже без макросов.
Это вообще для человека далёкого от программирования реально написать?))
Начал читать в инете о vba программировании, но мне кажется, меня уволят раньше, чем я разберусь)
Вложения
Тип файла: zip 123.zip (17.3 Кб, 15 просмотров)

Последний раз редактировалось Vult; 11.04.2012 в 12:29.
Vult вне форума Ответить с цитированием
Старый 11.04.2012, 12:32   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

1. Без примера Ваших файлов и готового результата можно ответить только общими фразами (ну или если у кого есть код, делающий именно это с другими файлами - тогда есть шанс получить такой код )
2. Думаю, на Ваше место (если оно того стОит) есть немало желающих, умеющих писать макросы.
Я бы например пошёл за 1000 EUR на руки, если бы кто в моём городе предложил.
2а. Возможно можно договориться, если ничего не знаете, но хотите зарплату получать?

P.S. Если нужно всё сделать именно так, как Вы описали - думаю код будет не из элементарных.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 11.04.2012, 12:37   #3
Vult
Пользователь
 
Регистрация: 11.04.2012
Сообщений: 23
По умолчанию

ну я не программистом устраивался и о кодинге речи вообще не шло =)
а можно сделать хотя бы без "выбора", просто копирование значение из первой строки? Ну вроде жмём кнопку, Макрос копирует из 2й строки 1й столб в 3й столб 2й строки... а потом сохраняет в отдельный файл результат?

Последний раз редактировалось Vult; 11.04.2012 в 12:40.
Vult вне форума Ответить с цитированием
Старый 11.04.2012, 12:40   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Тогда отбрыкивайтесь. А то на шею сядут, если "напишите". Нам сядут

Ну а вообще-то помочь конечно можно.

1. Сохранять без макросов - Вы не держите макрос в том файле, и этой проблемы не будет.
А если макросы удалять - что делать с кнопкой?
Думаю "открываем красивый файл. жмём кнопку" пусть будет в файле-инструменте.
В нём кнопка выбора файлов/файла, ну а я обычно делаю без кнопки - по Alt+F8 при активном нужном файле выполняю макрос из инструмента, открытого в фоне.
Тогда код можно использовать на любом файле, и его не нужно прописывать в коде или выбирать в ещё одном диалоге.

2. "выберите организацию" - тут думаю нужно сперва прочитать все организации выбранного файла в словарь или коллекцию, далее вывести форму с листбоксом, заполнить его из отобранных уникальных наименований, далее юзер может одну (или несколько) в листбоксе выбрать.
Проще, если на листе уже есть список уникальных организаций - тогда словарь/коллекция не нужны.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 11.04.2012 в 12:56.
Hugo121 вне форума Ответить с цитированием
Старый 11.04.2012, 12:43   #5
Vult
Пользователь
 
Регистрация: 11.04.2012
Сообщений: 23
По умолчанию

меня активно уверяют, что это довольно элементарный макрос, и я должен с этим справиться)
мол, если когда-то хоть чё-то кодил, значит должен разобраться.
последний раз я "кодил" в универе на делфи, и было это лет 6 назад. не меньше)
Vult вне форума Ответить с цитированием
Старый 11.04.2012, 12:59   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Если делать без выбора организации - тогда элементарный.
Можно после выбора файла прописать кодом где нужно элементарную ВПР(), затем заменить формулу на результат.
Или в коде использовать ВПР().
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 11.04.2012, 13:12   #7
Vult
Пользователь
 
Регистрация: 11.04.2012
Сообщений: 23
По умолчанию

мне это мало о чём говорит!) ну вернее, принцип-то я понимаю, но каким образом строится код я не знаю.
напиши пожалуйста код на "открытие файла" и формулу на копирование из другого файла. Возможно-ли сделать так, чтоб пользователь выбирал строку из которой надо значения дёргать?
Vult вне форума Ответить с цитированием
Старый 11.04.2012, 13:28   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Такой пример выбора и открытия файла есть:

Код:
Sub OpenFile()
    Dim fd As FileDialog, ВыбранныйФайл As Variant

    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
        .Title = "Выбираем файл": .InitialFileName = ThisWorkbook.Path
        .Filters.Add "Excel", "*.xls;*.xlsx;*.xlsm", 1: .AllowMultiSelect = False
        If .Show = False Then Exit Sub
        Application.ScreenUpdating = False: ВыбранныйФайл = .SelectedItems(1)
        If ВыбранныйФайл = ThisWorkbook.FullName Then Exit Sub    'на всякий случай
        With Workbooks.Open(ВыбранныйФайл)
            'работаем
            .Close 0
        End With
    End With: Set fd = Nothing

    Application.ScreenUpdating = True
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 11.04.2012, 13:42   #9
Vult
Пользователь
 
Регистрация: 11.04.2012
Сообщений: 23
По умолчанию

вот там где "работаем" собственно и надо указание ячейкам давать, что им делать и откуда копироваться?))
Vult вне форума Ответить с цитированием
Старый 11.04.2012, 13:42   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Код:
Option Explicit

Sub OpenFile()
    Dim fd As FileDialog, ВыбранныйФайл As Variant
    Dim fromcopy As Range

    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
        .Title = "Выбираем файл": .InitialFileName = ThisWorkbook.Path
        .Filters.Add "Excel", "*.xls;*.xlsx;*.xlsm", 1: .AllowMultiSelect = False
        If .Show = False Then Exit Sub
        Application.ScreenUpdating = False: ВыбранныйФайл = .SelectedItems(1)
        If ВыбранныйФайл = ThisWorkbook.FullName Then Exit Sub    'на всякий случай
        With Workbooks.Open(ВыбранныйФайл)

            'работаем
            Application.ScreenUpdating = True
            On Error Resume Next
            Set fromcopy = Application.InputBox(prompt:="Select a Row to copy", Type:=8)
            On Error GoTo 0
            Application.ScreenUpdating = False
            If Not fromcopy Is Nothing Then
                'показываем данные третьего столбца выбранной строки
                MsgBox .ActiveSheet.Cells(fromcopy.Row, 3)
            End If
            .Close 0
        End With
    End With: Set fd = Nothing

    Application.ScreenUpdating = True
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переписать с сохранением порядка следования компоненты файла F1 в файл F2, а компоненты файла F2 - в файл Алексей_1 Паскаль, Turbo Pascal, PascalABC.NET 0 20.05.2011 13:37
копирование строк в файл raspberry Общие вопросы C/C++ 3 12.03.2010 19:16
сброс выбраной строки в listview TaTT DoGG Общие вопросы .NET 5 02.03.2010 01:32
копирование данных их файла .doc в файл Excel prima Microsoft Office Excel 3 19.10.2009 08:37
Копирование текста в файл bookkc Общие вопросы Delphi 2 18.06.2009 23:57