Chúng tôi có một tập lệnh để xuất một trang tính cụ thể sang một trang tính mới. csv. Vấn đề là. csv đang lấy các ô có công thức và đánh giá nó dưới dạng một chuỗi trống.
Đây là kịch bản của chúng ta.
Mã VBA.
Public Sub ExportWorksheetAndSaveAsCSV[]
Dim wbkExport As Workbook
Dim shtToExport As Worksheet
Set shtToExport = ThisWorkbook.Worksheets["UploadTemplate"] 'Sheet to export as CSV
Set wbkExport = Application.Workbooks.Add
xStrDate = Format[Now, "yyyy-mm-dd hh-mm-ss"]
shtToExport.Copy Before:=wbkExport.Worksheets[wbkExport.Worksheets.Count]
Application.DisplayAlerts = False 'Possibly overwrite without asking
wbkExport.SaveAs Filename:="L:\Human Resources\Y drive files\ADPUpload - " & xStrDate & ".csv", FileFormat:=xlCSV
Application.DisplayAlerts = True
wbkExport.Close SaveChanges:=False
End Sub
Đây là giao diện khi chúng tôi mở tệp của mình
The system we are uploading to does not like the empty rows shown in the red box. The sheet can have anywhere from rows 40-200 populated each week, so we copied our formula down to row 200, and the empty rows are what we want to not export.
Is there a way to modify our script to ignore rows in the sheet that have a formula but have no real data when exporting?
Tôi tin rằng nó phụ thuộc vào những gì được coi là PHẠM VI ĐÃ SỬ DỤNG của bạn. Vì các ô đó chứa các giá trị hoặc công thức nên nó trở thành một phần của tệp xuất CSV vì nó được SỬ DỤNG hoặc chiếm dụng.
Đề xuất của tôi là Sao chép & Dán dưới dạng giá trị để xóa công thức, sau đó xóa cả Hàng trống. Nếu điều này nghe có vẻ ổn. . Sau đó thử kịch bản dưới đây.
Mã VBA.
Public Sub ExportWorksheetAndSaveAsCSV[]
Dim wbkExport As Workbook
Dim shtToExport As Worksheet
Set shtToExport = ThisWorkbook.Worksheets["UploadTemplate"] 'Sheet to export as CSV
Set wbkExport = Application.Workbooks.Add
xStrDate = Format[Now, "yyyy-mm-dd hh-mm-ss"]
shtToExport.Copy Before:=wbkExport.Worksheets[wbkExport.Worksheets.Count]
Application.DisplayAlerts = False 'Possibly overwrite without asking
'-----Added script
With wbkExport.Worksheets["UploadTemplate"]
'Paste values - remove formulas
.Activate
.Cells.Copy
.Cells.PasteSpecial xlPasteValues
Application.CutCopyMode = False
'Delete Empty rows
Dim LastRowIndex As Integer
Dim RowIndex As Integer
Dim UsedRng As Range
Set UsedRng = ActiveSheet.UsedRange
LastRowIndex = UsedRng.Row - 1 + UsedRng.Rows.Count
For RowIndex = LastRowIndex To 1 Step -1
If Application.CountA[Rows[RowIndex]] = 0 Then
Rows[RowIndex].Delete
End If
Next RowIndex
End With
'-------Back to original script
wbkExport.SaveAs Filename:="L:\Human Resources\Y drive files\ADPUpload - " & xStrDate & ".csv", FileFormat:=xlCSV
Application.DisplayAlerts = True
wbkExport.Close SaveChanges:=False
End Sub
Cảm ơn bạn đã đề xuất. Tôi xin lỗi vì đã mất quá nhiều thời gian để làm điều này, tôi đã bị kéo sang một dự án khác vì vậy tôi chỉ quay lại chủ đề này.bstory84 anh ấy nói
Tôi tin rằng nó phụ thuộc vào những gì được coi là PHẠM VI ĐÃ SỬ DỤNG của bạn. Vì các ô đó chứa các giá trị hoặc công thức nên nó trở thành một phần của tệp xuất CSV vì nó được SỬ DỤNG hoặc chiếm dụng.
Đề xuất của tôi là Sao chép & Dán dưới dạng giá trị để xóa công thức, sau đó xóa cả Hàng trống. Nếu điều này nghe có vẻ ổn. . Sau đó thử kịch bản dưới đây.Mã VBA.
Public Sub ExportWorksheetAndSaveAsCSV[] Dim wbkExport As Workbook Dim shtToExport As Worksheet Set shtToExport = ThisWorkbook.Worksheets["UploadTemplate"] 'Sheet to export as CSV Set wbkExport = Application.Workbooks.Add xStrDate = Format[Now, "yyyy-mm-dd hh-mm-ss"] shtToExport.Copy Before:=wbkExport.Worksheets[wbkExport.Worksheets.Count] Application.DisplayAlerts = False 'Possibly overwrite without asking '-----Added script With wbkExport.Worksheets["UploadTemplate"] 'Paste values - remove formulas .Activate .Cells.Copy .Cells.PasteSpecial xlPasteValues Application.CutCopyMode = False 'Delete Empty rows Dim LastRowIndex As Integer Dim RowIndex As Integer Dim UsedRng As Range Set UsedRng = ActiveSheet.UsedRange LastRowIndex = UsedRng.Row - 1 + UsedRng.Rows.Count For RowIndex = LastRowIndex To 1 Step -1 If Application.CountA[Rows[RowIndex]] = 0 Then Rows[RowIndex].Delete End If Next RowIndex End With '-------Back to original script wbkExport.SaveAs Filename:="L:\Human Resources\Y drive files\ADPUpload - " & xStrDate & ".csv", FileFormat:=xlCSV Application.DisplayAlerts = True wbkExport.Close SaveChanges:=False End Sub
Bấm để mở rộng
Rất tiếc, tập lệnh bạn cung cấp không hoạt động. Khi chúng tôi mở. csv là notepad, nó vẫn có tất cả các hàng trống trong công thức. Cũng mất nhiều thời gian để chạy [hơn 60 giây]. Tôi nghĩ rằng phương pháp sao chép và sau đó dán các giá trị là cách chính xác để làm điều đó.
Một lần nữa xin cảm ơn. Chúng tôi sẽ tiếp tục tìm cách để hoàn thành việc này.