Страницы: 1
RSS
Paste в VBA
 
Добрый вечер.
Подскажите, всю голову сломал, проблема:

Cуть ,первым макросом в  ячейку Cells(13, "C") кидаю экспорт файл(насколько понимаю в "буфер").
В лист "Шаблон" нужно вставить Range("A2:I" & "K2:P" & lr).Copy   столбец J не нужен из этого "буфера"
Вставлять надо в ячейку B2  листа "шаблон". Колличество столбцов всегда одинаковое в "буфере", количество строк всегда разное

Код
TWB.Sheets("Шаблон").Range("B2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
Вот тут он удаляет все формулы при вставке, которые находятся правее столбца P , в  cтолбце Q и далее .Изначально копирует и пустые ячейки до конца листа...

Cам код:
Код
Sub Путь()
   Dim FilesToOpen
   Dim OpenPath2 As String
    
    OpenPath2 = CStr(ThisWorkbook.Path)
   'ChDrive "C:\Program Files"
    ChDir OpenPath2
    FilesToOpen = Application.GetOpenFilename _
    ("Excel files(*.xlsx),*.xlsx", 1, "Выбрать файл графиков", , False)
    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "Файл не выбран!"
        Exit Sub
    End If
    Cells(13, "C") = FilesToOpen
End Sub
 
Sub Обновить()
    Dim FilesToOpen
    Dim x As Integer
    Application.ScreenUpdating = False  
    Application.DisplayAlerts = False
    OpenPath = ThisWorkbook.Path
    ChDir OpenPath
    Dim C As Range
    Set TWB = ThisWorkbook
    With Sheets("Шаблон")
        lr = .Cells(.Rows.Count, "D").End(xlUp).Row
        If lr > 1 Then .Range("B2:P" & lr).ClearContents
    End With
     Set IWB = Workbooks.Open(Cells(13, "C"))
    With Sheets("Sheet1")
        lr = .Cells(.Rows.Count, "D").End(xlUp).Row
        If lr > 3 Then
            .Range("A2:I" & "K2:P" & lr).Copy
            TWB.Sheets("Шаблон").Range("B2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False     Вот тут он удаляет все формулы которые находятся правее столбца 
        End If
    End With
    IWB.Close
    ActiveWorkbook.RefreshAll
    Sheets("Пульт").Select
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    MsgBox "Обновление ок " vbInformation, "Информация"
End Sub
Изменено: restation - 19.09.2018 20:47:12
 
Название темы должно отражать суть задачи. Предложите. Модераторы переименуют.
Код в сообщении следует оформлять с помощью кнопки <...>. Файл-пример где?

Нужно не только в Курилке вращаться, но и правила прочитать.
 
Цитата
vikttur написал:
Нужно не только в Курилке вращаться
О, курилка это по моей части :-)
К слову проблема не с Paste  :-)
Изменено: БМВ - 19.09.2018 20:26:10
По вопросам из тем форума, личку не читаю.
 
Цитата
vikttur написал: Название темы должно отражать суть задачи.
Задача и есть paste в VBA . Файлы много весят и по корпоративным соображениям не могу их сюда залить.  
Range("B2"). - пробывал конкретный диапазон указать  , как тут к примеру Range("A2:I" & "K2:P" & lr).Copy  , не получается:(
Код
If lr > 3 Then
            .Range("A2:I" & "K2:P" & lr).Copy
            TWB.Sheets("Шаблон").Range("B2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False     Вот тут он удаляет все формулы которые находятся правее столбца  P вставляя пустые ячейки до конца листа...
        End If
 
restation, https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=5&TID=108635&TITLE_SEO=108635-obuchenie-vba&MID=905132#message905132
По вопросам из тем форума, личку не читаю.
 
Цитата
restation написал: Файлы много весят и по корпоративным соображениям не могу их сюда залить.
Я Вас зря просил правила прочитать? Там хоть слово о рабочих файлах написано?! В не можете потратить свое драгоценное время на составление примера?
 
Цитата
restation написал: Задача и есть paste в VBA
Цитата
БМВ написал: К слову проблема не с Paste  :-)
Цитата
Правила:    2.1. Название темы должно отражать смысл проблемы
Как посторонний человек поймет по Вашему названию проблему, обсуждаемую в теме?

Цитата
Paste в VBA
Ответ по данному вопросу: оператор Paste
Код
Range("A1").Copy
Range("A2").Paste

Думаю, что такой ответ Вам не подойдет.
 
vikttur, нету метода Range.Paste :(
Код
Range("A1").Copy Range("A2")
'или (хуже)
Range("A1").Copy
Range("A2").PasteSpecial
 
Казанский,  ну Виктор и написал
Цитата
vikttur написал:
не подойдет.
:-)
По вопросам из тем форума, личку не читаю.
 
Да это я сгоряча, не думая )
 
выплдните это
Код
Sub test()
  Dim lr&
  lr = 4
  If lr > 3 Then MsgBox "A2:I" & "K2:P" & lr
End Sub
внимательно смотрите в сообщение
в макросе вот это "A2:I" & "K2:P" & lr взято из Вашего .Range("A2:I" & "K2:P" & lr).Copy
это не налезает на здоровую голову!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Спасибо господа !!Понял в чем  косяк, завтра буду переделывать!
 
restation, Если хотите учится, то начните с того, чтоб научится слушать, ну или читать в данном случае. За 14 минут до создания этой темы был дан ответ там но вы уперто доказывали, что проблема в том что вставляется не корректно.
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх