Lấy danh sách tên các Sheet từ file excel

Liên hệ QC

xuanhoa7604

Thành viên hoạt động
Tham gia
9/6/08
Bài viết
169
Được thích
82
Nghề nghiệp
Giáo viên
Bác nào biết cách lấy tên các sheet của một file excel (bằng VBA) mà không cần mở file đó không xin chỉ giáo? Xin cảm ơn trước!
 
cho mình hỏi là: Hiện tại mình có một workbook gồm 8 sheet, bây giờ mình muốn lấy tên của 7 sheet đầu tiên trong workbook đó để nhập vào một cột trong sheet thứ 8. vậy mình phải làm thê nào. xin mọi người giải đáp giúp ....
 
Upvote 0
cho mình hỏi là: Hiện tại mình có một workbook gồm 8 sheet, bây giờ mình muốn lấy tên của 7 sheet đầu tiên trong workbook đó để nhập vào một cột trong sheet thứ 8. vậy mình phải làm thê nào. xin mọi người giải đáp giúp ....

Có phải sheet8 ở sau cùng 7 sheet ? Nếu đúng thế thì dùng code sau:

Mã:
Sub Test()
For i = 1 To 7
  Sheet8.Cells(i, 1) = Sheets(i).Name
Next i

End Sub
 
Upvote 0
Xin sửa lại code trên để có thể chạy trên Excel 2007
PHP:
Private Sub cmdSelDir_Click()
  On Error GoTo Thoat
  lstWB.Clear
  With Application.FileDialog(4)
    .AllowMultiSelect = False: .Show
    txtUserDir = .SelectedItems(1)
  End With
Thoat:
End Sub
PHP:
Private Sub txtUserDir_Change()
  Dim Temp As String, fN
  On Error Resume Next
  With CreateObject("Scripting.FileSystemObject")
    For Each fN In .GetFolder(txtUserDir).Files
      If InStr(Right(fN.Name, 5), ".xls") Then
        Temp = Temp & Chr(10) & fN.Name
      End If
    Next
  End With
  lstWB.List() = Split(Mid(Temp, 2, Len(Temp)), Chr(10))
End Sub
PHP:
Private Sub lstWB_Click()
  Dim objConn As ADODB.Connection, objCat As ADOX.Catalog, tbl As ADOX.Table, Temp As String
  On Error Resume Next
  lstWS.Clear
  Set objConn = New ADODB.Connection
  objConn.Open "Provider=MSDASQL.1;Data Source=Excel Files; Initial Catalog=" & txtUserDir & "\" & lstWB
  Set objCat = New ADOX.Catalog
  Set objCat.ActiveConnection = objConn
  For Each tbl In objCat.Tables
    If Right(tbl.Name, 1) = "$" Or Right(tbl.Name, 2) = "$'" Then
      Temp = Temp & Chr(10) & Replace(Replace(tbl.Name, "$", ""), "'", "")
    End If
  Next tbl
  lstWS.List() = Split(Mid(Temp, 2, Len(Temp)), Chr(10))
  objConn.Close
End Sub
Bỏ UDF luôn
anh cho em hỏi .em có 1 file n sheet con-1 sheet tổng hợp . bây giờ em muốn lấy tất cả tên các sheet n vào sheet tổng hợp thì code như thế nào. bây giờ mới đụng chuyện này đây.chú ý không dùng vòng lặp như code của hai lúa bên dưới
 
Upvote 0
anh cho em hỏi .em có 1 file n sheet con-1 sheet tổng hợp . bây giờ em muốn lấy tất cả tên các sheet n vào sheet tổng hợp thì code như thế nào. bây giờ mới đụng chuyện này đây.chú ý không dùng vòng lặp như code của hai lúa bên dưới

Theo mình biết thì phải dùng vòng lặp để lấy, dù dùng ADO, DAO hay mở file dạng ẩn để lấy. Nếu không dùng vòng lặp để lấy tên bảng thì các bảng đó ở file access.
 
Upvote 0
theo mình biết thì phải dùng vòng lặp để lấy, dù dùng ado, dao hay mở file dạng ẩn để lấy. Nếu không dùng vòng lặp để lấy tên bảng thì các bảng đó ở file access.
dùng for next thì mình tự làm được . Cứ tưởng ko dùng vòng lặp vẫn làm được.
PHP:
sub get_wsname()
dim ws as worksheet
sheets("tonghop").range("a1:a1000").clear
for each ws in worksheets
if ws.name <> "tonghop" then
sheets("tonghop").[a1000].end(3).offset(1, 0).value = ws.name
end if
  next
end sub
 
Upvote 0
Chào Anh Tuấn em một macro ứng dụng code lấy sheet name ở trên nhưng nó chỉ lấy được tên sheet các file excel phiên bản cũ như xls còn file xlsx phiên bản 2010 trở lên khi click vào file list bên phải không hiện ra tên các sheet . Nhờ anh giúp đỡ em cái này . Cảm ơn anh rất nhiều email của em là noidat78@gmail.com
 
Upvote 0
Nhờ các bác sửa code giùm ở bài #10, em muốn lấy kết quả tên file và sheet tương ứng đang đóng trong cùng 1 folder nhưng xuất chi tiết ra file excel tên file và tên sheet luôn!
Chân thành cảm ơn
 
Upvote 0
unction GetSheetsNames(WBName As String) As Collection
'Vao menu Tools\References va check cac muc:
'-Microsoft ActiveX Data Object X.X Library
'-Microsoft ADO Ext. X.X for DLL and Security
Dim objConn As ADODB.Connection, objCat As ADOX.Catalog, Col As New Collection, tbl As ADOX.Table
Dim sConnString As String
sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & WBName & ";" & "Extended Properties=Excel 8.0;"
Set objConn = New ADODB.Connection
objConn.Open sConnString (Khi chạy Macro bị lỗi ngay dòng này nhờ mấy bạn giúp)
Set objCat = New ADOX.Catalog
Set objCat.ActiveConnection = objConn
For Each tbl In objCat.Tables
sSheet = tbl.Name
sSheet = Application.Substitute(sSheet, "'", "")
sSheet = Left(sSheet, InStr(1, sSheet, "$", 1) - 1)
On Error Resume Next
Col.Add sSheet, sSheet
On Error GoTo 0
Next tbl
Set GetSheetsNames = Col
objConn.Close
Set objCat = Nothing
Set objConn = Nothing
End Function

Mình đã sử dụng đoạn code sao; khi thực hiện chạy thì báo lỗi "Run time error' - 2147467259(80004005)"
mình đã thêm các mục như đã hướng dẫn
 
Upvote 0
Web KT

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

Back
Top Bottom