Skip to content

기글하드웨어기글하드웨어

인터넷 / 소프트웨어 : 윈도우즈, 리눅스, 기타 운영체제, 각종 어플리케이션, 프로그램, 소프트웨어, 인터넷, 인터넷 서비스에 대한 이야기, 소식, 테스트, 정보를 올리는 게시판입니다.

Extra Form

어제 다음과 같은 프로그램을 짰더랬습니다.
https://gigglehd.com/gg/soft/379801
 

근데 자고 나서 일어나서 생각해 보니, 이 프로그램으로 원하는 파일을 찾는 건 좀 불편할 거란 생각이 들더군요. 그래서 좀 뜯어고치다가, 어째 잘 되지가 않아서 아예 갈아엎고 새로 원하는 대로 만들어 버렸습니다. 새 프로그램은 전처리 파일을 만들 필요 없이, 프로그램 내에서 디렉터리를 지정하면 자체적으로 DWG 파일을 찾게끔 바꾸었습니다.
 

새로 짠 프로그램은 다음과 같습니다.

Option Explicit

'전역 변수 설정.
Public dwgList As Collection

Sub main()
'필요 변수 등 설정.
    Dim dwgName As Variant
    Dim i As Long: i = 0
    Dim readOnly As Boolean: readOnly = True
    Dim fileSystem As Object
    Dim hostFolder As String
    Dim outputFile As String
    Dim findingText As String
    Dim textList As Collection
    Set dwgList = New Collection '프로그램 시작 초기화
    
'프로그램 작동 설정.
    hostFolder = "T:\"
    outputFile = "T:\DWGfindResult.txt"
    findingText = "ASDF"

' 직접실행 창에 작업 시작을 알린다.
    Debug.Print "작업 1단계 개시."

' 각 디렉터리와 그 서브 디렉터리를 재귀적으로 순회한다.
    Set fileSystem = CreateObject("scripting.filesystemobject")
    doFolder fileSystem.getfolder(hostFolder)

' 직접실행 창에 작업 2단계 시작을 알린다.
    Debug.Print ""
    Debug.Print "작업 2단계 개시."

' 순회가 끝나면 경로 컬렉션의 모든 DWG 파일을 하나씩 열기 시작한다.
    For Each dwgName In dwgList
        Set textList = New Collection '초기화 - 버그 방지!

' 진행상황 파악을 위해 직접실행 창에 전체 DWG 파일 갯수와 _
' 현재 열고 있는 DWG 파일 순서를 분수로 출력한다.
        i = i + 1
        Debug.Print i & " / " & dwgList.Count

        On Error Resume Next '오류 발생시 넘어감
        AutoCAD.Documents.Open dwgName, readOnly

' DWG 파일의 모든 텍스트 중 원하는 것이 있는지 찾는다.
' 원하는 텍스트가 포함된 텍스트 데이터를 텍스트 컬렉션에 추가한다.
        Set textList = dwgTextFind(findingText)

' 만약 텍스트 컬렉션의 카운트가 1 이상이면 현재 열린 파일명과 텍스트 컬렉션의 _
' 모든 내용을 직접실행 창에 출력하고, 동시에 지정된 텍스트 파일에 추가한다.
        If textList.Count Then
            resultOutput outputFile, dwgName, textList
        End If

' 열린 DWG 파일을 닫는다.
        AutoCAD.Documents.Close

' 모든 DWG 파일에 이 작업을 반복한다.
    Next
End Sub

Sub doFolder(folder)
'각 디렉터리와 서브 디렉터리를 재귀적으로 순회하기 위한 서브루틴.
    On Error Resume Next '오류 발생시 다음 폴더로 넘어감.
    
    Dim subFolder As Variant
    For Each subFolder In folder.subfolders
        doFolder subFolder
    Next
    
' 순회 과정에서 DWG 파일이 발견되면 경로 컬렉션에 경로를 추가한다.
    Dim file As Variant
    For Each file In folder.Files
        If LCase(file.Name) Like "*.dwg" Then
            dwgList.Add file.Path
            Debug.Print file.Path '화면에 출력
        End If
    Next
End Sub

Function dwgTextFind(findingText) As Collection
'DWG 파일 내의 모든 텍스트에서 원하는 부분이 있는지 찾아, _
'조건이 맞는 모든 텍스트를 모은 컬렉션을 반환한다.
    Dim mSpaceObj As AcadObject
    Dim item As Variant
    Dim text As String
    Dim result As New Collection '한번에 선언 및 생성 - 초기화
    
    For Each item In ThisDrawing.ModelSpace
        On Error Resume Next '텍스트 스트링이 없으면 그냥 지나감
        text = "" '초기화
        Set mSpaceObj = item
        text = mSpaceObj.TextString
        If InStr(LCase(text), LCase(findingText)) Then '대소문자 구분하지 않음!
            result.Add text
        End If
    Next
    
    Set dwgTextFind = result
End Function

Sub resultOutput(outputFile, dwgName, textList)
'출력할 텍스트 파일명과 출력할 내용들을 받아서 _
'현재 열린 파일명과 검색된 스트링을 화면과 텍스트 파일에 출력하는 서브루틴.
    Dim fileNum As Integer
    Dim item As Variant
    
    fileNum = FreeFile()
    Open outputFile For Append As #fileNum '텍스트 파일을 추가 모드로 연다.
    
    Debug.Print dwgName
    Write #fileNum, dwgName
    
    For Each item In textList
        Debug.Print Chr(9) & item
        Print #fileNum, Chr(9); item
    Next
    
    Debug.Print "" '마지막에 빈 줄 추가
    Write #fileNum,
    Close #fileNum
End Sub

네. 이 프로그램은 잘 작동합니다. 적어도 제가 테스트한 한도 내에서는 말이죠.
하지만 왠지 제 실력 때문인지 뭔가 자꾸 부족하다는 생각이 드는군요. 굳이 dwgList를 전역으로 쓸 필요가 있었을까? 오류 처리는 어떻게 하는 것이 더 좋을까? main 프로시저는 정말 저게 최선인가? 더 모듈화할 수 있지 않았을까? 이런 생각이 자꾸 드네요.
 

그래서 질문드립니다. 이 프로그램에서 부족한 부분은 무엇이고, 어떤 식으로 수정하는 것이 좋을까요? 여러분의 고견을 기다리겠습니다.




작성된지 4주일이 지난 글에는 새 코멘트를 달 수 없습니다.


  1. No Image

    TWRP 백업 질문

    TWRP로 갤럭시 탭3의 순정 안드로이드를 백업했습니다.(System, EFS, Boot, Cache만 선택, Data는 백업 선택 안 함) 제가 순정 안드로이드를 밀고 커스텀롬을 설치한 뒤 그걸 또 밀고 백업해둔 파일을 TWRP로 롤백시켜서 커롬깔기 전 제대...
    Date2020.12.06 질문 Bytitle: 민트초코라데온HD6950 Reply12 Views1155
    Read More
  2. 윈도우10 엔터프라이즈 -> 홈 으로 다운그레이드 가능...한가요?

    저는 예~ 전에 윈도우 10 홈을 정품 구입해서, 지금까지 쓰고있는데요,               ???       네... 갑자기 윈도우 10 엔터프라이즈가 되어버렸습니다.   저번에 RDP 설정만지면서 뭘 잘못눌렀나봐요...       아무튼 이렇게 되면서 정...
    Date2020.12.03 질문 By포도맛계란 Reply10 Views5226 file
    Read More
  3. 윈도우10에 '지금 모임 시작' 이라는 요상한 아이콘이 생겼네요.

        오늘 아침에 부팅하고 보니 갑자기 저런 아이콘이 하나 생겼네요?     눌러보면 이렇게 나오는데 이거 뭘까요?   아이콘 오른쪽으로 눌러봐도 '지금 모임 시작 열기' 랑 '숨기기' 밖에 없는데   뜬금없네요.   시작프로그램도 바뀐게 ...
    Date2020.12.02 질문 Bytitle: AI아즈텍 Reply18 Views5450 file
    Read More
  4. [질의] 이 영상의 코덱은 무엇인가요?

      Input이 AVC1, Output이 NV12로 표시된 영상입니다. AVC1은 H.264라던데, NV12는 검색해도 뭐가 뭔지 모르겠습니다. 기기 테스트용으로 자주 사용하는 영상이라 확실하게 알아 두어야 하는데, "H.264 (mp4+aac)"로 표기하면 문제가 없...
    Date2020.12.01 질문 Bytitle: 컴맹임시닉네임 Reply6 Views1710 file
    Read More
  5. No Image

    쓸만한 마이그레이션 툴이 어떤게 있을까요?

    관리중인 곳의 PC가 조만간 HDD -> SSD로의 대규모 전환이 예상되는데요 마이그레이션 하기에 좋은 프로그램이 뭐가 있을까요?   기존엔 백업프로그램으로 C파티션 이미지 떠서 SSD에 푸는 식으로 했었는데 그렇게하니 대략 30~40분 정도 ...
    Date2020.12.01 질문 By두리 Reply18 Views4457
    Read More
  6. No Image

    구글 맵에서 위도와 경도 표시를 도 분 초 단위로 전환하기

    네 제목이 곧 내용입니다.   곧 제 손에 들어올 킹갓-가민 GPS에서는 위도와 경도값이 도, 분, 초 단위로 나타납니다. 근데 구글은 이걸 그냥 소수점 단위로 나타내더군요.   구글 지도에서 특정 지점을 찍었을 때 뜨는 위도 경도값을 소...
    Date2020.12.01 질문 By우즈 Reply7 Views2757
    Read More
  7. No Image

    가상머신 OS를 설치한 PC에 전원이 갑자기 다운되면 어떤 영향이 있나요?

    현재 가상머신 OS인 VMware EXSi 6.7.0 버전을 오드로이드 H2(인텔 J4105)에 설치하여 사용중입니다.   여기에 헤놀로지 6.0.2를 설치해 사용중입니다.   전원은 사실상 24시간 공급중이고 소모전력이 10Wh가 채 되지않기에 큰 부담을 느...
    Date2020.11.29 질문 By노예MS호 Reply6 Views884
    Read More
  8. No Image

    네이버 카페 푸쉬 알림 관련 질문입니다.

    네이버 카페의 '특정 게시판' 에 올라오는 '특정 키워드' 를 한정하여 알림을 받고 싶습니다,   예를 들면, '중고 판매' 게시판의 '특정 상품명' 만을 선택적으로 푸쉬 알림으로 받아보고 싶은데, 이게 가능한가요?
    Date2020.11.26 질문 By우즈 Reply8 Views514
    Read More
  9. No Image

    스팀 가드 골 때리네요 ㅠㅜ

    이거 이메일 인증하고 계속 무한 루프 걸리는데 왜 이러는지 아시는 분?   계정을 찾으려고 비밀번호 변경 및 이메일 인증을 받았습니다.   새 컴퓨터를 인증해야 한다면서 이메일 코드를 보내주지 않습니다.   여기서부터 문제입니다. 고...
    Date2020.11.25 질문 By소망노인복지센터 Reply5 Views786
    Read More
  10. No Image

    스팀 질문입니다.

    1. 게임을 구매했을때 2PC까지 사용 가능한가요?  - 본컴/ 서브컴에 하나씩 설치해두며 즐기고 싶어서요.    예를 들면 삼탈워 라던가 삼국지14라던가 커맨드앤컨커 라던가   2. 계정은 하나인데 계정만 인증되면 전세계 어디서나 다운 받...
    Date2020.11.25 질문 By소망노인복지센터 Reply5 Views440
    Read More
  11. No Image

    스마트폰의 영상을 다른 스마트폰에서 스트리밍해서 볼 수 게 해주는 앱이 있나요?

    제목이 곧 내용입니다. V10에 있는 영상을 다른 스마트폰에서 무선으로 스트리밍해서 보고 싶은데 그렇게 할 수 있는 앱이 있을까요?
    Date2020.11.22 질문 Bytitle: 민트초코라데온HD6950 Reply2 Views495
    Read More
  12. 최신 윈도우 자음모음 분리현상 문제

    윈도우+H 키를 누르지 않아도 계속 이렇게 뜨더니, 잠시뒤 계속 자음모음 분리 현상이 일어납니다... 해결방법은 있지만 재부팅하면 계속 이러네요... 잠시나마 해결방법은 언어를 아예 바꿨다 하면 고쳐지긴 합니다만 또 이러네요... 아...
    Date2020.11.20 질문 By240Hz Reply13 Views2079 file
    Read More
  13. No Image

    본격적으로 리눅스 입문하려고 합니다. 듀얼부팅?

    안녕하세요. 리눅스 운영체제를 사용하기 전 알고싶은 점이 있어 질문 남깁니다.   얼마 전에 SSD를 좀 구해놨습니다. 현재 윈도우 10을 사용하고 있는 데스크탑에서(보조저장장치를 제외한 같은 하드웨어를 공유하여) 윈도우 10과 리눅스...
    Date2020.11.18 질문 By레이첼로즌 Reply11 Views1494
    Read More
  14. No Image

    CPU가 바뀌어도 어셈블리 코드는 그대로 돌아가나요?

    i7 6700을 사용중에 있습니다. 최근에 성능에서 무언가 발목잡히는 듯한 느낌이 들어 이번에 CPU를 왕창 올려보고자 합니다. 그런데 막상 올리려고 하니 좀 걸림돌이 있더라구요.   이번학기 학교 수업에서는 버츄얼박스를 이용해 리눅스...
    Date2020.11.16 질문 By멘탈적분 Reply7 Views2469
    Read More
  15. No Image

    WebDAV로 다운로드하면 파일의 이동 경로가 어떻게 되나요?

    제목이 아마 이해가 잘 안가실텐데 안가시는게 맞습니다. 질문을 제목에 짧게 넣으려고 하니 이런 불상사가..   일단 저는 시놀로지 NAS를 WebDAV로 RaiDrive 라는 프로그램을 사용해서 드라이브처럼 사용중입니다. 이 점을 기억하시고 보...
    Date2020.11.15 질문 By그저웃지요 Reply21 Views884
    Read More
  16. [해결] 디스코드 파이썬 봇이 제대로 작동하지 않아요.

      (먼저 옆에 지운 부분이 지저분한 점 죄송합니다) 제가 디스코드 봇을 하나 만들었는데, 저 사진에 await 어쩌고 하는 코드가 2개 이상인 명령어는 이상하게 if문이 끝나는 곳까지 디스코드에 반응하지 않고 다음 if문의 코드 답변까지...
    Date2020.11.11 질문 Bytitle: 민트초코라데온HD6950 Reply9 Views869 file
    Read More
  17. No Image

    센토스 8 + CDE?

    현재 우분투 20.04 lts에 NsCDE (Not so Common Desktop Environment, Fvwm 기반) 사용 중입니다. 레드햇 계열로 넘어가려 생각중이였는데.. 최근에 오리지날 Cde (Common Desktop Environment) 가 아직도 관리된단걸 발견했습니다. 그래...
    Date2020.11.09 질문 By헥사곤윈 Reply3 Views528
    Read More
  18. No Image

    한 포럼 백업하기

    안녕하세요. 제가 백업하고 싶은 포럼이 있습니다.  XenForo 포럼 1.x 버전인듯 하고, 좀 사이트가 불안정해지고 있는데 중요한 자료가 많아 백업 하고 싶습니다. 정확히는, 이 사이트가 서버를 옮기고 도메인도 그 새 서버로 바꾸었는데,...
    Date2020.11.08 질문 By헥사곤윈 Reply14 Views531
    Read More
  19. No Image

    아이폰이나 아이패드에서 구글드라이브에 저장된 사진 원본으로 받는 방법이 있나요?

     ios구글드라이브앱으로 사본보내기나 다른 앱으로 열기를 통해 사진을 보낼때 9메가짜리 사진이 120kb로 압축되어서 보내집니다.  원본이 저장되어있고 구글 드라이브 내에서 정보보기를 해도 9메가로 보이는데 원본 해상도로 받을 수 있...
    Date2020.11.06 질문 Byacropora Reply3 Views1122
    Read More
  20. 한글 2018 ?쪽 문제

      한글은 전통적으로 우하단에 쪽수를 확인할 수 있는데 2018이라 그런지 ?쪽이라고 계속 뜹니다. 아래로 내려서 마지막 페이지를 지정하면 마지막쪽까지 표시가 되는데, 위로 올라가서 작업하면 또 ?쪽으로 나옵니다.   혹시 해결방안 ...
    Date2020.11.06 질문 By기온 Reply11 Views892 file
    Read More
목록
Board Pagination Prev 1 ... 25 26 27 28 29 30 31 32 33 34 ... 73 Next
/ 73

최근 코멘트 30개
금산조
13:23
영원의여행자
13:20
까마귀
13:20
까마귀
13:20
린네
13:17
아이들링
13:15
별밤전원주택
13:10
별밤전원주택
13:10
린네
13:04
린네
13:03
아라
13:03
침착맨
13:02
린네
13:02
소주
12:36
아이들링
12:27
카토메구미
12:20
고자되기
12:19
책읽는달팽
12:16
탐린
12:16
툴라
12:07
ASTRAY
12:01
rnlcksk
11:59
툴라
11:39
고자되기
11:35
Quinoa
11:33
고자되기
11:23
고자되기
11:19
연서기
11:17
랩탑
11:16
AKG-3
11:14

AMD
더함
한미마이크로닉스
MSI 코리아

공지사항        사이트 약관        개인정보취급방침       신고와 건의


기글하드웨어는 2006년 6월 28일에 개설된 컴퓨터, 하드웨어, 모바일, 스마트폰, 게임, 소프트웨어, 디지털 카메라 관련 뉴스와 정보, 사용기를 공유하는 커뮤니티 사이트입니다.
개인 정보 보호, 개인 및 단체의 권리 침해, 사이트 운영, 관리, 제휴와 광고 관련 문의는 이메일로 보내주세요. 관리자 이메일

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소