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

Liên hệ QC
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
 
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

  • Chuyen Doi VND_USD (ok) 22102024 (1).xlsb
    237.9 KB · Đọc: 15
  • SHCX240001_IVPL Data.rar
    698 bytes · Đọc: 15
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