bestsource

셀 형식이 너무 많음

bestsource 2023. 6. 8. 21:15
반응형

셀 형식이 너무 많음

  1. 저는 10장을 처음부터 다시 만들고, 12장을 업데이트하고, 5장은 원시 데이터로 로드하고, 7장은 매크로에서 보고서에 사용하는 거대한 파일을 가지고 있습니다.
  2. 최근에 새 시트를 추가했는데 Excel "Too many different cell formats" 문제가 발생했습니다.

내가 시도한 것

구글 검색 결과 중 일부를 읽었는데 포맷을 간소화해야 한다고 하는데, 어떤 셀을 얼마나 많이 사용하는지는 말할 것도 없고, 어떻게 최대 4000개의 셀 포맷을 만들었는지도 모르겠습니다. 그래서 몇 개를 제거할 수 있습니다.

또한 파일이 실행될 때마다 나타나는 경우도 있지만 모두 표시되는 것은 아닙니다. 파일이 실행될 때마다 나타나는 현상입니다.매크로가 10장을 처음부터 만드는 것을 포함하여 많은 작업을 수행하고 있기 때문에 어떻게 해야 할지 모르겠습니다.

아는 사람?

  • 매크로의 모든 셀 형식의 목록을 얻기 위해 실행할 수 있고 몇 개의 셀이 그것들을 사용하고 있습니까?
  • 과도한 셀 형식을 제거하는 데 도움이 될 것이라고 믿는 프로그램이 있습니까?

감사해요.

귀하가 설명한 문제로 인해 저와 동료가 Excel 2010을 사용할 때 많은 시간의 생산성을 잃게 되었습니다.다음 VBA 코드/매크로는 3540 스타일을 사용하던 .xlsm 파일을 34개로 줄이는 데 도움이 되었습니다.

' Description:
'    Borrowed largely from http://www.jkp-ads.com/Articles/styles06.asp

Option Explicit

' Description:
'    This is the "driver" for the entire module.
Public Sub DropUnusedStyles()

    Dim styleObj As Style
    Dim rngCell As Range
    Dim wb As Workbook
    Dim wsh As Worksheet
    Dim str As String
    Dim iStyleCount As Long
    Dim dict As New Scripting.Dictionary    ' <- from Tools / References... / "Microsoft Scripting Runtime"

    ' wb := workbook of interest.  Choose one of the following
    ' Set wb = ThisWorkbook ' choose this module's workbook
    Set wb = ActiveWorkbook ' the active workbook in excel


    Debug.Print "BEGINNING # of styles in workbook: " & wb.Styles.Count
    MsgBox "BEGINNING # of styles in workbook: " & wb.Styles.Count

    ' dict := list of styles
    For Each styleObj In wb.Styles
        str = styleObj.NameLocal
        iStyleCount = iStyleCount + 1
        Call dict.Add(str, 0)    ' First time:  adds keys
    Next styleObj
    Debug.Print "  dictionary now has " & dict.Count & " entries."
    ' Status, dictionary has styles (key) which are known to workbook


    ' Traverse each visible worksheet and increment count each style occurrence
    For Each wsh In wb.Worksheets
        If wsh.Visible Then
            For Each rngCell In wsh.UsedRange.Cells
                str = rngCell.Style
                dict.Item(str) = dict.Item(str) + 1     ' This time:  counts occurrences
            Next rngCell
        End If
    Next wsh
    ' Status, dictionary styles (key) has cell occurrence count (item)


    ' Try to delete unused styles
    Dim aKey As Variant
    On Error Resume Next    ' wb.Styles(aKey).Delete may throw error

    For Each aKey In dict.Keys

        ' display count & stylename
        '    e.g. "24   Normal"
        Debug.Print dict.Item(aKey) & vbTab & aKey

        If dict.Item(aKey) = 0 Then
            ' Occurrence count (Item) indicates this style is not used
            Call wb.Styles(aKey).Delete
            If Err.Number <> 0 Then
                Debug.Print vbTab & "^-- failed to delete"
                Err.Clear
            End If
            Call dict.Remove(aKey)
        End If

    Next aKey

    Debug.Print "ENDING # of style in workbook: " & wb.Styles.Count
    MsgBox "ENDING # of style in workbook: " & wb.Styles.Count

End Sub

"셀 형식"은 복잡합니다.셀에는 실제로 "형식"이 없습니다.이름과 크기가 있는 글꼴과 숫자가 있습니다.형식, 높이, 너비, 방향 등

따라서 "형식"이라는 의미를 정의해야 합니다.

다음은 글꼴 이름과 크기를 가져오는 코드입니다.원하는 속성을 대체할 수 있습니다.

아래 코드는 워크북에 "형식"이라는 워크시트를 작성했다고 가정합니다.매크로를 실행하면 해당 워크시트에 글꼴 이름과 크기가 나열됩니다.

Public Sub GetFormats()

    Dim CurrentSheet As Integer
    Dim UsedRange As Range
    Dim CurrentCell As Range
    Dim rw As Long

    Sheets("Formats").Cells.ClearContents
    rw = 1
    For CurrentSheet = 1 To Sheets.Count
        Set UsedRange = Range(Sheets(CurrentSheet).Range("A1"), Sheets(CurrentSheet).Range("A1").SpecialCells(xlLastCell))
        For Each CurrentCell In UsedRange
            FontUsed = CurrentCell.Font.Name + ":" + CStr(CurrentCell.Font.Size)
            If Sheets("Formats").Cells.Find(FontUsed) Is Nothing Then
                Sheets("Formats").Cells(rw, 1).Value = FontUsed
                rw = rw + 1
            End If
        Next
    Next CurrentSheet
End Sub

많은 사람들이 이 문제에 부딪히는 것 같습니다.

대부분의 경우문제는 사용되지 않는 스타일과 손상된 스타일의 과도한 수와 관련이 있으며 셀 고유 셀 형식 조합의 총 수와는 관련이 없습니다.

저는 XL2003에 저장할 수 있는 XL2007 OOXML 파일을 수정하는 유틸리티를 작성했습니다.다음은 블로그 게시물에 대한 링크입니다.

  • 필요합니다.Net3.5 및 MS Excel 2007.
  • xlsx 또는 xlsm 파일을 수정합니다.
  • 게시물에는 앱과 함께 사용할 ReadMe 파일이 있습니다.

일부 다른 포럼에서 제안하는 것처럼 Open Office를 사용하여 파일이 추가로 손상될 위험이 없습니다.

Excel 2007+에서 "Too many cell formats" 오류 메시지로 이어지는 버그가 해결되었습니다. http://sergeig888.wordpress.com/2011/05/06/msft-released-hot-fix-for-excel-2007-custom-styles-duplication/ 버그 수정은 파일 손상과 관련된 기존 스타일을 제거하지 않습니다.Excel 객체 모델 기반 도구에 액세스할 수 없는 요소를 제거할 수 있는 유일한 옵션은 Open XML 기반 도구(무료로 사용 가능)입니다. 예를 들어, 내장된 것처럼 위장한 불량 스타일, 숨겨진 스타일 등입니다.개방형 XML 기반 정리는 100% 스타일 관련 손상 없는 파일을 의미합니다.

저는 이 문제가 있었고, 이 엑셀 애드인을 사용하는 것이 그것을 지우는 가장 쉬운 방법이라는 것을 알았습니다.문제에 대한 마이크로소프트 페이지의 "공식적인" 답변인 것 같습니다.

.xlam 파일을 사용할 때처럼 혼란스러운 사람들을 위해 다운로드 후 Excel에서 다음을 수행합니다.

  1. 파일 < 옵션 < 추가 기능을 클릭합니다.
  2. 관리 옵션에서 이동을 클릭합니다.
  3. 추가 기능 창에서 찾아보기를 클릭하고 XLAM 파일이 저장된 위치를 찾아 강조 표시한 다음 확인을 클릭합니다.
  4. 추가 기능 창에서 새 추가 기능을 사용하도록 설정하고 확인을 클릭합니다.
  5. 이제 홈 스크린 리본 표시줄에 워크북의 스타일 수를 표시하는 단추로 구성된 "스타일 제거" 섹션이 표시됩니다(이 문제가 있는 경우 수천 개).
  6. 리본의 버튼을 클릭하면 중복된 형식이 모두 제거됩니다.

보이지 않으면 리본에 올바르게 표시되어 있는지 확인합니다.리본을 마우스 오른쪽 버튼으로 클릭하고 "Ribbon 사용자 지정"이라고 말합니다.그런 다음 추가 기능을 클릭합니다.활성 응용프로그램 추가 기능에서 "추가 스타일 제거"를 확인해야 합니다.

2019 업데이트:그 링크에서 그들은 이제 문제 등에 대한 논의와 함께 모든 것을 큰 zip 파일에 저장했습니다.해당 zip 파일에는 소스 코드라고 하는 또 다른 zip 폴더가 있으며, 해당 폴더에는 .xlam 파일이 있습니다.

.NET용 스프레드시트Gear는 고유하지 않은 형식을 호출하여 상황에 도움이 될 수 있습니다.

도움이 되는지 확인하려면 여기에서 무료 평가판을 다운로드할 수 있습니다.평가 소프트웨어와 함께 설치된 "SreadsheetGear 2009 for Windows" 응용 프로그램에 워크북을 로드한 다음 워크북을 저장합니다.

만약 당신이 실제로 그렇게 많은 고유한 형식을 가지고 있다면, 당신은 단순화해야 할 것입니다.글꼴/셀 색상(Interior), 숫자 형식, 수평 및 수직 정렬, 테두리, 들여쓰기 수준 등의 모든 고유한 조합은 표에 고유한 항목을 발생시킵니다.

또 다른 옵션은 고유 셀 형식이 4,000개에서 64K로 증가하는 제한이 있는 Excel 2007으로 전환하는 것입니다.

고지 사항:스프레드시트Gear LLC 소유

저는 이 문제를 전에 본 적이 있습니다.내가 말하려는 것을 증명하기 위해 다시 만드는 것이 가능합니다.이 방법은 약간 매력적이지만 '너무 많은 형식' 문제가 있는 시트가 있을 경우 새 시트를 열고 너무 많은 형식 시트에서 셀 하나를 복사하여 새 워크북에 붙여넣습니다.이 워크북은 이전과 같이 '감염됨'으로 표시되며 너무 많은 형식 오류가 발생합니다.붙여넣기 특수를 사용하여 제한하지 않는 한 많은 형식 데이터가 해당 붙여넣기와 함께 제공되는 것으로 보입니다.

어떻게 하면 더 나아질까요?해결 방법은 다른 이름으로 저장 HTML 기능을 사용하는 것입니다.이것이 효과가 있을지라도 저를 참아주세요.저는 여기서 2003년에 대해 이야기하고 있습니다. 2007년에 무슨 일이 일어나는지 모릅니다. 아마도 이 버그는 수정되었을 것입니다.그래서... Html로 저장하고 excel을 닫습니다.새 세션을 로드하고 매크로를 실행하지 않도록 이 세션을 로드한 다음 로드되면 스프레드시트로 저장합니다.

이 새 스프레드시트를 닫았다가 다시 열면 너무 많은 형식 문제가 사라집니다.

한 가지 해결책은 ASAP 유틸리티를 사용하는 것일 수 있습니다.시트 섹션에는 다음이 있습니다.remove all unused styles. 다시 할 것 그런 다음 워크북을 닫고 다시 열어야 합니다.

기본 스타일(일반, 설명, 20% Accent1 등)을 제외한 모든 스타일이 삭제됩니다.사용자가 만든 스타일을 포함하여 워크북을 빠르게 정리할 수 있습니다.


Sub NewNukeStyles()
Dim tempstyle As Style

For Each tempstyle In ActiveWorkbook.Styles

 If tempstyle.BuiltIn = False Then
    If tempstyle.Locked = True Then 'not sure what this is
       tempstyle.Delete
    End If
End If

Next tempstyle

End Sub 'NukeStyles

tempstyle.locked 속성이 실제로 "개체가 잠겨 있는지 여부를 나타내는 부울 값" 이외에 무엇을 참조하는지 알고 싶습니다.

Try > edit > clear > Formats 파일을 열 수 있는 경우.

포맷을 치기 전에 시트를 강조 표시합니다.

이 작업을 수행하기 전에 EXCEL 사본을 작성해야 합니다. 만약 무언가가 누락된 경우 이전 문서에 대해 교차 참조할 수 있습니다.

이것은 출시된 모든 버전을 괴롭히는 Excel의 버그입니다.

이 도구를 사용하여 문제를 해결할 수 있습니다.

작대상과 함께 합니다.XLS그리고.XLSXfiles 파일

저는 여기서 거의 모든 답을 사용했지만, 오류 메시지는 계속되었습니다.

마이크로소프트 지원 페이지(https://support.microsoft.com/en-us/kb/213904), 를 읽은 후 XLStylesTool.exe로 이동했습니다.

하지만, 다시 운이 없습니다(잘못 사용했기 때문에).

윈도우 7이 있기 때문에 윈도우 8/10 버전은 사용할 수 없습니다.

다운로드 페이지의 코멘트를 읽었습니다(다운로드 정보에 기재되어 있지 않기 때문에) 여기 https://sergeig888.wordpress.com/2011/03/21/net4-0-version-of-the-xlstylestool-is-now-available/ .

나는 내가 그것이 필요하다는 것을 알았습니다.win7에서 작동하기 위한 NET 4.0 버전 (저 멍청이들은 단순히 win7 버전이라고 부를 수는 없나요?)?)

다운로드 링크: https://skydrive.live.com/redir?resid=53E1D37F76F69444!900&authkey=!AH5oeGVaWlMsFHA&ithint=file%2c.zip

저의 다음 문제는 *.XLS에서 작동하지 않는다는 것입니다. 그래서 엑셀을 열고 작동하는 *.XLSM으로 저장했습니다.

그런 다음 'Excel 파일 가져오기' 및 '프로세스 파일'을 클릭합니다('commit changes and open in excel'을 선택하고 excel에서 '*.xls'로 저장).엑셀을 닫고, 파일을 다시 열고, 작동합니다. (귀에 거슬리는 경고 없이)!!!

"너무 많은 셀 형식" 오류가 발생할 경우 문서를 즉시 저장합니다.당분간 문서 이름을 다른 이름으로 변경합니다.문서를 연 다음 이전에 원하는 이름으로 저장합니다.이제 문서를 닫고 열면 해당 오류가 더 이상 표시되지 않습니다.때때로 그것은 간단한 세이브로도 사라졌지만 나에게는 좀 이상합니다!

작은 파일인 경우 하나의 간단한 솔루션:

모두 복사하여 Word에 붙여넣기만 하면 됩니다.내용을 테이블로 탐지합니다.그런 다음 모든 열(왼쪽 상단 모서리의 십자 기호를 통해 전체 표가 아님)을 선택하고 이 열을 새 .xls 시트에 붙여 넣으면 명확한 값만 표시됩니다.

언급URL : https://stackoverflow.com/questions/2449755/too-many-different-cell-formats

반응형