Pls xóa Styles!

Liên hệ QC

ThuNghi

Hãy cho rồi sẽ nhận!
Thành viên đã mất
Tham gia
16/8/06
Bài viết
3,808
Được thích
4,449
Tôi có file excel, đã dùng Asap xóa hết các name, các stytle nhưng còn nhhững style sau không xóa được. Cứ xóa xong, mở lên lại có lại.
Nhờ các bạn chỉ giúp xóa hết các style theo hình sau. Nếu có thể cho biết nguyên nhân.
Cám ơn nhiều!
http://i439.photobucket.com/albums/qq119/anhtuan_ngh/Styles.jpg
Xin gởi file kèm, các bạn xem thử mấy cái style đó là gì. Không thể là virus. File không có số liệu.

Không ai giúp tôi cả, file toi làm trong 1 tháng có sh nhiều nhất là 300 dòng mà lên tới 4M. Chả hiểu sao!
Xin cám ơn!
 

File đính kèm

  • ManyStyles.rar
    40.9 KB · Đọc: 45
Chỉnh sửa lần cuối bởi điều hành viên:
Cũng muốn giúp bác lắm để có dịp đi Hòn Đất, nhưng mà mở cái file của bác ra, hổng biết phải làm gì với nó... File nhẹ tênh, có 622KB... Thấy nó có Style gì đâu ?
Bác dùng ASAP Ultilities
Chọn mục 4. - 19. Remove all unsed styles on every sheet thử xem.
Nó sẽ thông báo ngay còn bao nhiêu style chưa chết.
 
Chị Thư ơi, 32 sheet trắng 500K cũng đâu có bự lắm?, còn về style:
- có 2 style tàu không xoá được. Có thể là hậu quả của virus
- các style còn lại là khoảng 40 do office 2007 tạo ra cho bất kỳ 1 file mới nào.
 
Chị Thư ơi, 32 sheet trắng 500K cũng đâu có bự lắm?, còn về style:
- có 2 style tàu không xoá được. Có thể là hậu quả của virus
- các style còn lại là khoảng 40 do office 2007 tạo ra cho bất kỳ 1 file mới nào.
Bác này chuyển hệ em hả. Cơ bản là xóa đi mà, thấy khó chịu thế nào. Em có thể làm 1 file 32 sh mà dung lượng # < 100 K. Nó thế nào ấy. Em dùng 2003 liên quan gì 2007.
 
Chị Thư ơi, 32 sheet trắng 500K cũng đâu có bự lắm?, còn về style:
- có 2 style tàu không xoá được. Có thể là hậu quả của virus
- các style còn lại là khoảng 40 do office 2007 tạo ra cho bất kỳ 1 file mới nào.

Em cũng đã kiểm tra cũng nhận thấy giống Bác ptm0412.


Lê Văn Duyệt
 
Thì DS những style đã xoá (bằng ASAP) chính là DS style của Excel 2007 mà? Chuyển hệ là do nick ngoiquanuongbia chuyển đấy chứ.
 
Cứ xóa xong, mở lên lại có lại.
Mình xoá xong chỉ còn 3 style: 2 style tàu và 1 style normal mặc định, đóng lại mở lên đâu thấy nó đẻ đâu.
Vậy Chị, ý quên, Thu Nghi làm vầy:
- kiểm tra xem có file template .xlt nào khác ngoài Normal.xlt trong thư mục C:\Documents and Settings\<user>\Templates hoặc C:\Documents and Settings\<user>\Application Data\Microsoft\Templates thì xoá đi.
- Nếu không được thì xoá luôn Normal.xlt
 
Để test em làm cái này:
Mã:
Sub DeleteStyle()
    Dim i As Long, lStylesCount As Long, lExportRow As Long
    Dim lWorksheets As Long

    'Reset all style
    lWorksheets = ThisWorkbook.Worksheets.Count
    For i = 1 To lWorksheets
        ThisWorkbook.Worksheets(i).Cells.Style = "Normal"
    Next i
    lStylesCount = ThisWorkbook.Styles.Count

    MsgBox "So style trong Workbook nay la: " & lStylesCount
    On Error Resume Next
    'Clear first
    ThisWorkbook.Worksheets("ERROR").Cells.Clear
    For i = 1 To lStylesCount
        ThisWorkbook.Styles(i).Delete
        If Err.Number <> 0 Then
            With ThisWorkbook.Worksheets("ERROR").Range("A1")
                .Offset(lExportRow, 0) = "Error:" & Err.Number
                .Offset(lExportRow, 1) = "Error description :" & Err.Description
                .Offset(lExportRow, 2) = ThisWorkbook.Styles(i).Name
            End With
            Err.Clear
            lExportRow = lExportRow + 1
        End If
    Next i
    ThisWorkbook.Worksheets("ERROR").Cells.AutoFit
End Sub
Theo em hiểu một số style mình không thể xóa được. Anh có thể Google search để tìm hiểu nguyên nhân.
Nếu anh copy thủ tục trên vào tập tin của anh, anh chạy vài lần, anh sẽ thấy có hai styles anh không xóa được, và dĩ nhiên các style nào anh đang dùng thì cũng không thể xóa luôn.

Lê Văn Duyệt
PS: ngoài ra còn có thể kiểm tra các thuộc tính cần thiết khác.
 
Lần chỉnh sửa cuối:
Em đã xóa 2 style tàu (muốn biết cách xóa = 1 ly cafê //**/) + chạy sub DeleteStyle của anh Duyệt bây giờ trong file còn 1 style mặc định thôi.

Thanh Phong
 

File đính kèm

  • ManyStyles.zip
    26.3 KB · Đọc: 75
Em đã xóa 2 style tàu (muốn biết cách xóa = 1 ly cafê //**/) + chạy sub DeleteStyle của anh Duyệt bây giờ trong file còn 1 style mặc định thôi.

Thanh Phong
Cám ơn nhiều, HD giúp đi, nợ CF trả sau.
Anh nhấn Alt Sh F11 vào cửa sổ Microsoft Script Editor, vào Stylesheet.css xóa thì cũng xóa hết các style (hay xóa những style ngoại đạo).
Nhưng có những file mở ra thì nó báo như sau, Phong chỉ giúp tại sao vậy.
anhtuan_ngh

BaoLoiOLE.jpg

 
Để test em làm cái này:
Mã:
Sub DeleteStyle()
    Dim i As Long, lStylesCount As Long, lExportRow As Long
    Dim lWorksheets As Long

    'Reset all style
    lWorksheets = ThisWorkbook.Worksheets.Count
    For i = 1 To lWorksheets
        ThisWorkbook.Worksheets(i).Cells.Style = "Normal"
    Next i
    lStylesCount = ThisWorkbook.Styles.Count

    MsgBox "So style trong Workbook nay la: " & lStylesCount
    On Error Resume Next
    'Clear first
    ThisWorkbook.Worksheets("ERROR").Cells.Clear
    For i = 1 To lStylesCount
        ThisWorkbook.Styles(i).Delete
        If Err.Number <> 0 Then
            With ThisWorkbook.Worksheets("ERROR").Range("A1")
                .Offset(lExportRow, 0) = "Error:" & Err.Number
                .Offset(lExportRow, 1) = "Error description :" & Err.Description
                .Offset(lExportRow, 2) = ThisWorkbook.Styles(i).Name
            End With
            Err.Clear
            lExportRow = lExportRow + 1
        End If
    Next i
    ThisWorkbook.Worksheets("ERROR").Cells.AutoFit
End Sub
Duyệt ơi, mình muốn xóa các unused style chớ không xóa hết các style.
Các style mình tạo theo default của MS thì vẫn giữ chớ.
Cám ơn nhiều. Duyệt giúp hộ cái báo lỗi OLE là gì vậy, mình có biết dùng gì OLE.
 
Cám ơn nhiều, HD giúp đi, nợ CF trả sau.
Anh nhấn Alt Sh F11 vào cửa sổ Microsoft Script Editor, vào Stylesheet.css xóa thì cũng xóa hết các style (hay xóa những style ngoại đạo).
Nhưng có những file mở ra thì nó báo như sau, Phong chỉ giúp tại sao vậy.
anhtuan_ngh

BaoLoiOLE.jpg


Sau khi xóa Style kiểu anh nói thì bị lỗi này? Hay đây là 1 câu hỏi khác?
Anh có thể upload lên file mà anh đã từng gặp lỗi này khi mở lên?

Em search Google được mấy cái này:
Object Linking and Embedding (OLE) is a technology that allows embedding and linking to documents and other objects developed by Microsoft. It is found on the Component Object Model. For developers, it brought OLE custom controls (OCX), a way to develop and use custom user interface elements. On a technical level, an OLE object is any object that implements the IOleObject interface, possibly along with a wide range of other interfaces, depending on the object's needs.


TP.
 
Duyệt ơi, mình muốn xóa các unused style chớ không xóa hết các style.

Để xác định có phải các style này thuộc dạng nào chúng ta dùng thuộc tính
Mã:
BuiltIn
của đối tượng
Mã:
Style

Vậy anh có thể thêm vào một Combobox trên Userform, rồi thêm vào đoạn code này:
Mã:
lStylesCount = ThisWorkbook.Styles.Count
    'Add to Combobox
    For i = 1 To lStylesCount
        sStyleName = ThisWorkbook.Styles(i).Name
        ComboBox1.AddItem Format$(i, "000") & " | " & sStyleName & " | " & ThisWorkbook.Styles(i).BuiltIn
    Next i
Như vậy anh sẽ biết được trước khi viết thêm đoạn code cho nút xóa các style anh không cần dùng.

Lê Văn Duyệt
 
Trình tự là xế này:
- Xoá các template (file .xlt)
- Mở file
- Dùng ASAP xoá các style không dùng
- Chịu CF co Thanh Phong, xoá 2 style tàu

Có khi xoá template xong mở file lên chả có style dư nào cần xoá ấy chứ. (trừ 2 style tàu vẫn phải tốn CF)

Bằng chứng:
- mở bằng Excel 2003, xoá style bằng ASAP, thông báo có 13 styles, 12 styles in used, không xoá cái nào (có 2 cái unused nhưng không xoá được)
- mở bằng Excel2007, xoá style bằng ASAP, thông báo có 54 styles, 12 styles in used, xoá 41 style unused (y như hình thông báo bài 1)

Chứng tỏ 41 styles chênh lệch do Excel 2007 tạo ra, nhưng ai đó đã lưu thành template của 2003 nên cứ hễ tạo file mới hay mở file cũ đều có sẵn ít nhất 41 style đó và 1 style normal của 2003.

Không phải vậy thì tớ đập đầu vào gối mà chết.
 
Web KT
Back
Top Bottom