Lấy tên nội dung của file ảnh vào excel và tự động mở file ảnh khi chọn nội dung đó

vc_đi chơi

Thành viên hoạt động
Tham gia ngày
21 Tháng chín 2019
Bài viết
109
Được thích
24
Điểm
20
Tuổi
29
Em có các bức ảnh (bao gồm tất cả các đuôi có định dạng file ảnh: JPEG, TIFF, GIF và PNG , vv.....) và file excel chứa trong cùng một folder
Em xin được nhờ giúp đỡ vấn đề sau:
Lấy tên file ảnh có chứa trong folder để điền vào cột "Nội dung" trong file excel
Điền theo trình tự chữ cái A, B, C,...., khi điền thì tự động đánh số thứ tự ở cột "Số TT" trong excel.
Khi dữ liệu đã được điền xong thì có thể mở bức ảnh đó bằng cách clik chọn vào ô có chứa nội dung trông cột "Nội dung".
Mong sự giúp đỡ của các thầy (cô), anh (chị).
Em xin cảm ơn!
1111.png
 

File đính kèm

thucuc1808

Thành viên mới
Tham gia ngày
30 Tháng mười một 2019
Bài viết
1
Được thích
0
Điểm
13
Tuổi
45
Mình tải dữ liệu ngân hàng từ internetbangking xuống lưu định dạng file excel, nhưng các dãy số phát sinh ngăn cách hàng ngàn bằng dấu chấm nên không sum tổng được. Mình muốn nhập dữ liệu này vô phần mềm phải làm thủ công xóa từng dấu chấm mới được. Bạn cá cách nào giúp mình , mình vô cùng cảm ơn
 

huonglien1901

GPE là ngôi nhà thứ 2 của tôi!!!
Tham gia ngày
17 Tháng tư 2016
Bài viết
2,201
Được thích
1,790
Điểm
360
Tuổi
27
Mình tải dữ liệu ngân hàng từ internetbangking xuống lưu định dạng file excel, nhưng các dãy số phát sinh ngăn cách hàng ngàn bằng dấu chấm nên không sum tổng được. Mình muốn nhập dữ liệu này vô phần mềm phải làm thủ công xóa từng dấu chấm mới được. Bạn cá cách nào giúp mình , mình vô cùng cảm ơn
Bạn nên đặt một tiêu đề mới. Đừng chen ngang vào bài này. Bạn tạo 01 file mới rồi gửi lên.
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,395
Được thích
8,163
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
Mình tải dữ liệu ngân hàng từ internetbangking xuống lưu định dạng file excel, nhưng các dãy số phát sinh ngăn cách hàng ngàn bằng dấu chấm nên không sum tổng được. Mình muốn nhập dữ liệu này vô phần mềm phải làm thủ công xóa từng dấu chấm mới được. Bạn cá cách nào giúp mình , mình vô cùng cảm ơn
Góp ý cho bạn:
Nội dung của bạn không cùng chủ đề với chủ Topic. Vì vậy, bạn nên mở Topic mới với tiêu đề "Giúp xử lý dữ liệu của File để có thể tính toán được"
Bài đã được tự động gộp:

Em có các bức ảnh (bao gồm tất cả các đuôi có định dạng file ảnh: JPEG, TIFF, GIF và PNG , vv.....) và file excel chứa trong cùng một folder
Em xin được nhờ giúp đỡ vấn đề sau:
Lấy tên file ảnh có chứa trong folder để điền vào cột "Nội dung" trong file excel
Điền theo trình tự chữ cái A, B, C,...., khi điền thì tự động đánh số thứ tự ở cột "Số TT" trong excel.
Khi dữ liệu đã được điền xong thì có thể mở bức ảnh đó bằng cách clik chọn vào ô có chứa nội dung trông cột "Nội dung".
Mong sự giúp đỡ của các thầy (cô), anh (chị).
Em xin cảm ơn!
View attachment 229276
Góp ý cho bạn:
Bạn không nên để tiêu đề nữa chừng như vậy, tiêu đề nên bắt đầu cột A.

A_TD.GIF
 
Lần chỉnh sửa cuối:

giaiphap

Thành viên gạo cội
Tham gia ngày
12 Tháng ba 2007
Bài viết
4,817
Được thích
4,067
Điểm
860
Em có các bức ảnh (bao gồm tất cả các đuôi có định dạng file ảnh: JPEG, TIFF, GIF và PNG , vv.....) và file excel chứa trong cùng một folder
Em xin được nhờ giúp đỡ vấn đề sau:
Lấy tên file ảnh có chứa trong folder để điền vào cột "Nội dung" trong file excel
Điền theo trình tự chữ cái A, B, C,...., khi điền thì tự động đánh số thứ tự ở cột "Số TT" trong excel.
Khi dữ liệu đã được điền xong thì có thể mở bức ảnh đó bằng cách clik chọn vào ô có chứa nội dung trông cột "Nội dung".
Mong sự giúp đỡ của các thầy (cô), anh (chị).
Em xin cảm ơn!
View attachment 229276
Dùng thử đoạn code này xem sao?
Mã:
Sub Add_Link()
    Dim xFSO As Object
    Dim xFolder As Object
    Dim xFile As Object
    Dim xPath As String
    Dim I As Integer
    Const fFilter As String = ";.jpg;.gif;.jfif;.png;"
    Range("C5:D" & (Range("D1000").End(xlUp).Row + 1)).Clear
    xPath = ThisWorkbook.Path
    Set xFSO = CreateObject("Scripting.FileSystemObject")
    Set xFolder = xFSO.GetFolder(xPath)
    I = 0
    For Each xFile In xFolder.Files
        If InStrRev(xFile.Name, ".") Then
            If InStr(fFilter, ";" & Right(xFile.Name, Len(xFile.Name) - InStrRev(xFile.Name, ".") + 1) & ";") Then
                I = I + 1
                Cells(I + 4, 3) = I
                ActiveSheet.Hyperlinks.Add Cells(I + 4, 4), xFile.Path, , , Left(xFile.Name, InStrRev(xFile.Name, ".") - 1)
            End If
        End If
    Next
End Sub
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,395
Được thích
8,163
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
Em có các bức ảnh (bao gồm tất cả các đuôi có định dạng file ảnh: JPEG, TIFF, GIF và PNG , vv.....) và file excel chứa trong cùng một folder
Em xin được nhờ giúp đỡ vấn đề sau:
Lấy tên file ảnh có chứa trong folder để điền vào cột "Nội dung" trong file excel
Điền theo trình tự chữ cái A, B, C,...., khi điền thì tự động đánh số thứ tự ở cột "Số TT" trong excel.
Khi dữ liệu đã được điền xong thì có thể mở bức ảnh đó bằng cách clik chọn vào ô có chứa nội dung trông cột "Nội dung".
Mong sự giúp đỡ của các thầy (cô), anh (chị).
Em xin cảm ơn!
View attachment 229276
1/ File đính kèm như góp ý bài 4.
2/ Muốn lấy link ở Folder nào thì thay đường dẫn vào C2 rồi nhấn nút.
 

File đính kèm

vc_đi chơi

Thành viên hoạt động
Tham gia ngày
21 Tháng chín 2019
Bài viết
109
Được thích
24
Điểm
20
Tuổi
29
1/ File đính kèm như góp ý bài 4.
2/ Muốn lấy link ở Folder nào thì thay đường dẫn vào C2 rồi nhấn nút.
Cám ơn thầy!
Bài đã được tự động gộp:

Dùng thử đoạn code này xem sao?
Mã:
Sub Add_Link()
    Dim xFSO As Object
    Dim xFolder As Object
    Dim xFile As Object
    Dim xPath As String
    Dim I As Integer
    Const fFilter As String = ";.jpg;.gif;.jfif;.png;"
    Range("C5:D" & (Range("D1000").End(xlUp).Row + 1)).Clear
    xPath = ThisWorkbook.Path
    Set xFSO = CreateObject("Scripting.FileSystemObject")
    Set xFolder = xFSO.GetFolder(xPath)
    I = 0
    For Each xFile In xFolder.Files
        If InStrRev(xFile.Name, ".") Then
            If InStr(fFilter, ";" & Right(xFile.Name, Len(xFile.Name) - InStrRev(xFile.Name, ".") + 1) & ";") Then
                I = I + 1
                Cells(I + 4, 3) = I
                ActiveSheet.Hyperlinks.Add Cells(I + 4, 4), xFile.Path, , , Left(xFile.Name, InStrRev(xFile.Name, ".") - 1)
            End If
        End If
    Next
End Sub
Em cám ơn anh!
 

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia ngày
5 Tháng sáu 2008
Bài viết
30,189
Được thích
52,473
Điểm
11,910
Dùng thử đoạn code này xem sao?
Mã:
Sub Add_Link()
    Dim xFSO As Object
    Dim xFolder As Object
    Dim xFile As Object
    Dim xPath As String
    Dim I As Integer
    Const fFilter As String = ";.jpg;.gif;.jfif;.png;"
    Range("C5:D" & (Range("D1000").End(xlUp).Row + 1)).Clear
    xPath = ThisWorkbook.Path
    Set xFSO = CreateObject("Scripting.FileSystemObject")
    Set xFolder = xFSO.GetFolder(xPath)
    I = 0
    For Each xFile In xFolder.Files
        If InStrRev(xFile.Name, ".") Then
            If InStr(fFilter, ";" & Right(xFile.Name, Len(xFile.Name) - InStrRev(xFile.Name, ".") + 1) & ";") Then
                I = I + 1
                Cells(I + 4, 3) = I
                ActiveSheet.Hyperlinks.Add Cells(I + 4, 4), xFile.Path, , , Left(xFile.Name, InStrRev(xFile.Name, ".") - 1)
            End If
        End If
    Next
End Sub
Chỗ này:
Mã:
If InStr(fFilter, ";" & Right(xFile.Name, Len(xFile.Name) - InStrRev(xFile.Name, ".") + 1) & ";")
Thay bằng
Mã:
If InStr(fFilter, ";." & xFSO.GetExtensionName(xFile) & ";") Then
Có được không?
 

vc_đi chơi

Thành viên hoạt động
Tham gia ngày
21 Tháng chín 2019
Bài viết
109
Được thích
24
Điểm
20
Tuổi
29
Dùng thử đoạn code này xem sao?
Mã:
Sub Add_Link()
    Dim xFSO As Object
    Dim xFolder As Object
    Dim xFile As Object
    Dim xPath As String
    Dim I As Integer
    Const fFilter As String = ";.jpg;.gif;.jfif;.png;"
    Range("C5:D" & (Range("D1000").End(xlUp).Row + 1)).Clear
    xPath = ThisWorkbook.Path
    Set xFSO = CreateObject("Scripting.FileSystemObject")
    Set xFolder = xFSO.GetFolder(xPath)
    I = 0
    For Each xFile In xFolder.Files
        If InStrRev(xFile.Name, ".") Then
            If InStr(fFilter, ";" & Right(xFile.Name, Len(xFile.Name) - InStrRev(xFile.Name, ".") + 1) & ";") Then
                I = I + 1
                Cells(I + 4, 3) = I
                ActiveSheet.Hyperlinks.Add Cells(I + 4, 4), xFile.Path, , , Left(xFile.Name, InStrRev(xFile.Name, ".") - 1)
            End If
        End If
    Next
End Sub
Anh ơi, nhờ anh giúp em thêm chút, anh giúp em để có thể khi chọn ô nội dung bức ảnh đó sẽ dẫn đến vị trí bức ảnh đó mà không cần mở luôn file ảnh đó ra.
Em cảm ơn anh!
1111.png
 

giaiphap

Thành viên gạo cội
Tham gia ngày
12 Tháng ba 2007
Bài viết
4,817
Được thích
4,067
Điểm
860
Chỗ này:
Mã:
If InStr(fFilter, ";" & Right(xFile.Name, Len(xFile.Name) - InStrRev(xFile.Name, ".") + 1) & ";")
Thay bằng
Mã:
If InStr(fFilter, ";." & xFSO.GetExtensionName(xFile) & ";") Then
Có được không?
Đã lâu rồi không thấy anh Tuấn (@ndu96081631 ) trở lại.
Anh ơi, nhờ anh giúp em thêm chút, anh giúp em để có thể khi chọn ô nội dung bức ảnh đó sẽ dẫn đến vị trí bức ảnh đó mà không cần mở luôn file ảnh đó ra.
Em cảm ơn anh!
View attachment 229333
Nếu mở đến thư mục đó thì được còn mở và chọn luôn file thì hơi quá sức của tôi.
 

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia ngày
5 Tháng sáu 2008
Bài viết
30,189
Được thích
52,473
Điểm
11,910

vc_đi chơi

Thành viên hoạt động
Tham gia ngày
21 Tháng chín 2019
Bài viết
109
Được thích
24
Điểm
20
Tuổi
29
Đã lâu rồi không thấy anh Tuấn (@ndu96081631 ) trở lại.

Nếu mở đến thư mục đó thì được còn mở và chọn luôn file thì hơi quá sức của tôi.
Ý em là chọn đến file ảnh có nội dung thư mục đó (như hình em đăng bài #10) mà không cần mở trực tiếp file ảnh có nội dung đó ra.
Cám ơn anh!
 

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia ngày
5 Tháng sáu 2008
Bài viết
30,189
Được thích
52,473
Điểm
11,910

vc_đi chơi

Thành viên hoạt động
Tham gia ngày
21 Tháng chín 2019
Bài viết
109
Được thích
24
Điểm
20
Tuổi
29
Thì chính là vậy đó mà (gợi ý ở bài 12)
Em có copy code vào thấy báo lỗi.
Em xin diễn đạt lái ý em cần giúp đỡ:
Em muốn khi chạy code sẽ lấy được tên file để điền vào nội dung trong cột"Nội dung" của excel
Khi chọn ô trong cột "Nội dung" đó sẽ chọn được file ảnh, ở trên thầy đã giúp em mở luôn file ảnh đó ra.
Cảm ơn thầy!
 

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia ngày
5 Tháng sáu 2008
Bài viết
30,189
Được thích
52,473
Điểm
11,910
Em có copy code vào thấy báo lỗi.
Em xin diễn đạt lái ý em cần giúp đỡ:
Em muốn khi chạy code sẽ lấy được tên file để điền vào nội dung trong cột"Nội dung" của excel
Khi chọn ô trong cột "Nội dung" đó sẽ chọn được file ảnh, ở trên thầy đã giúp em mở luôn file ảnh đó ra.
Cảm ơn thầy!
Làm cho bạn luôn đây
1> Code trong module:
Mã:
Sub GetImages()
  Dim oFile As Object
  Dim sPath As String, sExt As String
  Dim idx As Long
  Const IMG_FILTER As String = "/JPG/GIF/JFIF/PNG/"
  'On Error Resume Next
  Range("C5:D1000").Clear
  idx = 4
  sPath = ThisWorkbook.Path
  With CreateObject("Scripting.FileSystemObject")
    For Each oFile In .GetFolder(sPath).Files
      sExt = .GetExtensionName(oFile)
      If InStr(1, IMG_FILTER, "/" & sExt & "/", vbTextCompare) Then
        idx = idx + 1
        Cells(idx, 3) = idx - 4
        Cells(idx, 4) = Left(oFile.Name, Len(oFile.Name) - Len(sExt) - 1)
        Cells(idx, 4).ID = oFile
      End If
    Next
  End With
End Sub
2> Code trong sự kiện SectionChange
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim FSO As Object
  Set FSO = CreateObject("Scripting.FileSystemObject")
  'On Error Resume Next
  If Not Intersect(Range("D5:D1000"), Target) Is Nothing Then
    If Target.Count = 1 Then
      If FSO.FileExists(Target.ID) Then Shell "Explorer.exe /Select, " & """" & Target.ID & """", 1
    End If
  End If
End Sub
 

File đính kèm

vc_đi chơi

Thành viên hoạt động
Tham gia ngày
21 Tháng chín 2019
Bài viết
109
Được thích
24
Điểm
20
Tuổi
29
Làm cho bạn luôn đây
1> Code trong module:
Mã:
Sub GetImages()
  Dim oFile As Object
  Dim sPath As String, sExt As String
  Dim idx As Long
  Const IMG_FILTER As String = "/JPG/GIF/JFIF/PNG/"
  'On Error Resume Next
  Range("C5:D1000").Clear
  idx = 4
  sPath = ThisWorkbook.Path
  With CreateObject("Scripting.FileSystemObject")
    For Each oFile In .GetFolder(sPath).Files
      sExt = .GetExtensionName(oFile)
      If InStr(1, IMG_FILTER, "/" & sExt & "/", vbTextCompare) Then
        idx = idx + 1
        Cells(idx, 3) = idx - 4
        Cells(idx, 4) = Left(oFile.Name, Len(oFile.Name) - Len(sExt) - 1)
        Cells(idx, 4).ID = oFile
      End If
    Next
  End With
End Sub
2> Code trong sự kiện SectionChange
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim FSO As Object
  Set FSO = CreateObject("Scripting.FileSystemObject")
  'On Error Resume Next
  If Not Intersect(Range("D5:D1000"), Target) Is Nothing Then
    If Target.Count = 1 Then
      If FSO.FileExists(Target.ID) Then Shell "Explorer.exe /Select, " & """" & Target.ID & """", 1
    End If
  End If
End Sub
Em cám ơn thầy!
Em chạy code thầy giúp thì đã lấy được tên nội dung file ảnh, nhưng làm thế nào có thể chọn nội dung đó trong excel để chọn được file ảnh tương ứng với nội dung đó ạ! (clik vào ô chứa nội dung trong excel sẽ chọn được file ảnh có nội dung tương ứng)
 

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia ngày
5 Tháng sáu 2008
Bài viết
30,189
Được thích
52,473
Điểm
11,910
Em cám ơn thầy!
Em chạy code thầy giúp thì đã lấy được tên nội dung file ảnh, nhưng làm thế nào có thể chọn nội dung đó trong excel để chọn được file ảnh tương ứng với nội dung đó ạ! (clik vào ô chứa nội dung trong excel sẽ chọn được file ảnh có nội dung tương ứng)
Sao bạn không click thử?
Yêu cầu là file Excel và các file ảnh phải nằm cùng thư mục
 

Kieutri

Thành viên hoạt động
Tham gia ngày
20 Tháng bảy 2018
Bài viết
137
Được thích
16
Điểm
170
Tuổi
35
Làm cho bạn luôn đây
1> Code trong module:
Mã:
Sub GetImages()
  Dim oFile As Object
  Dim sPath As String, sExt As String
  Dim idx As Long
  Const IMG_FILTER As String = "/JPG/GIF/JFIF/PNG/"
  'On Error Resume Next
  Range("C5:D1000").Clear
  idx = 4
  sPath = ThisWorkbook.Path
  With CreateObject("Scripting.FileSystemObject")
    For Each oFile In .GetFolder(sPath).Files
      sExt = .GetExtensionName(oFile)
      If InStr(1, IMG_FILTER, "/" & sExt & "/", vbTextCompare) Then
        idx = idx + 1
        Cells(idx, 3) = idx - 4
        Cells(idx, 4) = Left(oFile.Name, Len(oFile.Name) - Len(sExt) - 1)
        Cells(idx, 4).ID = oFile
      End If
    Next
  End With
End Sub
2> Code trong sự kiện SectionChange
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim FSO As Object
  Set FSO = CreateObject("Scripting.FileSystemObject")
  'On Error Resume Next
  If Not Intersect(Range("D5:D1000"), Target) Is Nothing Then
    If Target.Count = 1 Then
      If FSO.FileExists(Target.ID) Then Shell "Explorer.exe /Select, " & """" & Target.ID & """", 1
    End If
  End If
End Sub
Thật tuyệt vời quá anh ơi, cảm ơn anh nhiều. Nhưng tìm được tên có cách nào ảnh đó hiện lên luôn không anh nhỉ? Ý em là hiện cả ảnh lên được không ạ.
 
Lần chỉnh sửa cuối:
Top Bottom