Cách để lấy tên của 1 file bất kỳ, không lấy đường dẫn (1 người xem)

  • Thread starter Thread starter lulyen
  • Ngày gửi Ngày gửi

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

lulyen

Thành viên mới
Tham gia
29/10/08
Bài viết
35
Được thích
2
Kính nhờ các cao thủ GPE giúp đỡ giúp em, nguyện vọng của em như sau:
- Em muốn khi chạy CODE và lựa chọn 1 file bất kỳ sau đó gán tên file đã chọn vào ô A1, nhưng em chạy Code nó lấy tất cả đường dẫn lẫn phần mở rộng của file.
- Khi chạy Code nó ra: C:\Documents and Settings\yenbai\Desktop\lay ten file.xls ; em chỉ cần lấy mỗi tên file: "lay ten file.xls" thôi mong các bác cao thủ GPE giúp em.
Em xin cảm ơn!
Code này em lấy trong diễn đàn, vặn vẹo sửa chữa đến giờ vẫn không như mong muốn:(mong tác giả của Code thông cảm)
Code:
Sub laytenfile()
Dim thumuc As FileDialog
Dim tenfile As Variant
Dim ws As Worksheets
Set sw = Worksheets("sheet1")
Set thumuc = Application.FileDialog(msoFileDialogOpen)
With thumuc
If .Show Then
For Each tenfile In .SelectedItems
Range("A1").Formula = tenfile
Next
End If
End With
End Sub
 

File đính kèm

Kính nhờ các cao thủ GPE giúp đỡ giúp em, nguyện vọng của em như sau:
- Em muốn khi chạy CODE và lựa chọn 1 file bất kỳ sau đó gán tên file đã chọn vào ô A1, nhưng em chạy Code nó lấy tất cả đường dẫn lẫn phần mở rộng của file.
- Khi chạy Code nó ra: C:\Documents and Settings\yenbai\Desktop\lay ten file.xls ; em chỉ cần lấy mỗi tên file: "lay ten file.xls" thôi mong các bác cao thủ GPE giúp em.
Em xin cảm ơn!
Code này em lấy trong diễn đàn, vặn vẹo sửa chữa đến giờ vẫn không như mong muốn:(mong tác giả của Code thông cảm)
Code:
Sub laytenfile()
Dim thumuc As FileDialog
Dim tenfile As Variant
Dim ws As Worksheets
Set sw = Worksheets("sheet1")
Set thumuc = Application.FileDialog(msoFileDialogOpen)
With thumuc
If .Show Then
For Each tenfile In .SelectedItems
Range("A1").Formula = tenfile
Next
End If
End With
End Sub
Đây là sở trường của anh quanghai1969! Rút thôi!
 
Upvote 0
Đây là sở trường của anh quanghai1969! Rút thôi!
Nói thế thì không công bằng rồi nhá. Dạo này mình nhường sân lại cho các bạn thôi. Bận quá không cót két gì được cả. Nhưng cái vụ lấy tên file thì đúng là dễ quá mạng luôn. Tuy nhiên toàn thu gom từ GPE cả đấy mà.
Mà code bài số 1 đọc thấy vướng vướng quá "chời"
 
Upvote 0
Nói thế thì không công bằng rồi nhá. Dạo này mình nhường sân lại cho các bạn thôi. Bận quá không cót két gì được cả. Nhưng cái vụ lấy tên file thì đúng là dễ quá mạng luôn. Tuy nhiên toàn thu gom từ GPE cả đấy mà.
Mà code bài số 1 đọc thấy vướng vướng quá "chời"
Bác quanghai1969 ạ, bác biết bác giúp em với, em lọ mọ mãi trong diễn đàn nhưng không có kết quả như mong muốn nên em mới phải hỏi bác ạ (Em tham gia diễn đàn từ 2008 đến nay mới chỉ có chưa đến 30 bài chủ yếu là em nhặt nhạnh từ những bài viết của các thành viên GPE thôi)
 
Upvote 0
Bác quanghai1969 ạ, bác biết bác giúp em với, em lọ mọ mãi trong diễn đàn nhưng không có kết quả như mong muốn nên em mới phải hỏi bác ạ (Em tham gia diễn đàn từ 2008 đến nay mới chỉ có chưa đến 30 bài chủ yếu là em nhặt nhạnh từ những bài viết của các thành viên GPE thôi)
Nếu muốn nhanh chóng vượt qua hạng abc thì cứ vào tìm các bài viết của mình. Toàn là code cho người mới bắt đầu làm quen VBA.
 
Upvote 0
- Khi chạy Code nó ra: C:\Documents and Settings\yenbai\Desktop\lay ten file.xls ; em chỉ cần lấy mỗi tên file: "lay ten file.xls" thôi mong các bác cao thủ GPE giúp em.

sửa
Mã:
Range("A1").Formula = tenfile
thảnh
Mã:
 [A1].value = Mid(tenfile, InStrRev(tenfile, "\") + 1)

Nhưng bài bản thì phải sửa thế này, mới hết các files chọn

Mã:
[COLOR=#ff0000]k = 0[/COLOR]
For Each tenfile In .SelectedItems
    [COLOR=#ff0000]k = k + 1[/COLOR]
    [A1].Offset(k).Value = Mid(tenfile, InStrRev(tenfile, "\") + 1)
Next

biến k khai báo thêm kiểu Long chẳng hạn
Dim k As long


--------------
kỹ thuật ở đây chỉ là hàm Mid, hàm cơ bản , khá giống hàm MID ngoài sheet
 
Lần chỉnh sửa cuối:
Upvote 0
sửa
Mã:
Range("A1").Formula = tenfile
thảnh
Mã:
 [A1].value = Mid(tenfile, InStrRev(tenfile, "\") + 1)

Nhưng bài bản thì phải sửa thế này, mới hết các files chọn

Mã:
[COLOR=#ff0000]k = 0[/COLOR]
For Each tenfile In .SelectedItems
    [COLOR=#ff0000]k = k + 1[/COLOR]
    [A1].Offset(k).Value = Mid(tenfile, InStrRev(tenfile, "\") + 1)
Next

biến k khai báo thêm kiểu Long chẳng hạn
Dim k As long


--------------
kỹ thuật ở đây chỉ là hàm Mid, hàm cơ bản , khá giống hàm MID ngoài sheet
Cảm ơn MuaBuiRoi rất nhiều, mình đã làm được rồi
 
Upvote 0
Bác quanghai1969 ạ, bác biết bác giúp em với, em lọ mọ mãi trong diễn đàn nhưng không có kết quả như mong muốn nên em mới phải hỏi bác ạ (Em tham gia diễn đàn từ 2008 đến nay mới chỉ có chưa đến 30 bài chủ yếu là em nhặt nhạnh từ những bài viết của các thành viên GPE thôi)
Bạn xem 1 đoạn code mẫu về cách lấy tên file
PHP:
Sub GetFileNames()
Dim x As Variant, y As Long
x = Application.GetOpenFilename(MultiSelect:=True)
If Not IsArray(x) Then Exit Sub
For y = 1 To UBound(x)
   MsgBox Replace(x(y), "\", "", InStrRev(x(y), "\"))
Next
End Sub
 
Upvote 0

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

Back
Top Bottom