Excel 워크 시트의 이름 길이에 제한이 있습니까?
다음 코드로 ruby와 win32ole을 사용하여 긴 워크 시트 이름을 설정하려고 할 때 :
require "win32ole"
excel = WIN32OLE.new('Excel.Application')
excel.Visible = 1
puts excel.version
workbook = excel.Workbooks.Add
worksheet1 = workbook.Worksheets.Add
worksheet1.Name = "Pseudopseudohypoparathyroidism" #Length 30, fine
worksheet2 = workbook.Worksheets.Add
worksheet2.Name = "Supercalifragilisticexpialidocious" #Length 34, not fine
다음을 얻습니다.
12.0
-:9:in `method_missing': (in setting property `Name': ) (WIN32OLERuntimeError)
OLE error code:800A03EC in Microsoft Office Excel
You typed an invalid name for a sheet or chart. Make sure that:
The name that you type does not exceed 31 characters.
The name does not contain any of the following characters: : \ / ? * [ or ]
You did not leave the name blank.
HRESULT error code:0x80020009
Exception occurred.
from -:9:in `<main>'
버전 12.0은 내가 Excel 2007을 실행하고 있음을 나타내지 만 워크 시트 이름이 너무 깁니다. 나는 한 번 봐했다 Excel 2007의 사양 및 제한 에 언급 한 바와 같이 이 관련 대답을 하고, 나는 그러한 한계를 언급 찾을 수 없습니다. (워크 시트의 이름을 수동으로 바꾸려고하면 이러한 제한이있을 수 있음을 암시합니다.)
제한이 있습니까, 하드 제한입니까, 아니면 Excel 구성을 변경하여 변경할 수 있습니까?
파일 형식은 최대 255 자 워크 시트 이름을 허용하지만 Excel UI가 31자를 초과하지 않도록하려면 31자를 초과하지 마십시오. 앱은 문서화되지 않은 이상한 제한과 단점으로 가득 차 있으며 사양 내에 있지만 테스터가 테스트 한 범위 내에 있지 않으면 일반적으로 이상한 동작이 발생합니다. (개인적으로 선호하는 예 : Excel 97 스타일 문자열 테이블이있는 파일에서 if () 함수에 Excel 4.0 바이트 코드를 사용하면 Excel 97에서 굵게 표시되는 도구 모음 단추가 비활성화되었습니다.)
Excel에서 워크 시트의 이름을 수동으로 변경하면 31 자 제한에 도달 했으므로 하드 제한이라고 제안합니다.
내 해결책은 짧은 별명 (31 자 미만)을 사용한 다음 전체 이름을 셀 0에 쓰는 것이 었습니다.
다음 vba 코드를 사용합니다. 여기서 filename은 원하는 파일 이름을 포함하는 문자열이고 Function RemoveSpecialCharactersAndTruncate는 아래에 정의되어 있습니다.
worksheet1.Name = RemoveSpecialCharactersAndTruncate(filename)
'Function to remove special characters from file before saving
Private Function RemoveSpecialCharactersAndTruncate$(ByVal FormattedString$)
Dim IllegalCharacterSet$
Dim i As Integer
'Set of illegal characters
IllegalCharacterSet$ = "*." & Chr(34) & "//\[]:;|=,"
'Iterate through illegal characters and replace any instances
For i = 1 To Len(IllegalCharacterSet) - 1
FormattedString$ = Replace(FormattedString$, Mid(IllegalCharacterSet, i, 1), "")
Next
'Return the value capped at 31 characters (Excel limit)
RemoveSpecialCharactersAndTruncate$ = Left(FormattedString$, _
Application.WorksheetFunction.Min(Len(FormattedString), 31))
End Function
Windows 7에서 Excel 2013을 사용하여 몇 가지 경로를 테스트했습니다. 전체 경로 이름 제한은 213이고 기본 이름 길이는 186입니다. 최소한 기본 이름 길이를 초과하는 오류 대화 상자는 명확합니다.
너무 길지 않은 기본 이름을 너무 긴 경로 이름으로 옮기는 것도 매우 명확합니다.
그러나 경로 이름 오류는 기만적입니다. 매우 유용하지 않음 :
이것은 게으른 Microsoft 제한 사항입니다. 이러한 임의의 길이 제한에 대한 좋은 이유는 없지만 결국 오류 대화 상자의 실제 버그입니다.
참고 URL : https://stackoverflow.com/questions/3681868/is-there-a-limit-on-an-excel-worksheets-name-length
'UFO ET IT' 카테고리의 다른 글
OS X에서 프로그래밍 방식으로 마우스 입력 시뮬레이션 (0) | 2020.11.27 |
---|---|
File.ReadAllLines ()와 File.ReadAllText ()의 차이점은 무엇입니까? (0) | 2020.11.27 |
속성 선택기 식 (0) | 2020.11.27 |
Ubuntu 10.10 (Maverick Meerkat)에서 직렬 -USB 장치에 터미널을 연결하려면 어떻게해야합니까? (0) | 2020.11.27 |
JQuery Mobile Fixed Toolbar 및 Footer Bar가 사라집니다. (0) | 2020.11.26 |