Copy nội dung sheet, không copy công thức

Liên hệ QC

King_cobra

Thành viên mới
Tham gia
30/3/22
Bài viết
19
Được thích
0
Nhờ các chuyên gia hướng dẫn cách xử lý qua VBA.
Tôi muốn copy 1 sheet excel ra 1 file mới nhưng chỉ copy nội dung sheet, không copy công thức.
 
Nhờ các chuyên gia hướng dẫn cách xử lý qua VBA.
Tôi muốn copy 1 sheet excel ra 1 file mới nhưng chỉ copy nội dung sheet, không copy công thức.
Có lẽ bạn thao tác bằng tay chọn Ctrl +A rồi paste value sang sheet đích có khi nhanh hơn ấy
 
Upvote 0
Bạn làm tới đâu rồi, đưa code lên thử.

.
Sub Copy_sheet()
Dim p1, p2, i&
Dim xPath As String
xPath = Application.ActiveWorkbook.Path
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Dim p1, p2, i As Integer
p1 = Sheet1.Cells(2, 9).Value
p2 = Sheet1.Cells(3, 9).Value

'p1 = Sheet3.Range("I2").Value
'p2 = Sheet3.Range("I3").Value

If IsNumeric(p1) = False Or IsNumeric(p2) = False Then
tb = MsgBox("So code phai la so.", , "Thông báo")
Exit Sub
End If

If p1 > p2 Then
tb = MsgBox("So code sau phai >= so code truoc.", , "Thông báo")
Exit Sub
End If

If p1 < 1 Or p2 < 1 Then
tb = MsgBox("So code phai >=1.", , "Thông báo")
Exit Sub
End If

If p1 <= p2 Then
For i = p1 To p2
Sheet1.Range("G3").Value = i
Sheet1.Copy (chỗ này cần các Bác xử lý giúp để chỉ copy dữ liệu)
Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & Sheet1.Range("D9").Value & ".xls"
Application.ActiveWorkbook.Close False
Next
End If
End Sub
 
Upvote 0
Sub Copy_sheet()
Dim p1, p2, i&
Dim xPath As String
xPath = Application.ActiveWorkbook.Path
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Dim p1, p2, i As Integer
p1 = Sheet1.Cells(2, 9).Value
p2 = Sheet1.Cells(3, 9).Value

'p1 = Sheet3.Range("I2").Value
'p2 = Sheet3.Range("I3").Value

If IsNumeric(p1) = False Or IsNumeric(p2) = False Then
tb = MsgBox("So code phai la so.", , "Thông báo")
Exit Sub
End If

If p1 > p2 Then
tb = MsgBox("So code sau phai >= so code truoc.", , "Thông báo")
Exit Sub
End If

If p1 < 1 Or p2 < 1 Then
tb = MsgBox("So code phai >=1.", , "Thông báo")
Exit Sub
End If

If p1 <= p2 Then
For i = p1 To p2
Sheet1.Range("G3").Value = i
Sheet1.Copy (chỗ này cần các Bác xử lý giúp để chỉ copy dữ liệu)
Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & Sheet1.Range("D9").Value & ".xls"
Application.ActiveWorkbook.Close False
Next
End If
End Sub
Các chỗ đậm đậm là mới thêm. Sửa Range("A1:M100") phù hợp với vùng cần copy của bạn.

Dim wb As Workbook
If p1 <= p2 Then
For i = p1 To p2
Sheet1.Range("G3").Value = i
Set wb = Workbooks.Add
wb.Sheets("Sheet1").Range("A1:M100").Value = Sheet1.Range("A1:M100").Value
Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & Sheet1.Range("D9").Value & ".xls"
Application.ActiveWorkbook.Close False
Set wb = Nothing
Next
End If
 
Upvote 0
Sheet1.Copy (chỗ này cần các Bác xử lý giúp để chỉ copy dữ liệu)
Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & Sheet1.Range("D9").Value & ".xls"
Application.ActiveWorkbook.Close False
Thử thêm dòng này vào dưới dòng in đậm:
Mã:
Sheet1.Copy
Application.ActiveWorkbook.Sheets(1).UsedRange.Value = Application.ActiveWorkbook.Sheets(1).UsedRange.Value
 
Upvote 0
Các chỗ đậm đậm là mới thêm. Sửa Range("A1:M100") phù hợp với vùng cần copy của bạn.

Dim wb As Workbook
If p1 <= p2 Then
For i = p1 To p2
Sheet1.Range("G3").Value = i
Set wb = Workbooks.Add
wb.Sheets("Sheet1").Range("A1:M100").Value = Sheet1.Range("A1:M100").Value
Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & Sheet1.Range("D9").Value & ".xls"
Application.ActiveWorkbook.Close False
Set wb = Nothing
Next
End If
Cám ơn Maika8008, mình đã chạy được nhưng lại mất hết định dạng, format.
Nhu cầu của mình là copy chỉ bỏ công thức còn các định dạng phải giữ nguyên.
Như kiểu làm 1 cái báo cáo cho nhiều tỉnh, các tỉnh chỉ việc in và ký vào báo cáo đó. Mỗi báo cáo của tỉnh nào thì chỉ có số liệu của tỉnh đó, không nhìn được số liệu của tỉnh khác.
 
Upvote 0
Cám ơn Maika8008, mình đã chạy được nhưng lại mất hết định dạng, format.
Nhu cầu của mình là copy chỉ bỏ công thức còn các định dạng phải giữ nguyên.
Như kiểu làm 1 cái báo cáo cho nhiều tỉnh, các tỉnh chỉ việc in và ký vào báo cáo đó. Mỗi báo cáo của tỉnh nào thì chỉ có số liệu của tỉnh đó, không nhìn được số liệu của tỉnh khác.
Thay lại bằng đoạn sau:
Dim wb As Workbook
If p1 <= p2 Then
For i = p1 To p2
Sheet1.Range("G3").Value = i
Set wb = Workbooks.Add
Sheet1.Copy After:=wb.Sheets(1)
wb.Sheets(2).Range("A1:M100").Value = Sheet1.Range("A1:M100").Value
Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & Sheet1.Range("D9").Value & ".xls"
Application.ActiveWorkbook.Close False
Set wb = Nothing
Next
End If
 
Upvote 0
Có cách nào để sau khi copy sheet với đầy đủ nội dung, công thức, format... rồi sau đó xử lý từng vùng trong sheet đã copy ở file mới như kiểu copy sau đó paste special không các bạn ơi? Nếu được thì cho mình xin câu lệnh. (Ghi chú: mình không chuyên lập trình, chỉ biết sơ qua thôi nên mong các bạn thông cảm, hướng dẫn tỷ mỷ)
 
Upvote 0
Có cách nào để sau khi copy sheet với đầy đủ nội dung, công thức, format... rồi sau đó xử lý từng vùng trong sheet đã copy ở file mới như kiểu copy sau đó paste special không các bạn ơi? Nếu được thì cho mình xin câu lệnh. (Ghi chú: mình không chuyên lập trình, chỉ biết sơ qua thôi nên mong các bạn thông cảm, hướng dẫn tỷ mỷ)
Bạn hỏi gì thì đã nhận được câu trả lời tương ứng rồi. Ngay từ đầu sao bạn không gửi file để hỏi?
 
Upvote 0
Thay lại bằng đoạn sau:
Dim wb As Workbook
If p1 <= p2 Then
For i = p1 To p2
Sheet1.Range("G3").Value = i
Set wb = Workbooks.Add
Sheet1.Copy After:=wb.Sheets(1)
wb.Sheets(2).Range("A1:M100").Value = Sheet1.Range("A1:M100").Value
Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & Sheet1.Range("D9").Value & ".xls"
Application.ActiveWorkbook.Close False
Set wb = Nothing
Next
End If
All done, rất cám ơn Maika8008. Cuối cùng mình định xóa cái sheet trắng trong file mới bằng câu này "wb.Sheets.Delete" có được không?
Bài đã được tự động gộp:

Bạn hỏi gì thì đã nhận được câu trả lời tương ứng rồi. Ngay từ đầu sao bạn không gửi file để hỏi?
Do mới tham gia và không giỏi lắm nên tôi không lường hết được các khả năng. Cứ thấy lỗi đâu thì hỏi đó thôi, mong các bạn thông cảm
 
Upvote 0
All done, rất cám ơn Maika8008. Cuối cùng mình định xóa cái sheet trắng trong file mới bằng câu này "wb.Sheets.Delete" có được không?
Sheet đó có chỉ số là 1 nên bạn dùng câu lệnh này
Application.DisplayAlerts = False
wb.Sheets(1).Delete
 
Lần chỉnh sửa cuối:
Upvote 0
Hoàng Tuấn 868: Thông cảm nhé, nhiều thông tin không muốn bị lộ vì đây là file làm thật!
Sau này rút kinh nghiệm, đâu cần phải gửi file thật lên làm gì. Bạn chỉ cần tạo các vùng như file thật chứa 1 ít dữ liệu đại diện giả lập. Bạn sẽ mau chóng nhận được câu trả lời đúng nhất
 
Upvote 0
Hoàng Tuấn 868: Thông cảm nhé, nhiều thông tin không muốn bị lộ vì đây là file làm thật!
Đâu cần thông tin thật, chỉ cần định dạng để kiểm tra sau khi xuất xem có ổn không thì điều chỉnh, còn nội dung thì đưa abc, xyz vào thoải mái mà.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom