Cho hỏi Cách lấy tên file excel trong vb (1 người xem)

Liên hệ QC

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

hungnv401

Thành viên mới
Tham gia
28/4/11
Bài viết
2
Được thích
0
ví dụ mình đang mở một file excel có tên "dulieu_dubao".
mình muốn lấy tên file này ghi vào cell (1,1) của sheet hiện hành thì làm thế nào mong mọi người giúp đỡ
Thanks
 
ví dụ mình đang mở một file excel có tên "dulieu_dubao".
mình muốn lấy tên file này ghi vào cell (1,1) của sheet hiện hành thì làm thế nào mong mọi người giúp đỡ
Thanks
Thử dòng code này xem sao nhé

Sub Laytenfile()
Cells(1, 1).Value = Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1)
End Sub
 
Upvote 0
dùng công thức này cho đơn giản (lấy cả đường dẫn và tên sheet)
=CELL("filename")
nếu chỉ muốn lấy tên file thì dùng cái này:
=MID(CELL("filename"),FIND("[", CELL("filename"))+1, FIND("]", CELL("filename")) - FIND("[", CELL("filename"))-1)
 
Upvote 0
Thử dòng code này xem sao nhé

Sub Laytenfile()
Cells(1, 1).Value = Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1)
End Sub

Code này có vấn đề nha!
- Thứ nhất: Lấy tên FILE chứ không phải lấy tên WORKBOOK... mà đã là tên file thì phải có phần mở rộng (Excel đâu phải chỉ có .xls)
- Thứ hai: Dựa vào dấu chấm để tách bỏ phần mở rộng là sai lầm ---> Với tên file 25.05.2012.xls bạn tính sao?
-----------------
Tóm lại bài này có 2 cách làm:
- Dùng công thức, hàm CELL("filename", tham chiếu) như bạn hoangvuluan đã làm ---> Chú ý là hàm này nếu bỏ đối số tham chiếu thì sẽ không cập nhật chính xác
- Dùng code: Tùy ý... nhưng với các dạng xử lý liên quan đến file, folder tốt nhất nên dùng Scripting.FileSystemObject cho nó chuyên nghiệp
 
Upvote 0
Tầm nhìn của mình với anh NDU còn cách xa quá. Thanks
 
Upvote 0
Dùng InstrRev tìm ngược lại cho chắc ăn
Mã:
Sub Laytenfile()
 Cells(1, 1).Value = Left(tenfile, InStrRev(tenfile, ".") - 1)
End Sub
Or dùng Replace cũng được
Mã:
Sub Laytenfile()
Dim tenfile as string
tenfile = ThisWorkbook.FullName
  Cells(1, 1).Value = Replace(tenfile, "." & Split(tenfile, ".")(UBound(Split(tenfile, "."))), "")
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Dùng InstrRev tìm ngược lại cho chắc ăn
Mã:
Sub Laytenfile()
 Cells(1, 1).Value = Left(tenfile, InStrRev(tenfile, ".") - 1)
End Sub
Or dùng Replace cũng được
Mã:
Sub Laytenfile()
Dim tenfile as string
tenfile = ThisWorkbook.Name
  Cells(1, 1).Value = Replace(tenfile, "." & Split(tenfile, ".")(UBound(Split(tenfile, "."))), "")
End Sub
Code trên được nhưng code dưới thì.. cẩn thận! Bạn có từng thấy file có dạng thế này không: File.xls.xls ---> Khi ấy tên file (không có phần mở rộng) sẽ là File.xls đấy nhé --> Ai cấm?
 
Upvote 0
Lộn hình như với Thisworkbook.Name là ra tên file rồi
 
Upvote 0
Web KT

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

Back
Top Bottom