Gán code điều hướng vào shapes

Liên hệ QC

NoDiNaDu

Thành viên hoạt động
Tham gia
25/5/17
Bài viết
120
Được thích
46
Giới tính
Nam
Xin chào mọi người, chúc mọi người ngày mới sức khỏe ạ.
Hiện em đang làm 1 file excel tổng hợp, dùng cho mục đích cá nhân. File này có chứa đường dẫn tới các file dữ liệu phục vụ cho công việc của em. Mục đích của file là để mở nhanh các file, ổ cho thuận tiện cho cá nhân sử dụng thôi ạ. Việc gán các liên kết file thì em làm được rồi, tuy nhiên, hiện em muốn dùng nút mũi tên để mở file thay vì hiện đường dẫn Hyperlink ấy ạ, để trông cho gọn chút. Mong mọi người giúp đỡ em với ạ.
Em xin phép mô tả về file của em như sau:
File gồm 1 Sheet menu và các file con của nó. Trong sheet Menu sẽ có: Cột A là tên của các Sheet con, Cột B chứa Data List tương ứng với từng nội dung của các sheet. Cột C là đường dẫn đến File (Folder) mỗi khi thay đổi giá trị data list ở cột B.
Giờ em muốn ở cột D có một mũi tên điều hướng gán với cột C, tức là khi em thay giá trị ở cột B, mũi tên ở Cột D sẽ nhận link tương ứng ở cột C và chỉ cần Click vào đó là sẽ mở được File, Folder vừa thay đổi.
Khả năng diễn đạt của em hơi kém, em xin phép gửi file đó lên đây, mong mọi người giúp em với ạ. Em xin cảm ơn ạ.
 

File đính kèm

  • File_Tong(test).xlsx
    65.2 KB · Đọc: 19
Kính nhờ các bác, các chú, các anh, các bạn nếu có thể giúp em file này với ạ. Em xin cảm ơn.
 
Upvote 0
Hiện em đang làm 1 file excel tổng hợp, dùng cho mục đích cá nhân. File này có chứa đường dẫn tới các file dữ liệu phục vụ cho công việc của em. Mục đích của file là để mở nhanh các file, ổ cho thuận tiện cho cá nhân sử dụng thôi ạ. Việc gán các liên kết file thì em làm được rồi, tuy nhiên, hiện em muốn dùng nút mũi tên để mở file thay vì hiện đường dẫn Hyperlink ấy ạ, để trông cho gọn chút. Mong mọi người giúp đỡ em với ạ.

Bạn dùng Shell32.dll thông qua COM object là "Shell.Application".

Mã:
Call CreateObject("Shell.Application").ShellExecute("C:\Temp\File_Tong(test).xlsx")

Thế chuỗi đường dẫn file thành đường dẫn lấy trong Cell.
 
Upvote 0
Bạn dùng Shell32.dll thông qua COM object là "Shell.Application".

Mã:
Call CreateObject("Shell.Application").ShellExecute("C:\Temp\File_Tong(test).xlsx")

Thế chuỗi đường dẫn file thành đường dẫn lấy trong Cell.
Em xin lỗi vì làm phiền đến anh, tuy nhiên trình độ của em rất hạn chế và gà mờ về cái này, nên anh có thể vui lòng hộ em vào file excel, để em có thể học trực tiếp được không ạ. Mong anh giúp đỡ ạ.
 
Upvote 0
Em xin lỗi vì làm phiền đến anh, tuy nhiên trình độ của em rất hạn chế và gà mờ về cái này, nên anh có thể vui lòng hộ em vào file excel, để em có thể học trực tiếp được không ạ. Mong anh giúp đỡ ạ.
Bạn xem file đính kèm. Tôi chỉ làm cơ bản thôi nhé. Muốn gọn hơn thì phải viết class để tự động gán code cho các Shape mũi tên, cái đó thì cho qua nhé :D :D .
 

File đính kèm

  • File_Tong(test).xlsm
    71.7 KB · Đọc: 11
Upvote 0
Xin chào mọi người, chúc mọi người ngày mới sức khỏe ạ.
Hiện em đang làm 1 file excel tổng hợp, dùng cho mục đích cá nhân. File này có chứa đường dẫn tới các file dữ liệu phục vụ cho công việc của em. Mục đích của file là để mở nhanh các file, ổ cho thuận tiện cho cá nhân sử dụng thôi ạ. Việc gán các liên kết file thì em làm được rồi, tuy nhiên, hiện em muốn dùng nút mũi tên để mở file thay vì hiện đường dẫn Hyperlink ấy ạ, để trông cho gọn chút. Mong mọi người giúp đỡ em với ạ.
Em xin phép mô tả về file của em như sau:
File gồm 1 Sheet menu và các file con của nó. Trong sheet Menu sẽ có: Cột A là tên của các Sheet con, Cột B chứa Data List tương ứng với từng nội dung của các sheet. Cột C là đường dẫn đến File (Folder) mỗi khi thay đổi giá trị data list ở cột B.
Giờ em muốn ở cột D có một mũi tên điều hướng gán với cột C, tức là khi em thay giá trị ở cột B, mũi tên ở Cột D sẽ nhận link tương ứng ở cột C và chỉ cần Click vào đó là sẽ mở được File, Folder vừa thay đổi.
Khả năng diễn đạt của em hơi kém, em xin phép gửi file đó lên đây, mong mọi người giúp em với ạ. Em xin cảm ơn ạ.
Mượn code ở #5 của @ongke0711 và sửa thêm chút nhé.
Mã:
Function openFile(sFilePath As String) As Boolean
On Error GoTo EH
    openFile = True
    Call CreateObject("Shell.Application").ShellExecute(sFilePath)
    Exit Function
EH:
    openFile = False
    MsgBox "Err Num: " & Err.Number & vbNewLine & "Err content: " & Err.Description
End Function

Sub Open_Clik()
    Dim aLink As String, Rng As Range
    aLink = Application.Caller
    With Sheet2
        Set Rng = .Cells(.Shapes(aLink).TopLeftCell.Row, .Shapes(aLink).TopLeftCell.Column).Offset(, -1)
        openFile Rng.Value
    End With
End Sub
 
Upvote 0
Xin chào mọi người, chúc mọi người ngày mới sức khỏe ạ.
Hiện em đang làm 1 file excel tổng hợp, dùng cho mục đích cá nhân. File này có chứa đường dẫn tới các file dữ liệu phục vụ cho công việc của em. Mục đích của file là để mở nhanh các file, ổ cho thuận tiện cho cá nhân sử dụng thôi ạ. Việc gán các liên kết file thì em làm được rồi, tuy nhiên, hiện em muốn dùng nút mũi tên để mở file thay vì hiện đường dẫn Hyperlink ấy ạ, để trông cho gọn chút. Mong mọi người giúp đỡ em với ạ.
Em xin phép mô tả về file của em như sau:
File gồm 1 Sheet menu và các file con của nó. Trong sheet Menu sẽ có: Cột A là tên của các Sheet con, Cột B chứa Data List tương ứng với từng nội dung của các sheet. Cột C là đường dẫn đến File (Folder) mỗi khi thay đổi giá trị data list ở cột B.
Giờ em muốn ở cột D có một mũi tên điều hướng gán với cột C, tức là khi em thay giá trị ở cột B, mũi tên ở Cột D sẽ nhận link tương ứng ở cột C và chỉ cần Click vào đó là sẽ mở được File, Folder vừa thay đổi.
Khả năng diễn đạt của em hơi kém, em xin phép gửi file đó lên đây, mong mọi người giúp em với ạ. Em xin cảm ơn ạ.
Vào mục tìm kiếm và gõ từ khóa Tự động tạo HyperLink thì sẽ được nhiều bài viết chứa Code. Trong một số bài viết có chứa Code mở Folder, bạn chỉ việc gõ tên File hay bất kỳ tên gợi nhớ nào đó vào 1 Cell sau đó chạy Code thì nó cho phép chọn bất kỳ Folder để mở ra và chon File cần tạo HyperLink nhấn OK thì sẽ được Liên kết, muốn mở File nào chỉ việc Click vào Cell đó để mở File
 
Upvote 0
Vào mục tìm kiếm và gõ từ khóa Tự động tạo HyperLink thì sẽ được nhiều bài viết chứa Code. Trong một số bài viết có chứa Code mở Folder, bạn chỉ việc gõ tên File hay bất kỳ tên gợi nhớ nào đó vào 1 Cell sau đó chạy Code thì nó cho phép chọn bất kỳ Folder để mở ra và chon File cần tạo HyperLink nhấn OK thì sẽ được Liên kết, muốn mở File nào chỉ việc Click vào Cell đó để mở File
Dạ thưa thầy, mục tự tạo hyperlink thì em có tham khảo của các anh, các chú trên diễn đàn và tạo được rồi ạ.
Bài đã được tự động gộp:

Mượn code ở #5 của @ongke0711 và sửa thêm chút nhé.
Mã:
Function openFile(sFilePath As String) As Boolean
On Error GoTo EH
    openFile = True
    Call CreateObject("Shell.Application").ShellExecute(sFilePath)
    Exit Function
EH:
    openFile = False
    MsgBox "Err Num: " & Err.Number & vbNewLine & "Err content: " & Err.Description
End Function

Sub Open_Clik()
    Dim aLink As String, Rng As Range
    aLink = Application.Caller
    With Sheet2
        Set Rng = .Cells(.Shapes(aLink).TopLeftCell.Row, .Shapes(aLink).TopLeftCell.Column).Offset(, -1)
        openFile Rng.Value
    End With
End Sub
Bạn xem file đính kèm. Tôi chỉ làm cơ bản thôi nhé. Muốn gọn hơn thì phải viết class để tự động gán code cho các Shape mũi tên, cái đó thì cho qua nhé :D :D .
Hai anh cho em nhờ chút ạ. Khi em thay đường hyperlink ở ô C2 và bấm click ở ô D2, thì code báo lỗi như hình. Mong 2 anh giúp em với ạ.1656030466501.png
 

File đính kèm

  • File_Tong(test) code A Giai-phap.xlsm
    72.1 KB · Đọc: 2
  • File_Tong(test) code a Ongke.xlsm
    73.4 KB · Đọc: 2
Upvote 0
Dạ thưa thầy, mục tự tạo hyperlink thì em có tham khảo của các anh, các chú trên diễn đàn và tạo được rồi ạ.
Bài đã được tự động gộp:



Hai anh cho em nhờ chút ạ. Khi em thay đường hyperlink ở ô C2 và bấm click ở ô D2, thì code báo lỗi như hình. Mong 2 anh giúp em với ạ.View attachment 277806
Bạn mô tả chi tiết hơn vấn đề của mình đi, ví dụ khi Click vào nút mũi tên ở ô D2 thì bạn muốn nó làm cái gì? Theo tôi hiểu thì mở file có tên là 1, mà file có tên 1 là lại không có đường dẫn cụ thể và tên file phải có đầy đủ chi tiết phần mở rộng (Ví dụ 1.xlsx, 1.docx, 1.jpg...), vậy để được hổ trợ bạn phải mô thật chi tiết vấn đề mình cần.
 
Upvote 0
Bạn mô tả chi tiết hơn vấn đề của mình đi, ví dụ khi Click vào nút mũi tên ở ô D2 thì bạn muốn nó làm cái gì? Theo tôi hiểu thì mở file có tên là 1, mà file có tên 1 là lại không có đường dẫn cụ thể và tên file phải có đầy đủ chi tiết phần mở rộng (Ví dụ 1.xlsx, 1.docx, 1.jpg...), vậy để được hổ trợ bạn phải mô thật chi tiết vấn đề mình cần.
Dạ. Em xin miêu tả cụ thể ạ. Anh xem ảnh và file hộ em ạ. Em xin cảm ơn.1656055395411.png
 

File đính kèm

  • File_Tong(test) code A Giai-phap.xlsm
    72.5 KB · Đọc: 3
Upvote 0
Dạ thưa thầy, mục tự tạo hyperlink thì em có tham khảo của các anh, các chú trên diễn đàn và tạo được rồi ạ.
Bài đã được tự động gộp:



Hai anh cho em nhờ chút ạ. Khi em thay đường hyperlink ở ô C2 và bấm click ở ô D2, thì code báo lỗi như hình. Mong 2 anh giúp em với ạ.View attachment 277806
Sao phải làm rườm rà thế.
1/ Không nên sử dụng nhiều Shapes (như cột D) vì nó sẽ tăng dung lượng File và có thể sẽ phình to File lên bất thường.
2/ Như góp ý ở bài 8 tôi có nêu "Chỉ việc gõ tên File hay bất kỳ tên gợi nhớ nào đó". Có nghĩa là chỉ sử dụng cột B và gõ tên File hay một tên bất kỳ nào bạn muốn vào Cell bất kỳ và chạy Code chọn File thì nó sẽ tự tạo HyperLink mà không cần Copy đường dẫn gán cho Shapes sẽ tốn nhiều công sức và khi chứa nhiều Shapes thì nó sẽ tăng dung lượng File không đáng có
 
Upvote 0
Web KT
Back
Top Bottom