Copy sheet sang file khác nằm ở thư mục khác nhau.

Liên hệ QC

hongphuong1997

Thành viên tiêu biểu
Tham gia
12/11/17
Bài viết
727
Được thích
293
Giới tính
Nữ
Em nhờ các Bác và các anh chị viết giúp em code như file đính kèm ạ.
Em cảm ơn ạ
 

File đính kèm

  • Vật tư.xlsx
    46 KB · Đọc: 15
Anh ơi sửa giúp em cái code này với ạ
Em muốn là nếu có tên sheets(14-09-2022) rồi mà copy lần nữa thì sẽ thành sheets(14-09-2022)(2); sheets(14-09-2022)(3).........
Em đã sửa như này rùi mà không được anh ơi.
Mã:
Option Explicit

Sub Tong_hop_sang_file_khac()
Dim a As Date, c As String, i As Long, k As Long, lrn As Long
Dim sd As Worksheet, sn As Worksheet, wb As Workbook, nwb As Workbook
Set wb = ThisWorkbook
Set sn = wb.Sheets("Tonghop")
lrn = sn.Cells(Rows.Count, 1).End(xlUp).Row
a = Date: c = Replace(a, "/", "-")

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set nwb = Workbooks.Open("C:\Users\admin\Desktop\Du_an\TH_Vat_tu.xlsx")

Set sd = nwb.Sheets.Add

    For i = 1 To Sheets.Count
    k = Sheets.Count
        If Sheets(i).Name = c Then
  Sheets(i).Copy Before:=Sheets(i)'Thêm cái này.....'
            'MsgBox "Tên sheet nay da ton tai, vui long kiem tra truoc khi bat dau lai"
            Exit Sub
        End If
    Next
    With sd
    .Name = c
    sn.Range("A1:E" & lrn).Copy
    .Range("A1:E" & lrn).PasteSpecial xlPasteAll
    .Range("A1:E" & lrn).EntireColumn.AutoFit: .Range("A1").Select
    nwb.Save
    nwb.Close
    End With
    MsgBox "Da cap nhat xong, tong so sheets trong file là " & k
Application.DisplayAlerts = True
Application.ScreenUpdating = True
  
End Sub
 

File đính kèm

  • Du_an.rar
    73.6 KB · Đọc: 7
Upvote 0
Anh ơi sửa giúp em cái code này với ạ
Em muốn là nếu có tên sheets(14-09-2022) rồi mà copy lần nữa thì sẽ thành sheets(14-09-2022)(2); sheets(14-09-2022)(3).........
Em đã sửa như này rùi mà không được anh ơi.
Mã:
Option Explicit

Sub Tong_hop_sang_file_khac()
Dim a As Date, c As String, i As Long, k As Long, lrn As Long
Dim sd As Worksheet, sn As Worksheet, wb As Workbook, nwb As Workbook
Set wb = ThisWorkbook
Set sn = wb.Sheets("Tonghop")
lrn = sn.Cells(Rows.Count, 1).End(xlUp).Row
a = Date: c = Replace(a, "/", "-")

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set nwb = Workbooks.Open("C:\Users\admin\Desktop\Du_an\TH_Vat_tu.xlsx")

Set sd = nwb.Sheets.Add

    For i = 1 To Sheets.Count
    k = Sheets.Count
        If Sheets(i).Name = c Then
  Sheets(i).Copy Before:=Sheets(i)'Thêm cái này.....'
            'MsgBox "Tên sheet nay da ton tai, vui long kiem tra truoc khi bat dau lai"
            Exit Sub
        End If
    Next
    With sd
    .Name = c
    sn.Range("A1:E" & lrn).Copy
    .Range("A1:E" & lrn).PasteSpecial xlPasteAll
    .Range("A1:E" & lrn).EntireColumn.AutoFit: .Range("A1").Select
    nwb.Save
    nwb.Close
    End With
    MsgBox "Da cap nhat xong, tong so sheets trong file là " & k
Application.DisplayAlerts = True
Application.ScreenUpdating = True
 
End Sub
Trong lúc chờ tác giả, bạn thử sửa lại đoạn dưới xem sao:
PHP:
    For i = 1 To Sheets.Count
    k = Sheets.Count
        If Sheets(i).Name = c Then
            Sheets(i).Name = c & "(" & k - i + 1 & ")"
        End If
    Next
    With sd
    .Name = c
 
Upvote 0
Bạn copy cả 2 file và thư mục D:\TH_du an\ và chạy thử xem đúng ý chưa?
 

File đính kèm

  • TH_du an.rar
    72.7 KB · Đọc: 5
Upvote 0
Anh ơi sửa giúp em cái code này với ạ
Em muốn là nếu có tên sheets(14-09-2022) rồi mà copy lần nữa thì sẽ thành sheets(14-09-2022)(2); sheets(14-09-2022)(3).........
Em đã sửa như này rùi mà không được anh ơi.
Mã:
Option Explicit

Sub Tong_hop_sang_file_khac()
Dim a As Date, c As String, i As Long, k As Long, lrn As Long
Dim sd As Worksheet, sn As Worksheet, wb As Workbook, nwb As Workbook
Set wb = ThisWorkbook
Set sn = wb.Sheets("Tonghop")
lrn = sn.Cells(Rows.Count, 1).End(xlUp).Row
a = Date: c = Replace(a, "/", "-")

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set nwb = Workbooks.Open("C:\Users\admin\Desktop\Du_an\TH_Vat_tu.xlsx")

Set sd = nwb.Sheets.Add

    For i = 1 To Sheets.Count
    k = Sheets.Count
        If Sheets(i).Name = c Then
  Sheets(i).Copy Before:=Sheets(i)'Thêm cái này.....'
            'MsgBox "Tên sheet nay da ton tai, vui long kiem tra truoc khi bat dau lai"
            Exit Sub
        End If
    Next
    With sd
    .Name = c
    sn.Range("A1:E" & lrn).Copy
    .Range("A1:E" & lrn).PasteSpecial xlPasteAll
    .Range("A1:E" & lrn).EntireColumn.AutoFit: .Range("A1").Select
    nwb.Save
    nwb.Close
    End With
    MsgBox "Da cap nhat xong, tong so sheets trong file là " & k
Application.DisplayAlerts = True
Application.ScreenUpdating = True
 
End Sub
Thử code này:
Mã:
Option Explicit

Sub Tong_hop_sang_file_khac()

Dim wsName As String, mainLr As Long, dPath As String, mainRng As Range
Dim mainWb As Workbook, newWb As Workbook, mainWs As Worksheet, newWs As Worksheet

Application.ScreenUpdating = False
Application.DisplayAlerts = False
'***************************************************************************
dPath = "C:\Users\admin\Desktop\Du_an\TH_Vat_tu.xlsx" ' => Chi sua path o day neu thay doi
Set mainWb = ThisWorkbook
Set mainWs = mainWb.Sheets("Tonghop")
'***************************************************************************
mainLr = mainWs.Cells(Rows.Count, "B").End(xlUp).Row
wsName = Format(Date, "dd-mm-yyyy")
Set mainRng = mainWs.Range("A1:E" & mainLr)
'***************************************************************************
Set newWb = Workbooks.Open(dPath)
On Error Resume Next
    newWb.Sheets(wsName).Copy after:=newWb.Sheets(newWb.Sheets.Count)
    If Err.Number > 0 Then
        Set newWs = newWb.Sheets.Add
        newWs.Name = wsName
    Else
        Set newWs = ActiveSheet
        newWs.Cells.Clear
    End If
On Error GoTo 0
'***************************************************************************
    With newWs
        mainRng.Copy .Cells(1, 1)
        .Columns("A:E").AutoFit
        .Rows("1:" & mainLr).AutoFit
        newWb.Close True
    End With
'***************************************************************************
Application.DisplayAlerts = True
Application.ScreenUpdating = True
  
End Sub
 
Upvote 0
Thử code này:
Mã:
Option Explicit

Sub Tong_hop_sang_file_khac()

Dim wsName As String, mainLr As Long, dPath As String, mainRng As Range
Dim mainWb As Workbook, newWb As Workbook, mainWs As Worksheet, newWs As Worksheet

Application.ScreenUpdating = False
Application.DisplayAlerts = False
'***************************************************************************
dPath = "C:\Users\admin\Desktop\Du_an\TH_Vat_tu.xlsx" ' => Chi sua path o day neu thay doi
Set mainWb = ThisWorkbook
Set mainWs = mainWb.Sheets("Tonghop")
'***************************************************************************
mainLr = mainWs.Cells(Rows.Count, "B").End(xlUp).Row
wsName = Format(Date, "dd-mm-yyyy")
Set mainRng = mainWs.Range("A1:E" & mainLr)
'***************************************************************************
Set newWb = Workbooks.Open(dPath)
On Error Resume Next
    newWb.Sheets(wsName).Copy after:=newWb.Sheets(newWb.Sheets.Count)
    If Err.Number > 0 Then
        Set newWs = newWb.Sheets.Add
        newWs.Name = wsName
    Else
        Set newWs = ActiveSheet
        newWs.Cells.Clear
    End If
On Error GoTo 0
'***************************************************************************
    With newWs
        mainRng.Copy .Cells(1, 1)
        .Columns("A:E").AutoFit
        .Rows("1:" & mainLr).AutoFit
        newWb.Close True
    End With
'***************************************************************************
Application.DisplayAlerts = True
Application.ScreenUpdating = True
 
End Sub
Em cảm ơn anh rất nhiều ạ
 
Upvote 0
Upvote 0
Web KT
Back
Top Bottom