VBA to copy range to different workbook

Rolsu

New Member
Joined
Jul 16, 2019
Messages
3
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
 

Some videos you may like

Excel Facts

Format cells as date
Select range and press Ctrl+Shift+3 to format cells as date. (Shift 3 is the # sign which sort of looks like a small calendar).

dmt32

Well-known Member
Joined
Jul 3, 2012
Messages
5,913
Office Version
2019
Platform
Windows
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
Joined
Jul 16, 2019
Messages
3
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
Joined
Jul 3, 2012
Messages
5,913
Office Version
2019
Platform
Windows
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
Joined
Jul 16, 2019
Messages
3
Hi Dave!

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

dmt32

Well-known Member
Joined
Jul 3, 2012
Messages
5,913
Office Version
2019
Platform
Windows
Hi Dave!

It works perfectly!
Thank you so much and sorry again about the missing information.
No worries just something to keep in mind next time posting - glad update does what you want

Dave
 

Watch MrExcel Video

Forum statistics

Threads
1,101,997
Messages
5,484,100
Members
407,430
Latest member
sgoldman

This Week's Hot Topics

  • Finding issue in If elseif else with For each Loop
    Finding issue in If elseif else with For each Loop I have tried this below code but i'm getting in Y column filled with W005. Colud you please...
  • MsgBox Error
    Hi Guys, I have the below error show up when i try and run my macro in File1 but works fine if i copy and paste the same code into file2. [ATTACH...
  • CELL FORMAT - IF CONDITION
    My Cell Format is [B]""0.00" Cr". [/B]But in the cell, it is showing 123.00 for editing. (123 is entry figure). (Data imported from other...
  • Show numbers nearly the same
    Is this possible. I have a number that can change very time eg 0.00001234 Then I have a lot of numbers 0.0000001, 0.0000002, 0.00000004...
  • Please i need your help to create formula
    I need a formula in cell B8 to do this >>if b1=1 then multiply ( cell b8) by 10% ,if b1=2 multiply by 20%,if=3 multiply by 30%. Thank you in...
  • Got error while adding column and filter
    Got error while adding column and filter In column Z has some like "Success" and "Error". I want to add column in AA if the Z cell value is...
Top