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

Вход

Регистрация

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

 

= Мир MS Excel/Копирование данных с другой книги - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование данных с другой книги (Макросы/Sub)
Копирование данных с другой книги
rtv206 Дата: Суббота, 13.11.2021, 19:41 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Доброго времени суток!
Прошу Вашей помощи в написании макроса:
необходимо чтобы при нажатии на кнопку происходило открытие окна для выбора файла.
Потом когда файл выбран - перенести данные с выбраного файла (с диапазона С5-AZ90000) в эту книгу начиная с А5
Заранее благодарю за помощь.
К сообщению приложен файл: 147852369.xlsm (18.1 Kb)
 
Ответить
СообщениеДоброго времени суток!
Прошу Вашей помощи в написании макроса:
необходимо чтобы при нажатии на кнопку происходило открытие окна для выбора файла.
Потом когда файл выбран - перенести данные с выбраного файла (с диапазона С5-AZ90000) в эту книгу начиная с А5
Заранее благодарю за помощь.

Автор - rtv206
Дата добавления - 13.11.2021 в 19:41
Olena Дата: Суббота, 13.11.2021, 22:20 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 1 ±
Замечаний: 20% ±

В середине макрос с описанием, построите под себя. Он легкий, я сама его подстроила под себя очень быстро.
К сообщению приложен файл: 3542044.xlsm (56.9 Kb)
 
Ответить
СообщениеВ середине макрос с описанием, построите под себя. Он легкий, я сама его подстроила под себя очень быстро.

Автор - Olena
Дата добавления - 13.11.2021 в 22:20
rtv206 Дата: Воскресенье, 14.11.2021, 12:13 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Olena, этот макрос собирает все файлы с папки.
А необходимо чтобы в диалоговом окне выбирать конкретный файл
 
Ответить
СообщениеOlena, этот макрос собирает все файлы с папки.
А необходимо чтобы в диалоговом окне выбирать конкретный файл

Автор - rtv206
Дата добавления - 14.11.2021 в 12:13
Olena Дата: Воскресенье, 14.11.2021, 18:56 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 1 ±
Замечаний: 20% ±

Вот, пожалуйста) Только под себя подстройте, тут тоже легко .

[vba]
Код
Private Sub NZ_Add()
Dim FilesToOpen, importWb1, importWb
Dim vbReportArray As Variant
Dim vbAllInformation(6, 12) As Variant
Dim x, z, c, k, l, p As Integer
x = 1
z = 3
c = 26
k = 1
l = 0
p = 6
FilesToOpen = Application.GetOpenFilename(FileFilter:="All files (*.*), *.*", _
    MultiSelect:=True, Title:="Files to Merge")
If TypeName(FilesToOpen) = "Boolean" Then
    MsgBox "Не выбрано ни одного файла!"
    Exit Sub
End If
Set importWb1 = CreateObject("Excel.Sheet")
If TypeName(FilesToOpen) <> "Boolean" Then
While x <= UBound(FilesToOpen)
    Application.ScreenUpdating = False
    Erase vbAllInformation
    Set importWb = importWb1.Application.Workbooks.Open(Filename:=FilesToOpen(x))
    
    While k < 20
        If Workbooks(importWb.name).Worksheets(1).Cells(c, 1).Value = "" Then k = k + 1
        If Workbooks(importWb.name).Worksheets(1).Cells(c, 1).Value <> "" Then k = 1
        c = c + 1
    Wend
    
    While ThisWorkbook.Worksheets("Лист1").Cells(p, 7).Value <> ""
        p = p + 1
    Wend
    
    c = c - k
    vbReportArray = Workbooks(importWb.name).Worksheets(1).Range("A28:H" & CStr(c)).Value
    My_un_protect
    For i = 28 To c
    
        ThisWorkbook.Worksheets("Лист1").Cells(p + l, 6).Value = CStr(vbReportArray(1 + l, 1))
        ThisWorkbook.Worksheets("Лист1").Cells(p + l, 7).Value = CStr(vbReportArray(1 + l, 3))
        ThisWorkbook.Worksheets("Лист1").Cells(p + l, 4).Value = CStr(vbReportArray(1 + l, 2))
        If CDbl(vbReportArray(1 + l, 8)) <> 0 Then ThisWorkbook.Worksheets("Лист1").Cells(p + l, 8).Value = CDbl(vbReportArray(1 + l, 8))
        l = l + 1
        
        
        
    Next
    My_protect
     
    'ArrayInWorkbook (vbAllInformation)
    z = 3
    x = x + 1
    importWb.Close savechanges:=False
    Set importWb = Nothing
Wend
    Set importWb1 = Nothing
End If
forma
Application.ScreenUpdating = True
Nomer_NZ.Show
End Sub
[/vba]


Сообщение отредактировал Olena - Воскресенье, 14.11.2021, 18:57
 
Ответить
СообщениеВот, пожалуйста) Только под себя подстройте, тут тоже легко .

[vba]
Код
Private Sub NZ_Add()
Dim FilesToOpen, importWb1, importWb
Dim vbReportArray As Variant
Dim vbAllInformation(6, 12) As Variant
Dim x, z, c, k, l, p As Integer
x = 1
z = 3
c = 26
k = 1
l = 0
p = 6
FilesToOpen = Application.GetOpenFilename(FileFilter:="All files (*.*), *.*", _
    MultiSelect:=True, Title:="Files to Merge")
If TypeName(FilesToOpen) = "Boolean" Then
    MsgBox "Не выбрано ни одного файла!"
    Exit Sub
End If
Set importWb1 = CreateObject("Excel.Sheet")
If TypeName(FilesToOpen) <> "Boolean" Then
While x <= UBound(FilesToOpen)
    Application.ScreenUpdating = False
    Erase vbAllInformation
    Set importWb = importWb1.Application.Workbooks.Open(Filename:=FilesToOpen(x))
    
    While k < 20
        If Workbooks(importWb.name).Worksheets(1).Cells(c, 1).Value = "" Then k = k + 1
        If Workbooks(importWb.name).Worksheets(1).Cells(c, 1).Value <> "" Then k = 1
        c = c + 1
    Wend
    
    While ThisWorkbook.Worksheets("Лист1").Cells(p, 7).Value <> ""
        p = p + 1
    Wend
    
    c = c - k
    vbReportArray = Workbooks(importWb.name).Worksheets(1).Range("A28:H" & CStr(c)).Value
    My_un_protect
    For i = 28 To c
    
        ThisWorkbook.Worksheets("Лист1").Cells(p + l, 6).Value = CStr(vbReportArray(1 + l, 1))
        ThisWorkbook.Worksheets("Лист1").Cells(p + l, 7).Value = CStr(vbReportArray(1 + l, 3))
        ThisWorkbook.Worksheets("Лист1").Cells(p + l, 4).Value = CStr(vbReportArray(1 + l, 2))
        If CDbl(vbReportArray(1 + l, 8)) <> 0 Then ThisWorkbook.Worksheets("Лист1").Cells(p + l, 8).Value = CDbl(vbReportArray(1 + l, 8))
        l = l + 1
        
        
        
    Next
    My_protect
     
    'ArrayInWorkbook (vbAllInformation)
    z = 3
    x = x + 1
    importWb.Close savechanges:=False
    Set importWb = Nothing
Wend
    Set importWb1 = Nothing
End If
forma
Application.ScreenUpdating = True
Nomer_NZ.Show
End Sub
[/vba]

Автор - Olena
Дата добавления - 14.11.2021 в 18:56
Kuzmich Дата: Воскресенье, 14.11.2021, 19:23 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Цитата
в диалоговом окне выбирать конкретный файл

[vba]
Код
Sub fdsg()
Dim ImaKnigi$
ImaKnigi$ = Get_FileName
Workbooks.Open (ImaKnigi$)
  'делаете с выбранной книгой нужные действия и не забудьте закрыть
End Sub
[/vba]
В стандартный модуль
[vba]
Код
Public Function Get_FileName(Optional ByVal Title As String = "Выберите файл для обработки", _
                             Optional ByVal FilterDescription As String = "Файлы Excel", _
                             Optional ByVal FilterExtention As String = "*.xls*") As String
    On Error Resume Next
    With Application.FileDialog(msoFileDialogOpen)    '
        .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath
        .Filters.Clear: .Filters.Add FilterDescription, FilterExtention
        If .Show <> -1 Then Exit Function
        Get_FileName = .SelectedItems(1)
    End With
End Function
[/vba]
 
Ответить
Сообщение
Цитата
в диалоговом окне выбирать конкретный файл

[vba]
Код
Sub fdsg()
Dim ImaKnigi$
ImaKnigi$ = Get_FileName
Workbooks.Open (ImaKnigi$)
  'делаете с выбранной книгой нужные действия и не забудьте закрыть
End Sub
[/vba]
В стандартный модуль
[vba]
Код
Public Function Get_FileName(Optional ByVal Title As String = "Выберите файл для обработки", _
                             Optional ByVal FilterDescription As String = "Файлы Excel", _
                             Optional ByVal FilterExtention As String = "*.xls*") As String
    On Error Resume Next
    With Application.FileDialog(msoFileDialogOpen)    '
        .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath
        .Filters.Clear: .Filters.Add FilterDescription, FilterExtention
        If .Show <> -1 Then Exit Function
        Get_FileName = .SelectedItems(1)
    End With
End Function
[/vba]

Автор - Kuzmich
Дата добавления - 14.11.2021 в 19:23
rtv206 Дата: Воскресенье, 14.11.2021, 20:30 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Kuzmich, Olena, благодарю за подсказки и помощь!
Буду пробовать прикрутить в свой файл.
 
Ответить
СообщениеKuzmich, Olena, благодарю за подсказки и помощь!
Буду пробовать прикрутить в свой файл.

Автор - rtv206
Дата добавления - 14.11.2021 в 20:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование данных с другой книги (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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