애들센스


생애 처음으로 본 VBA 버그 오피스/VBA/Office.JS

시작은 어떤 분이 외부 엑셀파일을 불러와서 데이터를 복사하는 문제를 해결해주려는 오지랍 덕분이었다. 거의 코드를 만들고 테스트를 하는 데, 대화상자에서 선택한 파일명을 기록하였다. 그리고 다시 이 파일을 열려고 하니 파일이 없다는 식의 시비를 건다. 수 차례의 삽질 끝에 알아 낸 원인은 파일명에는 "[" 와 "]" 때문이다.
  1. Application.GetOpenFilename()함수는 "[" 와 "]"가 있는 파일명을 돌려준다.
  2. 그리고 Workbooks.Open() 역시 "[" 와 "]"가 있는 파일을 열어준다.
  3. 그러나 열어 둔 워크북 개체의 이름을 조회하니 "[" 와 "]"를 "(" 와 ")" 로 바꿔 버리는 것이다.
  4. 실제 엑셀에서 다른 이름으로 저장시 "[" 와 "]"는 이름으로 허용되지 않는다.
  5. 그러나 탐색기에서는 이름 변경시 "[" 와 "]"가 허용된다.
말로 하니 복잡하니 아래의 코드를 실행하면, 열려는 파일명에는 "[" 와 "]"가 있고 잘 열린다. 그러나 wbk.Name은 "[" 와 "]"를 "(" 와 ")" 로 바꿔 보여준다.
Sub demoBug()
Dim strFileToOpen As String
Dim wbk As Workbook

strFileToOpen = "[BlackRock]_iShares_Global Product List June 30, 2015.xlsx"
Set wbk = Workbooks.Open("C:\Kings\" & strFileToOpen)

' [BlackRock]_iShares_Global Product List June 30, 2015.xlsx 출력
Debug.Print strFileToOpen

'(BlackRock)_iShares_Global Product List June 30, 2015.xlsx 출력
Debug.Print wbk.Name
End Sub
포스팅 분류를 '삽질의 추억'으로 분류해야 하나...그런데 다시 생각해보면 이건 버그는 아닌 듯, 엑셀개발팀과 윈도개발팀간에 손발이 안맞는 건가?

덧글

댓글 입력 영역