VBA to copy range to different workbook

Rolsu

New Member
Hi!

I have an issue with my new workbook.
I'd like to copy data from my active workbook to another one, which is closed.
I have half success.
The sheet stands from two parts. An info part and a table. I can copy all the data from the info part but not the table.
I use the range method to copy single cells. But I cannot do the same with a range.
I need to set the range variables but I don't know how...
Can somebody compliment or convert my code to a working one?

Thank you.

I use this code to the table:

Code:
Sub SaveDim()

Dim M1 As Range
Dim M2 As Range
Dim M3 As Range
Dim M4 As Range
Dim M5 As Range
Dim M6 As Range
Dim M7 As Range
Dim M8 As Range
Dim ID As Range
Dim mydata As Workbook


Worksheets("Data").Select
M1 = Range("B4:B54")
Worksheets("Data").Select
M2 = Range("C4:C54")
Worksheets("Data").Select
M3 = Range("D4:D54")
Worksheets("Data").Select
M4 = Range("E4:E54")
Worksheets("Data").Select
M5 = Range("F4:F54")
Worksheets("Data").Select
M6 = Range("G4:G54")
Worksheets("Data").Select
M7 = Range("H4:H54")
Worksheets("Data").Select
M8 = Range("I4:I54")
Worksheets("Data").Select
ID = Range("J4:J54")


Set mydata = Workbooks.Open("Path and name")
Worksheets("Sheet1").Select
Worksheets("Sheet1").Range("A1").Select
RowCount = Worksheets("Sheet1").Range("A1").CurrentRegion.Rows.Count


With Worksheets("Sheet1").Range("A1")
    
    .Offset(RowCount, 0) = M1
    .Offset(RowCount, 1) = M2
    .Offset(RowCount, 2) = M3
    .Offset(RowCount, 3) = M4
    .Offset(RowCount, 4) = M5
    .Offset(RowCount, 5) = M6
    .Offset(RowCount, 6) = M7
    .Offset(RowCount, 7) = M8
    .Offset(RowCount, 8) = ID


End With


mydata.Save
mydata.Close


End Sub
 

dmt32

Well-known Member
Hi,
welcome to Forum

See if this update to your code does what you want

Rich (BB code):
Sub SaveDim()
    Dim RowCount As Long
    Dim CopyRange As Range
    Dim mydata As Workbook
    
    Set CopyRange = Worksheets("Data").Range("B4:J54")
    
    Application.ScreenUpdating = False
    Set mydata = Workbooks.Open("Path and name")
    
     With mydata.Worksheets("Sheet1")
        RowCount = .Range("A1").CurrentRegion.Rows.Count + 1
           CopyRange.Copy .Cells(RowCount, 1)
     End With
'close and save
    mydata.Close True
    Application.ScreenUpdating = True
End Sub
You will need to specify a valid FilePath & FileName shown in red.

Dave
 

Rolsu

New Member
Hi Dave!

Thanks for the fast reply.


Almost good, but there are some bugs.
Maybe because I forgot to write all of the cicumstances. My mistake.


I'd like to copy the values only because the table has a conditional formating.
Another when the table isn't filled fully, data are just from B4 to J36. The code doesn't start filling the new table from the last empty row. It starts from the A55.
 

dmt32

Well-known Member
Hi Dave!

Thanks for the fast reply.


Almost good, but there are some bugs.
Maybe because I forgot to write all of the cicumstances. My mistake.
No bugs just changes to needed to suggestion - Always good to fully explain requirements.

I'd like to copy the values only because the table has a conditional formating.
Another when the table isn't filled fully, data are just from B4 to J36. The code doesn't start filling the new table from the last empty row. It starts from the A55.
If you are copying to a table then, untested but try this update

Code:
Sub SaveDim()
    Dim RowCount As Long
    Dim CopyRange As Range
    Dim mydata As Workbook
    
    Set CopyRange = Worksheets("Data").Range("B4:J54")
    
    Application.ScreenUpdating = False
    Set mydata = Workbooks.Open("Path and name")
    
    With mydata.Worksheets("Sheet1")
        RowCount = .Cells.Find(What:="*", _
        SearchOrder:=xlRows, _
        SearchDirection:=xlPrevious, _
        LookIn:=xlValues).Row + 1
        CopyRange.Copy
'paste values only
        .Cells(RowCount, 1).PasteSpecial Paste:=xlPasteValues
    End With
'close and save
    mydata.Close True
    With Application
        .ScreenUpdating = True: .CutCopyMode = False
    End With
End Sub
Dave
 
Last edited:

Rolsu

New Member
Hi Dave!

It works perfectly!
Thank you so much and sorry again about the missing information.
 

Some videos you may like

This Week's Hot Topics

  • Importing multiple excel files into one spreadsheet
    Hi, I'm trying to import multiple excel files (with the same format into a single spreadsheet) so that each day's file is listed underneath the...
  • find many based on a certain criteria
    good evening, I hope someone can help me? I have a workbook sheet 2 contains lots of data.... I would like to be able to find anything on sheet...
  • How to copy multiple rows using If
    Hi all, I'm very new to VBA and have written this simple code to copy certain cells if a certain cell within that row contains any data. I need...
  • VBA If statement
    Dear All, I have two dates, where I'd like a message box to pop, if the dates are between this criteria. [CODE] sDate1 = #10/1/2019#...
  • Text Format
    I have a sheet for user to keyin the data. The format of the data can be 451 / 1903, 0012 / 9908 or 00287 / 0099. The number after the "/" is...
  • Syntax errors
    Good Morning, Trying to compile a workbook, I keep getting a few errors. Here are the first two: [code=rich]Syntax Error: Function...
Top