목록vba (68)
rand(life)
NAS서버에 파일을 올려놓고 VBA로 특정 검색어를 가진 파일이나 폴더명을 가져오는 일이 많다. FileSystemObject를 이용했지만 파일이나 폴더가 많아지다보니 그때마다 하위 디렉토 리까지 모두 긁어서 가져오려면 시간이 한참 걸린다 그래서 생각한 방법은 리눅스에서 ls > list.txt 명령은 빠른 시간에 해당 폴더 내의 목록을 list.txt 라는 파일로 저장할 수 있으므로 원하는 폴더에 list.txt 파일을 만들어두고 검색을 하고 싶으면 list.txt 파일을 열어서 찾으면 더 시간이 적게 걸릴 수 있겠다는 생각으로 검색해보았고 몇번의 삽질 끝에 완성했다 Option Explicit Sub com_make_listFile() Dim a, i& Dim console As Object Dim ..
아직 배우는 중 미천한 HTML 지식과 검색으로 웹 스크래핑을 공부하고 있다 아래는 검색해서 얻은 코드. 주석을 붙여보았다. 일단 참조에서 아래와 같이 추가해야한다 대부분 위의 4개는 이미 추가가 되어있을테고, 아래의 2개만 추가하면 된다(엑셀 365기준) MICROSOFT WinHTTP Services MICROSOFT HTML Object Library 원 글에서는 네이버 뉴스도 가져오는 코드가 있지만, 그동안 네이버 뉴스가 개편을 한 탓인지 제대로 작동을 안해서 다음 뉴스만 가져오도록 했다. 가능한 주석을 달아보았는데, 아직 공부할 것이 많다. .getElementById 하고 getElementsByTagName 의 사용법이 아직 완전하지 않다. 이렇게 되어있는 곳을 가져오는 것 같은데, 테스트삼..
중복제거와 정렬을 한번에 ArrayList ArrayList 이용 예제 https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=102020101&docId=358765243 더보기 메서드 Add(Object) 개체를 ArrayList의 끝 부분에 추가합니다. BinarySearch(Int32, Int32, Object, IComparer) 지정된 비교자를 사용하여 정렬된 ArrayList의 요소 범위에서 요소를 검색하고 요소의 인덱스(0부터 시작)를 반환합니다. BinarySearch(Object) 기본 비교자를 사용하여 정렬된 전체 ArrayList에서 요소를 검색하고 요소의 인덱스(0부터 시작)를 반환합니다. -- 한번만 정렬한 후 검색을 빠르게 할 때 효과적 Bin..
제목을 자동으로 지식인에서 검색해서 제목을 나열해준다 지식인 마니또님의 답변이다.
셀안에 있는 특수문자만 제거하는 코드 지식인 답변에서 가져옴 Option Explicit Sub textchange() Dim c As Range Dim rSelect As Range Dim oReg As Object On Error Resume Next Set rSelect = Application.InputBox("영역 선택", "선택", Selection.Address, , , , , 8) If rSelect Is Nothing Then Exit Sub Set oReg = CreateObject("VBScript.RegExp") For Each c In rSelect.Cells If c.Value "" Then With oReg .Pattern = "[\\/:*?""|]" ''특수문자 추가 하시면 ..
순열 조합 매크로에 대해서는 지난번에 소개하였지만, 이번엔 약간 다른 경우이다. 출처는 여기이다. 보다시피, A그룹에서 하나, B그룹에서 하나, C그룹에서 하나, D그룹에서 하나씩만 꺼내와서 결과를 조합하는 것이다. 이것은 이전의 매크로를 가지고는 할 수 없는 작업이다. 아래와 같이 할수도 있을것이다. for i1 = 1 to 3 for i2 = 1 to 3 for i3 = 1 to 2 for i4 = 1 to2 Result = i1 & i2 & i3 & i4 next next next next 하지만 단점 두 개가 분명히 보인다. 일단 지금은 그룹이 4개이지만, 그룹이 100개가 된다면? 그리고, 각 그룹마다 요소의 갯수가 다르다. 다른 사람도 이런 고민을 했을텐데, 하면서 검색을 해보았는데, 바로 위..
핵심코드의 출처는 여기 이런 세 개의 파일이 있다고 하자. 그리고 이 세 개의 파일에 있는 데이터를 통합하여 아래와 같은 표를 완성해야한다고 하자. 왼쪽의 item이나 상단의 title이 파일마다 순서가 다르다. 그리고 모두 다 있는 것도 아니다. 이런 경우, 어떤 식으로 데이터를 모으겠는가? sumif, sumifs같은 것을 사용할 수도 있을 것이다. 그러나, 방금 말한 것처럼, item과 title의 구성 및 순서가 달라서 쉽지 않아보인다. 이런 경우 사용할 수 있는 것이 엑셀의 "통합" 기능이다. 데이터 탭에 있다. 이것을 누르면 이런 창이 뜨고, 여기서 참조 영역과 함수를 적절히 지정해주고 확인하면 된다. 그런데, 위의 표에서 보듯이 참조 영역이 불규칙적이어서, 일일이 파일을 열어서 확인을 해야한..
출처는 아래에. Option Explicit Sub SendEmailWithrRange() Const olMailItem = 0 Dim rngToSend As Range, r As Range Dim FileName As String, FileName2 As String Dim strHtml As String Set rngToSend = Selection strHtml = RangeToHTML(rngToSend) With Sheets("address") For Each r In .Range("a1", .Cells(Rows.Count, "a").End(xlUp)) With CreateObject("Outlook.Application").CreateItem(olMailItem) .To = r.Value .Su..