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

Вход

Регистрация

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

 

= Мир MS Excel/сбор данных из определённых книг в одну - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » сбор данных из определённых книг в одну (Макросы/Sub)
сбор данных из определённых книг в одну
duckky Дата: Воскресенье, 16.04.2017, 16:07 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 95
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый день, прошу помощи, так как сам не могу разобраться.
Я пытался сам слепить макрос, но не получилось у меня.
[vba]
Код
Sub Copy_info_from_file()    'пример использования
    Application.ScreenUpdating = False
    Filename$ = GetFilePath()
    If Filename$ = "" Then Exit Sub
'    MsgBox "выбран файл: " & Filename$
   Range("B4:E14").Select
   Selection.Copy
   ActiveSheet.Paste
   Range("C10").Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
   :=False, Transpose:=False
End Sub

Function GetFilePath(Optional ByVal Title As String = "Выберите файл для обработки", _
                     Optional ByVal InitialPath As String = "D:\Users\Aldakushev_ms\Documents\форум excel\ТР", _
                     Optional ByVal FilterDescription As String = "Все файлы", _
                     Optional ByVal FilterExtention As String = "*.*") As String
    On Error Resume Next
    With Application.FileDialog(msoFileDialogOpen)
        .ButtonName = "Выбрать": .Title = Title:
        .InitialFileName = GetSetting(Application.Name, "GetFilePath", "folder", InitialPath)
        .Filters.Clear: .Filters.Add FilterDescription, FilterExtention
        If .Show <> -1 Then Exit Function
        GetFilePath = .SelectedItems(1)
        folder$ = Left(.SelectedItems(1), InStrRev(.SelectedItems(1), "\"))
        SaveSetting Application.Name, "GetFilePath", "folder", folder$
    End With
End Function
[/vba]
Есть для примера 2 файла: "шаблон" и "перечень". Файл шаблон может иметь любое название и таких файлов будет много, файл перечень 1 и в него должны собираться данные. Я так понимаю, что у меня через макрос копируются данные из моей текущей книги(Перечень тех.реш А), а нужно из выбираемого файла, который ты выбираешь в диалоговом окне.
Помогите допились макрос так, чтобы [vba]
Код
Range("B4:E14").Select
   Selection.Copy
[/vba]
выбирались данные в выбранной книге, а затем вставлялось в текущей, открытом файле "перечень" (вставляться данные должны в выбираемую ячейку - это любая ячейка в столбце С)
К сообщению приложен файл: excel_forum.7z (59.7 Kb)


Сообщение отредактировал duckky - Воскресенье, 16.04.2017, 16:09
 
Ответить
СообщениеДобрый день, прошу помощи, так как сам не могу разобраться.
Я пытался сам слепить макрос, но не получилось у меня.
[vba]
Код
Sub Copy_info_from_file()    'пример использования
    Application.ScreenUpdating = False
    Filename$ = GetFilePath()
    If Filename$ = "" Then Exit Sub
'    MsgBox "выбран файл: " & Filename$
   Range("B4:E14").Select
   Selection.Copy
   ActiveSheet.Paste
   Range("C10").Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
   :=False, Transpose:=False
End Sub

Function GetFilePath(Optional ByVal Title As String = "Выберите файл для обработки", _
                     Optional ByVal InitialPath As String = "D:\Users\Aldakushev_ms\Documents\форум excel\ТР", _
                     Optional ByVal FilterDescription As String = "Все файлы", _
                     Optional ByVal FilterExtention As String = "*.*") As String
    On Error Resume Next
    With Application.FileDialog(msoFileDialogOpen)
        .ButtonName = "Выбрать": .Title = Title:
        .InitialFileName = GetSetting(Application.Name, "GetFilePath", "folder", InitialPath)
        .Filters.Clear: .Filters.Add FilterDescription, FilterExtention
        If .Show <> -1 Then Exit Function
        GetFilePath = .SelectedItems(1)
        folder$ = Left(.SelectedItems(1), InStrRev(.SelectedItems(1), "\"))
        SaveSetting Application.Name, "GetFilePath", "folder", folder$
    End With
End Function
[/vba]
Есть для примера 2 файла: "шаблон" и "перечень". Файл шаблон может иметь любое название и таких файлов будет много, файл перечень 1 и в него должны собираться данные. Я так понимаю, что у меня через макрос копируются данные из моей текущей книги(Перечень тех.реш А), а нужно из выбираемого файла, который ты выбираешь в диалоговом окне.
Помогите допились макрос так, чтобы [vba]
Код
Range("B4:E14").Select
   Selection.Copy
[/vba]
выбирались данные в выбранной книге, а затем вставлялось в текущей, открытом файле "перечень" (вставляться данные должны в выбираемую ячейку - это любая ячейка в столбце С)

Автор - duckky
Дата добавления - 16.04.2017 в 16:07
alex77755 Дата: Понедельник, 17.04.2017, 13:04 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

ну нужно хотя бы открыть файл!
И указывать с какими листами-книгами работаешь

[vba]
Код
    Application.ScreenUpdating = False
    Filename$ = GetFilePath()
    If Filename$ = "" Then Exit Sub
    
    Set sp = ActiveSheet
    Set sh = Workbooks.Open(Filename$).Worksheets(1)
    sh.Range("B4:E14").Copy sp.Range("C10")
[/vba]


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
Сообщениену нужно хотя бы открыть файл!
И указывать с какими листами-книгами работаешь

[vba]
Код
    Application.ScreenUpdating = False
    Filename$ = GetFilePath()
    If Filename$ = "" Then Exit Sub
    
    Set sp = ActiveSheet
    Set sh = Workbooks.Open(Filename$).Worksheets(1)
    sh.Range("B4:E14").Copy sp.Range("C10")
[/vba]

Автор - alex77755
Дата добавления - 17.04.2017 в 13:04
duckky Дата: Среда, 19.04.2017, 07:51 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 95
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
ну нужно хотя бы открыть файл!
И указывать с какими листами-книгами работаешь


переделал вот так
[vba]
Код
Set sh = Workbooks.Open(Filename$).Worksheets(4)
    sh.Range("B4:E14").Select
    Selection.Copy
    ActiveWindow.Close
    Windows("Перечень тех.реш А.xlsm").Activate
    Range("B4:E14").Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
[/vba]
но, как вставку поменять, чтобы вставляло не в
[vba]
Код
Range("B4:E14").Select
[/vba]
а в активную ячейку, ту которую я выберу?
 
Ответить
Сообщение
ну нужно хотя бы открыть файл!
И указывать с какими листами-книгами работаешь


переделал вот так
[vba]
Код
Set sh = Workbooks.Open(Filename$).Worksheets(4)
    sh.Range("B4:E14").Select
    Selection.Copy
    ActiveWindow.Close
    Windows("Перечень тех.реш А.xlsm").Activate
    Range("B4:E14").Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
[/vba]
но, как вставку поменять, чтобы вставляло не в
[vba]
Код
Range("B4:E14").Select
[/vba]
а в активную ячейку, ту которую я выберу?

Автор - duckky
Дата добавления - 19.04.2017 в 07:51
KuklP Дата: Среда, 19.04.2017, 08:54 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
[vba]
Код
Set sh = Workbooks.Open(Filename$).Worksheets(4)
a=sh.Range("B4:E14").value
sh.parent.Close 0
application.goto workbooks("Перечень тех.реш А.xlsm").sheets(1).[b4]
Application.InputBox("...", "Ввод начальной ячейки результата", , Type:=8).resize(ubound(a),ubound(a,2))=a
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение[vba]
Код
Set sh = Workbooks.Open(Filename$).Worksheets(4)
a=sh.Range("B4:E14").value
sh.parent.Close 0
application.goto workbooks("Перечень тех.реш А.xlsm").sheets(1).[b4]
Application.InputBox("...", "Ввод начальной ячейки результата", , Type:=8).resize(ubound(a),ubound(a,2))=a
[/vba]

Автор - KuklP
Дата добавления - 19.04.2017 в 08:54
duckky Дата: Среда, 19.04.2017, 11:50 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 95
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Благодарю, но то окно, которое выскакивает закрывает часть области файла и если мне надо например строку 10, я не могу выбрать из-за него
К сообщению приложен файл: _._.xlsm (38.2 Kb)


Сообщение отредактировал duckky - Среда, 19.04.2017, 13:32
 
Ответить
СообщениеБлагодарю, но то окно, которое выскакивает закрывает часть области файла и если мне надо например строку 10, я не могу выбрать из-за него

Автор - duckky
Дата добавления - 19.04.2017 в 11:50
KuklP Дата: Среда, 19.04.2017, 12:53 | Сообщение № 6
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
И что, нет никакой возможности сдвинуть окно? Тогда не выводите его, а ячейку выбирайте силой мысли :)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеИ что, нет никакой возможности сдвинуть окно? Тогда не выводите его, а ячейку выбирайте силой мысли :)

Автор - KuklP
Дата добавления - 19.04.2017 в 12:53
duckky Дата: Среда, 19.04.2017, 13:38 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 95
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
И что, нет никакой возможности сдвинуть окно? Тогда не выводите его, а ячейку выбирайте силой мысли


так там остается окно, в котором ты выбираешь расположение файла и оно остаётся там как лаг, его никак убрать нельзя?
 
Ответить
Сообщение
И что, нет никакой возможности сдвинуть окно? Тогда не выводите его, а ячейку выбирайте силой мысли


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

Автор - duckky
Дата добавления - 19.04.2017 в 13:38
KuklP Дата: Среда, 19.04.2017, 13:51 | Сообщение № 8
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Ну да, ну да.. посмотрел файл. Зачем же Вы обновление экрана отключаете?
Попробуйте:
[vba]
Код
'    Application.ScreenUpdating = False
    Filename$ = GetFilePath()
    If Filename$ = "" Then Exit Sub
'    MsgBox "Выбран файл: " & Filename$
'   Set sp = ActiveSheet
    Set sh = Workbooks.Open(Filename$).Worksheets(1)
....
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеНу да, ну да.. посмотрел файл. Зачем же Вы обновление экрана отключаете?
Попробуйте:
[vba]
Код
'    Application.ScreenUpdating = False
    Filename$ = GetFilePath()
    If Filename$ = "" Then Exit Sub
'    MsgBox "Выбран файл: " & Filename$
'   Set sp = ActiveSheet
    Set sh = Workbooks.Open(Filename$).Worksheets(1)
....
[/vba]

Автор - KuklP
Дата добавления - 19.04.2017 в 13:51
duckky Дата: Пятница, 21.04.2017, 09:37 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 95
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Спасибо
 
Ответить
СообщениеСпасибо

Автор - duckky
Дата добавления - 21.04.2017 в 09:37
Мир MS Excel » Вопросы и решения » Вопросы по VBA » сбор данных из определённых книг в одну (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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