Я получаю сообщение об ошибке 1004 при использовании класса Range для создания макроса в VBA - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь автоматизировать один отчет в Excel. Я начал с создания макроса. В одной точке макроса я копирую одну строку из AZ2 в CJ2, используя переменные, в каждой ячейке есть формулы, и я хочу вставить те же формулы из AZ3 в AZ248000. Я получаю сообщение об ошибке для этого кода Wb1.Sheets ("Gains Data"). Range (Ячейки (row3, Col1), Cells (Row2, Col1)). Выберите

Я уже пробовал количество примеров и решений, представленных в Интернете, я начал с автозаполнения, а также пытался просто вставить формулу. Я попытался активировать файл, лист, рабочий лист, как предложено для подобных проблем онлайн. Ничего не получалось. Пожалуйста, проверьте мой код и посоветуйте решение. PS - перед этим кодом есть куча кода, куда я копирую данные из другой рабочей книги Wb2 в основную Wb1.

   Dim Row1 As Long
   Dim Row2 As Long
   Dim row3 As Long
   Dim Col1 As String
   Dim Col2 As String

   Wb1.Worksheets("Gains Data").Range("AY2").Select
   Selection.End(xlDown).Select
   Row2 = ActiveCell.Row

 ' Wb1.Worksheets("Gains Data").Range("AZ2").Select
       ' Selection.End(xlToRight).Select
    ' Col2 = ActiveCell.Column


Wb1.Worksheets("Gains Data").Range("AZ2").Select
Row1 = ActiveCell.Row
row3 = Row1 + 1
Col1 = ActiveCell.Column
Wb1.Worksheets("Gains Data").Range(Selection, 
Selection.End(xlToRight)).Select
'Col2 = ActiveCell.Column
Selection.Copy
'Windows("Gains SOP Forecast Comparison 2019 07.xlsb").Activate
 Wb1.Sheets("Gains Data").Activate

'Range("O1:X1").Select

'Selection.AutoFill Destination:=Range(Col1 & Row1 & ":" & Col2 & Row2), 
  Type:=xlFillDefault

'Range("BA3:B" & LastRow1 & ":" & "CJ3:CJ" & LastRow1).Formula=

 'Cells(Col1 & Row1 & ":" & Col2 & Row2).Paste
 'Sheets("Gains Data").Range(Col1 & row3 & ":" & Col1 & Row2).Select
 Wb1.Sheets("Gains Data").Range(Cells(row3, Col1), Cells(Row2, 
 Col1)).Select
  ActiveSheet.Paste  ' Copies the formulas from BA to CJ for all rows

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

1 Ответ

0 голосов
/ 10 июля 2019

Если вам нужно скопировать данные из одной рабочей книги в другую, попробуйте следующий код:

Sub Copy_Between_Workbook()
Dim wb_path$
Dim wb1, wb2
Dim i, j

wb_path = ThisWorkbook.Path    'Path of workbook
myfile1 = "workbook1.xlsx"
myfile2 = "workbook2.xlsx"
mysheet = "Sheet1"
'Original workbook
Set wb1 = CreateObject(wb_path & "\" & myfile1)
'Target workbook
Set wb2 = CreateObject(wb_path & "\" & myfile2)
'attend: wb1.sheet1 is not work, must be wb1.sheets("xxx")
wb1.Sheets(mysheet).UsedRange.Copy wb2.Sheets(mysheet).Range("A1")

wb1.Close False
wb2.Close True

'Out cut mode
Application.CutCopyMode = False
Debug.Print Timer
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...