• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Hỏi cách liệt kê tên sheet hiện có trong workbook của Excel

Nơi trao đổi về VBA (Visual Basic for Application), lập trình cho ứng dụng Microsoft Office, AutoCAD...

Moderator: tungblt

User avatar
vietteiv
Quản trị
Quản trị
Posts: 1325
Joined: Sat 10/02/2007 12:17 am
Location: Cung cấp giải pháp quản lý doanh nghiệp, dự án, tư vấn xây dựng
Has thanked: 6 times
Been thanked: 71 times
Contact:

Hỏi cách liệt kê tên sheet hiện có trong workbook của Excel

Postby vietteiv » Wed 29/12/2010 11:34 am

ai biết cách liệt kê tên sheet (phần name đã đổi, chứ ko phải tên mặc định) hiện có trong workbook ko?
nếu làm thủ công thì có thể thêm ghi chú cho sheet, ko biết khi add tự động thì làm bằng cách nào. không thấy thuộc tính tag cho sheet nhỉ :-?



User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Hỏi cách liệt kê tên sheet của Excel vào listbox

Postby truongphu » Wed 29/12/2010 12:01 pm

vietteiv wrote:liệt kê tên sheet (phần name đã đổi,

vietteiv wrote:nếu làm thủ công thì có thể thêm ghi chú cho sheet, ko biết khi add tự động thì làm bằng cách nào

  1. Private Sub CommandButton1_Click()
  2. For i = 1 To ActiveWorkbook.Worksheets.Count
  3.     ActiveWorkbook.Worksheets(i).Select
  4.     MsgBox ActiveSheet.Name ' tên Sheet
  5. Next
  6. ActiveWorkbook.Worksheets(1).Select
  7. ActiveSheet.Name = "WoW- Ðây là Sheet chú ý" ' Ðôi tên Sheet
  8. End Sub


vietteiv wrote:không thấy thuộc tính tag cho sheet nhỉ

sheet không tag. Ghi chú vào name
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
vietteiv
Quản trị
Quản trị
Posts: 1325
Joined: Sat 10/02/2007 12:17 am
Location: Cung cấp giải pháp quản lý doanh nghiệp, dự án, tư vấn xây dựng
Has thanked: 6 times
Been thanked: 71 times
Contact:

Re: Hỏi cách liệt kê tên sheet của Excel vào listbox

Postby vietteiv » Wed 29/12/2010 12:22 pm

cảm ơn bác truongphu đã trả lời
nhưng cách này không ổn rồi. hiện trong workbook có 60 sheet. khi code chạy vòng for thì nó duyệt lần lượt qua 60 sheet đó... nhìn chóng mặt thật :D
có cách nào lấy name mà ko cần phải select hoặc cho nó chạy ẩn ko bác?

User avatar
vietteiv
Quản trị
Quản trị
Posts: 1325
Joined: Sat 10/02/2007 12:17 am
Location: Cung cấp giải pháp quản lý doanh nghiệp, dự án, tư vấn xây dựng
Has thanked: 6 times
Been thanked: 71 times
Contact:

Re: Hỏi cách liệt kê tên sheet của Excel vào listbox

Postby vietteiv » Wed 29/12/2010 12:55 pm

hic đã tìm được rồi, chưa ăn cơm trưa đói quá :((
  1. Sub CreateTOC()
  2.     'Declare all variables
  3.    Dim ws As Worksheet, curws As Worksheet, shtName As String
  4.     Dim nRow As Long, i As Long, N As Long, x As Long, tmpCount As Long
  5.     Dim cLeft, cTop, cHeight, cWidth, cb As Shape, strMsg As String
  6.     Dim cCnt As Long, cAddy As String, cShade As Long
  7.     'Check if a workbook is open or not.  If no workbook is open, quit.
  8.    If ActiveWorkbook Is Nothing Then
  9.         MsgBox "You must have a workbook open first!", vbInformation, "No Open Book"
  10.         Exit Sub
  11.     End If
  12. '-------------------------------------------------------------------------------
  13.    cShade = 37 '<<== SET BACKGROUND COLOR DESIRED HERE
  14. '-------------------------------------------------------------------------------
  15.    'Turn off events and screen flickering.
  16.    Application.ScreenUpdating = False
  17.     Application.DisplayAlerts = False
  18.     nRow = 4: x = 0
  19.     'Check if sheet exists already; direct where to go if not.
  20.    On Error GoTo hasSheet
  21.     Sheets("TOC").Activate
  22.     'Confirm the desire to overwrite sheet if it exists already.
  23.    If MsgBox("You already have a Table of Contents page.  Would you like to overwrite it?", _
  24.     vbYesNo + vbQuestion, "Replace TOC page?") = vbYes Then GoTo createNew
  25.     Exit Sub
  26. hasSheet:
  27.     x = 1
  28.     'Add sheet as the first sheet in the workbook.
  29.    Sheets.Add before:=Sheets(1)
  30.     GoTo hasNew
  31. createNew:
  32.     Sheets("TOC").Delete
  33.     GoTo hasSheet
  34. hasNew:
  35.     'Reset error statment/redirects
  36.    On Error GoTo 0
  37.     'Set chart sheet varible counter
  38.    tmpCount = ActiveWorkbook.Charts.Count
  39.     If tmpCount > 0 Then tmpCount = 1
  40.     'Set a little formatting for the TOC sheet.
  41.    ActiveSheet.Name = "TOC"
  42.     With Sheets("TOC")
  43.         .Cells.Interior.ColorIndex = cShade
  44.         .Rows("4:65536").RowHeight = 16
  45.         .Range("A1").Value = "Designed by VBAX"
  46.         .Range("A1").Font.Bold = False
  47.         .Range("A1").Font.Italic = True
  48.         .Range("A1").Font.Name = "Arial"
  49.         .Range("A1").Font.Size = "8"
  50.         .Range("A2").Value = "Table of Contents"
  51.         .Range("A2").Font.Bold = True
  52.         .Range("A2").Font.Name = "Arial"
  53.         .Range("A2").Font.Size = "24"
  54.         .Range("A4").Select
  55.     End With
  56.     'Set variables for loop/iterations
  57.    N = ActiveWorkbook.Sheets.Count + tmpCount
  58.     If x = 1 Then N = N - 1
  59.     For i = 2 To N
  60.         With Sheets("TOC")
  61.             'Check if sheet is a chart sheet.
  62.            If IsChart(Sheets(i).Name) Then
  63.         '** Sheet IS a Chart Sheet
  64.                cCnt = cCnt + 1
  65.                 shtName = Charts(cCnt).Name
  66.                 .Range("C" & nRow).Value = shtName
  67.                 .Range("C" & nRow).Font.ColorIndex = cShade
  68.                 'Set variables for button dimensions.
  69.                cLeft = .Range("C" & nRow).Left
  70.                 cTop = .Range("C" & nRow).Top
  71.                 cWidth = .Range("C" & nRow).Width
  72.                 cHeight = .Range("C" & nRow).RowHeight
  73.                 cAddy = "R" & nRow & "C3"
  74.                 'Add button to cell dimensions.
  75.                Set cb = .Shapes.AddShape(msoShapeRoundedRectangle, _
  76.                     cLeft, cTop, cWidth, cHeight)
  77.                 cb.Select
  78.                 'Use older technique to add Chart sheet name to button text.
  79.                ExecuteExcel4Macro "FORMULA(""=" & cAddy & """)"
  80.                 'Format shape to look like hyperlink and match background color (transparent).
  81.                With Selection
  82.                     .ShapeRange.Fill.ForeColor.SchemeColor = 0
  83.                     With .Font
  84.                         .Underline = xlUnderlineStyleSingle
  85.                         .ColorIndex = 5
  86.                     End With
  87.                     .ShapeRange.Fill.Visible = msoFalse
  88.                     .ShapeRange.Line.Visible = msoFalse
  89.                     .OnAction = "Mod_Main.GotoChart"
  90.                 End With
  91.             Else
  92.         '** Sheet is NOT a Chart sheet.
  93.                shtName = Sheets(i).Name
  94.                 'Add a hyperlink to A1 of each sheet.
  95.                .Range("C" & nRow).Hyperlinks.Add _
  96.                     Anchor:=.Range("C" & nRow), Address:="#'" & _
  97.                     shtName & "'!A1", TextToDisplay:=shtName
  98.                 .Range("C" & nRow).HorizontalAlignment = xlLeft
  99.             End If
  100.             .Range("B" & nRow).Value = nRow - 2
  101.             nRow = nRow + 1
  102.         End With
  103. continueLoop:
  104.     Next i
  105.     'Perform some last minute formatting.
  106.    With Sheets("TOC")
  107.         .Range("C:C").EntireColumn.AutoFit
  108.         .Range("A4").Activate
  109.     End With
  110.     'Turn events back on.
  111.    Application.DisplayAlerts = True
  112.     Application.ScreenUpdating = True
  113.     strMsg = vbNewLine & vbNewLine & "Please note: " & _
  114.         "Charts will have hyperlinks associated with an object."
  115.     'Toggle message box for chart existence or not, information only.
  116.    If cCnt = 0 Then strMsg = ""
  117.     MsgBox "Complete!" & strMsg, vbInformation, "Complete!"
  118. End Sub
Attachments
CreateTOCex.zip
(20.98 KiB) Downloaded 306 times


Return to “Visual Basic for Application (VBA)”

Who is online

Users browsing this forum: No registered users and 1 guest