Click vào nút Shapes tự động liệt kê tên sheet vào cột B từ B2 trở đi, nếu đã lấy tên sheet rồi mà chạy tiếp Macro nó sẽ liệt kê tên sheet 1 lần nữa do đó để lấy tên sheet cho chính xác thì xóa dữ liệu trong vùng từ B2 trở xuống rồi chạy lại Macro.
Trong File tôi mới tạo liệt kê tên sheet, chưa có thời gian nên chưa bổ sung phần tạo link đến các sheet, trong File có Link là do làm tay, các bạn đừng thắc mắc tại sao File thấy có Link mà chạy Macro lại không thấy hiện Link. Trong File tôi không khóa Code.

Lưu ý:
Tên sheeet có tên LietKeTenSheet nếu muốn sửa lại tên thì nên gõ không dấu và Copy tên sheet và Paste thay thay LietKeTenSheet trong câu lệnh.
Set sh = ThisWorkbook.Sheets("LietKeTenSheet")

Thành:
Set sh = ThisWorkbook.Sheets("thaytensheet")