글

라벨이 VBA인 게시물 표시

[VBA] findNext 에러 제어

 vba에서 find 함수를 찾는데 이어서 찾기 위해 findnext를 쓴다. 하지만 더 이상 찾는 데이터가 없으면 에러이다. 이 경우 에러를 뱉고 프로그램이 멈추기 때문에 따로 처리가 필요하다. 아래와 같음 1 2 3 4 5 6 7 8 9 Dim  wb  As  Excel.Workbook, oRange  As  Range ' FindNext 함수의 에러가 발생할 수 있으므로 객체에 넣는다 ' find 구문 있어야함 (생략)   Set  oRange  =  wb.Worksheets(i).Cells.FindNext(After: = ActiveCell)  ' 다음 데이터가 없으면 oRange값은 Nothing이    If   Not  oRange Is  Nothing   Then      ' FindNext가 정상일 경우 처리 End   If

[VBA] 문자 깨짐 현상

VBA로 게임 아이템들을 정리하는데 왜 자꾸 중문이 깨지는가... 계속 계속 계속... 찾다가... 결국 실장님 도움 받았다. excel version: Office 365 아직 알 수 없으나 소스코드는 다음과 같다. ' 변경 전 DBPath  =  ThisWorkbook.FullName strCon  =   "Provider=MSDASQL.1;DSN=Excel Files;DBQ="   &  DBPath  &   ";HDR=Yes';IMEX=1"   ' 변경 후 DBPath  =  ThisWorkbook.FullName strCon  =   "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="   &  DBPath  &   ";Extended Properties=" "Excel 12.0;HDR=Yes;IMEX=1" ";" 연결 정보의 Provider를 변경하고, Extended Properties를 추가했다. 이렇게 하고 실행하니 아주 잘 된다. 일하면서 짬짬히 작업하고 있던 데이터였는데 막힌 부분을 뻥 뚫어줘서 기분이 너무 좋다. 다른 사람들이 참고도 하고 난 분명 잊을 테니 블로그에 기록해둔다.  

[VBA] EncodeURL function

VBA에서 API를 호출해서 데이터를 가지고 오는데 URL에 특수문자 혹은 한글이 있는 경우 글자가 깨져서 데이터를 못가져온다. Excel Version: 2013 이상 해결방법 EncodeURL 함수를 활용해서 넘겨주는 데이터를 URL이 읽을 수 있도록 인코딩을 한다. Dim varEncodeURL As Varint Dim var1 As String var1 = "대한 민국" varEncodeURL = WorksheetFunction.EncodeURL(var1) varEncodeURL 변수를 URL 주소에 붙이면 정상적으로 데이터를 불러온다. 관련링크 사소하지만 이 문제로 데이터를 못 불러와서 한참동안 찾았다.... 다른 사람들은 헤메지 않았으면 하는 바람 및 내 기억력을 믿지 못해 기록으로 남긴다.

[VBA] Excel Formula vlookup

요즘 VBA 공부하고 있는데 이것 저것 에러 해결 방법을 적어 둔다. 문제: VBA에서 ActiveCell.FormulaR1C1 을 활용해서 VLOOKUP을 사용하고 있는데 VLOOKUP에서 Lookupvalue 문자열에 ~을 인식 하지 못함 기존 식 ActiveCell.FormulaR1C1 = "=VLOOKUP([@상품명],Sales[[상품]:[타입]],3,FALSE)" 상품명에 ~ 문자열인식못해서 Substitute 함수를 이용해 변경 하려고함 변경 중 (에러남) ActiveCell.FormulaR1C1 = "=VLOOKUP(SUBSTITUTE([@상품명],"~",""),Sales[[상품]:[타입]],3,FALSE)" 이것도 안됨 왜냐하면  " 문자열 때문에 VBA에서 받아주지 않음 변경 (정상작동) ActiveCell.FormulaR1C1 = "=VLOOKUP(SUBSTITUTE([@상품명]," & Chr(34) & "~" & Chr(34) & "," & Chr(34) & "~~" & Chr(34) & "),Sales[[상품]:[타입]],3,FALSE)" " 문자는 Chr(34)로 변경 "~"는 "~~" 로 변경해야 적용 가능하다. 참고 링크 정상 작동 확인