Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос, который тянет информацию из другого файла / 16 сообщений из 16, страница 1 из 1
21.07.2014, 20:08
    #38702311
shake22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос, который тянет информацию из другого файла
Добрый день!

Подскажите, плиз, как написать макрос, который будет находиться в одном файле, а инфу тянуть из другого:
1. В исходнике(1ый файл) несколько столбцов (10), мне нужна информация в 3х из них
2. В конечном файле(2ой файл) 3 столбца с такими же названиями
3. Нужно что бы при нажатии макрос обновлял(не добавлял) конечный файл данными из 1го, желательно даже не открывая его.
4. ссылки и обновить связи, ВПР не подходят, т.к. кол-во строк будет всегда меняться, ссылки виде "0" или неверных значений не нужны, нужен чистый файл без ссылок.
5. Есть вот такой вот кусок макроса, возможно неправильный и обрубленный:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
Sub Кнопка2 Щелкнуть ()

'CORP budget

      Workbooks.Open Filename:= _

        "\\file-server\Fin_Analisys\BUDGET\2013\Q3-Q4\Sales division\Corp\YR-CORP-Expenses Budget-2013_Q3-Q4update.xls", _

        UpdateLinks:=0

    Sheets("Budget_2011 (EURO)").Select

    Range("A1:R227").Select

    Selection.Copy

    Windows("Budget 2013.xls").Activate

    Sheets("CORP").Select

    Cells.Select

    Range("B1").Activate

    ActiveSheet.Paste

    Application.CutCopyMode = False

    Selection.Copy

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

        Windows("YR-CORP-Expenses Budget-2013_Q3-Q4update.xls").Activate

              Windows("YR-CORP-Expenses Budget-2013_Q3-Q4update.xls").Close



Модератор: Учимся использовать тэги оформления кода - FAQ

Помогите, пожалуйста!!! :)
...
Рейтинг: 0 / 0
22.07.2014, 09:31
    #38702525
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос, который тянет информацию из другого файла
shake22, доброе утро. Нужно, чтобы формулы остались или просто значения копировались?
...
Рейтинг: 0 / 0
22.07.2014, 09:33
    #38702527
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос, который тянет информацию из другого файла
shake22,

Код: vbnet
1.
Range("A1:R227").Select



так 3 столбца или больше? :)
...
Рейтинг: 0 / 0
22.07.2014, 09:48
    #38702544
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос, который тянет информацию из другого файла
shake22,

Так попробуйте. Код во 2 файл. Особо не проверял.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub Sbor()
Dim a As Workbook, b As Workbook, p As Long, q As Long
Set a = ThisWorkbook
p = a.Sheets(1).Cells(Rows.Count, "B").End(xlUp).Row
a.Sheets(1).Range("B1:R" & CStr(p) & "").ClearContents
Set b = Workbooks.Open(Filename:="\\file-server\Fin_Analisys\BUDGET\2013\Q3-Q4\Sales division\Corp\YR-CORP-Expenses Budget-2013_Q3-Q4update.xls", UpdateLinks:=0)
q = b.Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row
b.Sheets(1).Range("A1:R" & CStr(q) & "").Copy _
    Destination:=a.Sheets(1).Range("B1")
b.Close savechanges:=False
End Sub
...
Рейтинг: 0 / 0
22.07.2014, 10:19
    #38702572
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос, который тянет информацию из другого файла
Не забудьте поменять название листов на свои.
...
Рейтинг: 0 / 0
23.07.2014, 16:56
    #38704146
shake22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос, который тянет информацию из другого файла
Maxim12345678,

Спасибо огромное за код!

После пары изменений получилось такое:

Sub Sbor()
Dim a As Workbook, b As Workbook, p As Long, q As Long
Set a = ThisWorkbook
p = a.Sheets("1").Cells(Rows.Count, "B").End(xlUp).Row
a.Sheets("1").Range("B5:B" & CStr(p) & "").ClearContents
p = a.Sheets("1").Cells(Rows.Count, "E").End(xlUp).Row
a.Sheets("1").Range("E5:E" & CStr(p) & "").ClearContents
p = a.Sheets("1").Cells(Rows.Count, "F").End(xlUp).Row
a.Sheets("1").Range("F5:F" & CStr(p) & "").ClearContents
Set b = Workbooks.Open(Filename:="D:\222.xls", UpdateLinks:=0)
q = b.Sheets("1").Cells(Rows.Count, "A").End(xlUp).Row
b.Sheets("1").Range("A5:A" & CStr(q) & "").Copy _
Destination:=a.Sheets("1").Range("B5")
q = b.Sheets("1").Cells(Rows.Count, "D").End(xlUp).Row
b.Sheets("1").Range("D5:D" & CStr(q) & "").Copy _
Destination:=a.Sheets("1").Range("E5")
q = b.Sheets("1").Cells(Rows.Count, "E").End(xlUp).Row
b.Sheets("1").Range("E5:E" & CStr(q) & "").Copy _
Destination:=a.Sheets("1").Range("F5")
b.Close savechanges:=False
End Sub

Сделал отдельные столбцы и так что бы не трогало шапку.

1) Осталась задачка: как вставлять именно значения? и так чтобы без форматов?
Через копипаст я нашел как, но тут через "destination". Соединить или заменить их как-то не получилось :(

2) И.... я наверное совсем обнаглею, если я спрошу как добавить сюда: что бы он брал не определенные столбцы а ВПР(VLOOKUP)-ом искал (или конкретные значения или брал инфу для поиска с определенных ячеек) ? :)

Заранее благодарю! :)

П.С.: я не въехал как выделять код по FAQ, актуализируйте и сделайте его проще что ли. Особенно порадовали там комментарии, в которых написано: сделайте так, а тут лучше так, а то оно по ходу не работает :)
...
Рейтинг: 0 / 0
23.07.2014, 17:06
    #38704162
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос, который тянет информацию из другого файла
shake22я не въехал как выделять код по FAQ,нажать "цитировать" на сообщении с уже оформленным кодом и посмотреть, как он оформлен, тоже не получилось?
...
Рейтинг: 0 / 0
23.07.2014, 17:12
    #38704167
shake22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос, который тянет информацию из другого файла
Maxim12345678,

Копипаст со значениями сделал, вопрос с ВПР ом остается открытым :)

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub Sbor()
Dim a As Workbook, b As Workbook, p As Long, q As Long
Set a = ThisWorkbook
p = a.Sheets("1").Cells(Rows.Count, "B").End(xlUp).Row
a.Sheets("1").Range("B5:B" & CStr(p) & "").ClearContents
p = a.Sheets("1").Cells(Rows.Count, "E").End(xlUp).Row
a.Sheets("1").Range("E5:E" & CStr(p) & "").ClearContents
p = a.Sheets("1").Cells(Rows.Count, "F").End(xlUp).Row
a.Sheets("1").Range("F5:F" & CStr(p) & "").ClearContents
Set b = Workbooks.Open(Filename:="D:\222.xls", UpdateLinks:=0)
q = b.Sheets("1").Cells(Rows.Count, "A").End(xlUp).Row
b.Sheets("1").Range("A5:A" & CStr(q) & "").Copy
a.Sheets("1").Range("B5").PasteSpecial Paste:=xlPasteValues
q = b.Sheets("1").Cells(Rows.Count, "D").End(xlUp).Row
b.Sheets("1").Range("D5:D" & CStr(q) & "").Copy
a.Sheets("1").Range("E5").PasteSpecial Paste:=xlPasteValues
q = b.Sheets("1").Cells(Rows.Count, "E").End(xlUp).Row
b.Sheets("1").Range("E5:E" & CStr(q) & "").Copy
a.Sheets("1").Range("F5").PasteSpecial Paste:=xlPasteValues
b.Close savechanges:=False
End Sub
...
Рейтинг: 0 / 0
23.07.2014, 17:41
    #38704189
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос, который тянет информацию из другого файла
shake22,

про ВПР не понял, объясните поподробнее, пожалуйста.
...
Рейтинг: 0 / 0
23.07.2014, 17:56
    #38704204
shake22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос, который тянет информацию из другого файла
Maxim12345678,

я задал копировать определенные столбцы, например A D E из одной книги(данные) в столбцы B E F другой книги(там, где макрос).

Хочу что бы макрос брал не заданные столбцы, а брал шапку(определенные названия) столбцов B E F, и по ней сам искал нужные столбцы в книге с данными
...
Рейтинг: 0 / 0
24.07.2014, 09:07
    #38704503
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос, который тянет информацию из другого файла
shake22,

ну так пробегитесь по шапке поиском, находите ячейку с нужным названием и дальше копируете что требуется.
...
Рейтинг: 0 / 0
24.07.2014, 09:12
    #38704507
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос, который тянет информацию из другого файла
shake22Maxim12345678,

Копипаст со значениями сделал, вопрос с ВПР ом остается открытым :)

Код: vbnet
1.
2.
3.
4.
5.
6.
p = a.Sheets("1").Cells(Rows.Count, "B").End(xlUp).Row
a.Sheets("1").Range("B5:B" & CStr(p) & "").ClearContents
p = a.Sheets("1").Cells(Rows.Count, "E").End(xlUp).Row
a.Sheets("1").Range("E5:E" & CStr(p) & "").ClearContents
p = a.Sheets("1").Cells(Rows.Count, "F").End(xlUp).Row
a.Sheets("1").Range("F5:F" & CStr(p) & "").ClearContents



А если у Вас разное количество в столбцах B, E и F, что будете делать? Зачем так определили p? А если оно одинаковое, зачем ее переопределять 3 раза?
...
Рейтинг: 0 / 0
24.07.2014, 09:13
    #38704509
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос, который тянет информацию из другого файла
Понял, лучше определить p дин раз.
...
Рейтинг: 0 / 0
24.07.2014, 13:53
    #38704909
shake22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос, который тянет информацию из другого файла
Maxim12345678shake22,

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

Так он будет универсальнее, что ли. Если тянуть из разных таблиц и файлов(но содержимое шапки и таблиц то же), не нужно будет искать столбцы и забивать их в макрос, а просто поменять место нахождения файла
...
Рейтинг: 0 / 0
24.07.2014, 13:56
    #38704919
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос, который тянет информацию из другого файла
shake22,

Зачем тогда вообще искать по шапке, если у Вас всегда идентичная структура файлов? Тогда просто создавайте шапку в файле, в котором будут происходить вычисления, и копируйте нужные диапазоны.
...
Рейтинг: 0 / 0
24.07.2014, 17:19
    #38705265
shake22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Макрос, который тянет информацию из другого файла
Maxim12345678,

идентичная отдельная информация (например, столбцы), но не структура.

Начальству нужно все "сейчас и сразу", по нажатию одной кнопки.
А мне нужно этот макрос делать быстро
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос, который тянет информацию из другого файла / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]