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

Whats the difference between CONCAT and CONCATENATE?
The newer CONCAT function can reference a range of cells. =CONCATENATE(A1,A2,A3,A4,A5) becomes =CONCAT(A1:A5)

dmt32

Well-known Member
Joined
Jul 3, 2012
Messages
6,017
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
6,017
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
6,017
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
 

Subscribe on YouTube

Watch MrExcel Video

Forum statistics

Threads
1,106,015
Messages
5,508,814
Members
408,695
Latest member
MarcelCohen

This Week's Hot Topics

  • Turn fraction around
    Hello I need to turn a fraction around, for example I have 1/3 but I need to present as 3/1
  • TIme Clock record reformatting to ???
    Hello All, I'd like some help formatting this (Tbl-A)(Loaded via Power Query) [ATTACH type="full" width="511px" alt="PQdata.png"]22252[/ATTACH]...
  • TextBox Match
    hi, I am having a few issues with my code below, what I need it to do is when they enter a value in textbox8 (QTY) either 1,2 or 3 the 3 textboxes...
  • Using Large function based on Multiple Criteria
    Hello, I can't seem to get a Large formula to work based on two criteria's. I can easily get a oldest value based one value, but I'm struggling...
  • Can you check my code please
    Hi, Im going round in circles with a Compil Error End With Without With Here is the code [CODE=rich] Private Sub...
  • Combining 2 pivot tables into 1 chart
    Hello everyone, My question sounds simple but I do not know the answer. I have 2 pivot tables and 2 charts that go with this. However I want to...
Top