Страницы: 1
RSS
Макрос копирование значений ячеек в открытую книгу из другой, Исправить код
 

Здравствуйте! Подсмотрела подходящий код для своей ситуации. Значения указанного диапазона ячеек копируются в книгу, где прописан макрос.

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

C:\Данные.xlsx указано в ячейке A1.  Название листа в ячейке A2. Диапазон копируемых ячеек указано в ячейке A3. Место копирования A4.

Код
Workbooks.Open Filename:="C:\Данные.xlsx"
Workbooks("Данные.xlsx").Worksheets("Лист1").Range("A16:E16").Copy
Workbooks("Книга1.xlsm").Activate
ActiveWorkbook.Worksheets("Лист1").Range("A1").Select
ActiveSheet.Paste 
Workbooks("Данные.xlsx").Close


Спасибо!!!!!
 
Вы можете, например, таким образом:
Код
Option Explicit
Option Private Module

Sub otkroy_kopiruy_zakroy()
Dim kngDostup As String, kngList As String, kngDiapazon As String, kngMestoKop As String
Dim tbl() As Variant
Dim istdann As Object

Const bazList As String = "List2"       'Nastroyki

    Application.ScreenUpdating = False
    
    With ThisWorkbook
        With .Sheets(bazList)
            kngDostup = .Range("A1").Value
            kngList = .Range("A2").Value
            kngDiapazon = .Range("A3").Value
            kngMestoKop = .Range("A4").Value
        End With
        
        Set istdann = GetObject(kngDostup)
        'Windows(istdann.Name).Visible = True
        tbl = istdann.Sheets(kngList).Range(kngDiapazon).Value
        istdann.Close SaveChanges:=False
        Set istdann = Nothing
        
        With .Sheets(kngMestoKop)
            With .Range("A1")
                .Resize(UBound(tbl, 1), UBound(tbl, 2)).Value = tbl
                .CurrentRegion.EntireColumn.AutoFit
            End With
            Erase tbl
            .Activate
        End With
    End With
    
    Application.ScreenUpdating = True
End Sub
 
Ооооой, как-то сложно надо разобраться.Спасибо.
 
Есть вариант попроще:
Код
Sub tt()

    Dim wb As Object, s As String
    s = [A2]
    Set wb = Workbooks.Open([A1])
    wb.Worksheets(s).Range("A16:E16").Copy Workbooks("Книга1.xlsm").Sheets("Лист1").Range("A1")
    wb.Close 0

End Sub
Изменено: Hugo - 01.07.2018 16:55:55 (раскладка ёлы палы...)
 
Мне важно, чтобы в коде макроса не указывались имена (книги, листа, ячеек), а были прописаны в ячейках книги, где прописан макрос. Так как файлов много. Ежемесячно названия меняются и тогда переписывать макрос.
 
ocet p, макрос дает ошибку. Скрины в файле.
 
так?
Код
Sub CoptSameData()
  Workbooks([a1]).Worksheets([a2]).Range([a3]).Copy Range([a4])
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Привет!
Цитата
yelena321 написал:
Скрины в файле.
Пожалуйста, приложите оба Ваших файла с образцом данных. В сообщении 1 видны нестыковки ...
Сравнение прайсов, таблиц - без настроек
 
или так:
Код
Sub CoptSameData2()
  Workbooks.Open [a1]
  Worksheets([a2]).Range([a3]).Copy ThisWorkbook.Worksheets(1).Range([a4])
  ActiveWorkbook.Close False
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Что-то не получается.
 
Цитата
yelena321 написал:
C:\Данные.xlsx указано в ячейке A1.  Название листа в ячейке A2. Диапазон копируемых ячеек указано в ячейке A3. Место копирования A4.
Где?
Сравнение прайсов, таблиц - без настроек
 
Пардон, не то прикрепила.
 
Цитата
yelena321 написал:
макрос дает ошибку. Скрины в файле
???

Ну, и где эти скрины ?
Там только какие-то ... "gfdgddfgdfg" ... как бы будто кто-то пытался проглотить горячую цветную капусту ... ?
Какая там ошибка ?
 
Скрины на листе 2, 3
 
yelena321,
хорошо, убедили! давайте договоримся так:
я исправляю свой макрос:
Код
Sub CoptSameData2()
  Dim ws0: Set ws0 = ActiveSheet
  Workbooks.Open [a1]
  Worksheets(ws0.[a2].Value).Range(ws0.[a3]).Copy ws0.Range(ws0.[a4])
  ActiveWorkbook.Close False
End Sub
а Вы исправляете в А4 С18 с Эс18 на Си18
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
ВСЕ ОК.!!!!!!!! Спасибо огромное.
Страницы: 1
Наверх