Xin chỉ giáo code VBA copy file csv , thay đổi tỉ giá và lưu file csv mới (3 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Tôi tuân thủ nội quy khi đăng bài

daoduy88

Thành viên mới
Tham gia
6/7/20
Bài viết
11
Được thích
0
Em xin chào các anh chị và các bạn

em có file data *****.csv dưới , em muốn nhờ các anh chị hỗ trợ code giúp em file như yêu cầu dưới với ạ

1. Từ file excel vba. ô A4 sheet1 nhập tỉ giá : vd 25000
2. Click button lựa chọn file .csv bất kỳ (File chung định dạng như đính kèm)
3. Từ file được lựa chọn nếu cột AH = USD thì không làm gì, nếu cột AH = VND thì đổi cột AJ/ tỉ giá
4. Tự động lưu lại file mới .csv có tên = tên sheet & "-1"

EM XIN CẢM ƠN Ạ !

1732164925479.png
1732165081537.png
 
các anh chị giúp em với ạ. em cảm ơn
 
dạ đây ạ, em muốn thêm 1 chức năng đó vào file chuyển đổi vnd-usd ạ. nhờ bác giúp em với. em không biết code nhìn không biết làm kiểu gì ạ. em cảm ơn bác
Bài đã được tự động gộp:

dạ đây ạ, em muốn thêm 1 chức năng đó vào file chuyển đổi vnd-usd ạ. nhờ bác giúp em với. em không biết code nhìn không biết làm kiểu gì ạ. em cảm ơn bác
Bài đã được tự động gộp:

 

File đính kèm

dạ đây ạ, em muốn thêm 1 chức năng đó vào file chuyển đổi vnd-usd ạ. nhờ bác giúp em với. em không biết code nhìn không biết làm kiểu gì ạ. em cảm ơn bác
Bài đã được tự động gộp:


Bài đã được tự động gộp:
Tham khảo đoạn code sau:
Mã:
........
 originalFileName = Mid(filePath, InStrRev(filePath, "\") + 1, Len(filePath))

    Set wbSource = Workbooks.Open(filePath)
   Ten = wbSource.Path & "\"
    
    wbSource.Sheets.Copy
    Set wbNew = ActiveWorkbook
'   On Error Resume Next
For Each wsCover In wbNew.Sheets
TenSh = wsCover.Name
Lr = wsCover.Range("AH100000").End(3).Row
 For rowCounter = 2 To Lr
        If UCase(wsCover.Range("AH" & rowCounter)) Like "VND" Then
            wsCover.Range("AJ" & rowCounter) = wsCover.Range("AJ" & rowCounter) / exchangeRate
        End If
Next rowCounter
Next wsCover

'    On Error GoTo 0
    wbNew.SaveAs Filename:=Ten & TenSh & "-1" & ".csv", FileFormat:=xlOpenXMLWorkbook
    
    wbSource.Close False
    
    wbNew.Close True
    .......
 
Tham khảo đoạn code sau:
Mã:
........
 originalFileName = Mid(filePath, InStrRev(filePath, "\") + 1, Len(filePath))

    Set wbSource = Workbooks.Open(filePath)
   Ten = wbSource.Path & "\"
   
    wbSource.Sheets.Copy
    Set wbNew = ActiveWorkbook
'   On Error Resume Next
For Each wsCover In wbNew.Sheets
TenSh = wsCover.Name
Lr = wsCover.Range("AH100000").End(3).Row
 For rowCounter = 2 To Lr
        If UCase(wsCover.Range("AH" & rowCounter)) Like "VND" Then
            wsCover.Range("AJ" & rowCounter) = wsCover.Range("AJ" & rowCounter) / exchangeRate
        End If
Next rowCounter
Next wsCover

'    On Error GoTo 0
    wbNew.SaveAs Filename:=Ten & TenSh & "-1" & ".csv", FileFormat:=xlOpenXMLWorkbook
   
    wbSource.Close False
   
    wbNew.Close True
    .......
cảm ơn bác ạ, nếu muốn đổi thêm chữ VND => USD sau khi đã chia xong tỉ giá thì như nào ạ bác.
 
cảm ơn bác ạ, nếu muốn đổi thêm chữ VND => USD sau khi đã chia xong tỉ giá thì như nào ạ bác.
Bạn đã ghép vào code của bạn chưa? Và chạy thử thì kết quả thế nào?
Bạn muốn đổi chữ "VND" ở cột AH thành "USD" phải không? Nếu vậy bạn thêm dòng code tô đậm phía dưới đây (hoặc dùng hàm Raplace
If UCase(wsCover.Range("AH" & rowCounter)) Like "VND" Then
wsCover.Range("AJ" & rowCounter) = wsCover.Range("AJ" & rowCounter) / exchangeRate
wsCover.Range("AH" & rowCounter)) ="USD"
End If
hoặc dùng hàm Raplace, cụ thể wsCover.Range("AH" & rowCounter)) =Replace(wsCover.Range("AH" & rowCounter)) ,"VNSD","USD")
Tôi đã xóa file nên không thử được. Bạn cũng đã biết về code VBA nên bạn thừa khả năng làm được việc thay thế này ở đâu.
Chúc bạn thành công.
 
Bạn đã ghép vào code của bạn chưa? Và chạy thử thì kết quả thế nào?
Bạn muốn đổi chữ "VND" ở cột AH thành "USD" phải không? Nếu vậy bạn thêm dòng code tô đậm phía dưới đây (hoặc dùng hàm Raplace
If UCase(wsCover.Range("AH" & rowCounter)) Like "VND" Then
wsCover.Range("AJ" & rowCounter) = wsCover.Range("AJ" & rowCounter) / exchangeRate
wsCover.Range("AH" & rowCounter)) ="USD"
End If
hoặc dùng hàm Raplace, cụ thể wsCover.Range("AH" & rowCounter)) =Replace(wsCover.Range("AH" & rowCounter)) ,"VNSD","USD")
Tôi đã xóa file nên không thử được. Bạn cũng đã biết về code VBA nên bạn thừa khả năng làm được việc thay thế này ở đâu.
Chúc bạn thành công.
cảm ơn bác nhiều nhé.
 
Web KT

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

Back
Top Bottom