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. [해결]라데온 6410D의 윈도우10 드라이버가 혹시 있을까요.

    안녕하세요. A4-3400 불타는 apu 사용하는 컴퓨터가 있습니다. 내장그래픽인 6410D 는 윈도우 8.1까지가 지원이 끝이라 윈도우10의 인터넷 브라우저에서는 가속이 안됩니다.   다음 로드뷰, 구글 어스를 실행하면 엄청 버벅이다가 심하면 ...
    Date2021.05.29 질문 Bytitle: 오타쿠아라 Reply9 Views522 file
    Read More
  2. VSCode vs Colab - Backspace 작동 관련 질문

    안녕하세요. 제 구글링 실력으로는 도저히 해결법을 찾지 못해 질문드립니다. 사진 세 장으로 문제상황을 설명하겠습니다.       1. VSCode에서는 위와 같이 대치되는 기호가 인접할 경우 왼쪽 기호를 지우면 반대쪽도 같이 지워집니다.  ...
    Date2021.05.29 질문 ByCyBerry Reply5 Views918 file
    Read More
  3. No Image

    [질의] Windows XP SP2와 SP3의 차이

    보유한 ThinkPad X61에 여러 이유로 Windows XP 설치를 결정하였습니다. 빠른 속도+추억용+실험용+게임(핀볼, 구 디자인 솔리테어)용+특수작업용 등 이유로 Windows XP가 최선이라는 결론을 내었습니다. 다행히 이전에 쓰던 설치 미디어가...
    Date2021.05.29 질문 Bytitle: 컴맹임시닉네임 Reply5 Views858
    Read More
  4. No Image

    2.4ghz 와이파이만 엄청 느려지면 뭐가 문제일까요?

    직장 와이파이가 5ghz는 문제 없는데 2.4ghz가 신호 세기는 세다고 나오지만 정작 속도는 100 kbps 근처에서 놀고 있습니다. 아니면 그냥 끊기거나요. 아이피타임 n904이고, 펌웨어는 최신버전입니다. 무선 설정에서 딱히 이상한 점은 안...
    Date2021.05.28 질문 By애플마티니 Reply11 Views1660
    Read More
  5. 삼성 마이그레이션 툴이 삼성SSD-> 타사SSD로 이전도 가능하나요?

        여태 삼성SSD로만 이전했는데...마이그레이션 툴이 제공되지 않는 ssd를 사볼까 하는데.. os이전하기가 귀찮아서리.... 걍 삼성 마이그레이션 툴이 먹히면 좋겠는데......   그니까   삼성 ssd -> 타사 ssd 마이그레이션도 저툴로 가...
    Date2021.05.23 질문 Bycowper Reply7 Views5157 file
    Read More
  6. No Image

    어디 중국어(북경어) 가볍게 공부할만한 사이트 있나요?

    저는 미드로 영어를 공부하고 있고   일본어는 일드로 공부하고 있는데   중국어는 어디 마땅한 사이트가 안보이더군요.   목적이 간단히 읽고쓰고 대학생수준의 대화할 수 있는 수준이면 되는지라   문자 쓰는법 , 문법 그런거는 안따집...
    Date2021.05.23 질문 By타미타키 Reply10 Views375
    Read More
  7. No Image

    FTP 외부 접속이 불가능합니다

    엄 그러니까 원래는 모뎀에서 직통으로 저희집으로 인터넷이 들어왔는데 얼마전 인터넷이 안되는 문제 때문에 기사님이 따로 IPTIME 공유기를 한대를 더 설치하셨더라구요   그러니까 단자함-건물 iptime 공유기-제 iptime 공유기-NAS 인 ...
    Date2021.05.19 질문 By오늘도안녕히 Reply1 Views355
    Read More
  8. No Image

    일본 은행 계좌 관련 아는 분 계실까요?

    아내가 예전에 일본에 거주해서 살 때 일본 은행 계좌로 급여를 받고 생활을 했었습니다. 그리고 10년전쯤 한국으로 넘어왔는데요 혹시 그 은행 계좌가 아직도 살아있는지 알 수 있을까요? 근데 은행 계좌 번호를 잊어버렸다고 합니다 일...
    Date2021.05.19 질문 Bydmy01 Reply4 Views661
    Read More
  9. No Image

    폰트 강제적용이 안되는곳은 어떤이유에서일까요?

    제가 stylus와 MODpanel을 이용해서 폰트를 강제적용하고 있는데, 유독 눈에 띄게 안먹히는곳이 기글입니다.   제목은 적용이 안되는데, 본문 들어가면 또 폰트 적용이 됩니다.     네이버도 일부 제목부분이 폰트 강제적용이 안되더라고...
    Date2021.05.16 질문 By슈베아츠 Reply3 Views527
    Read More
  10. No Image

    외부에서 하단공유기에 접속할 수 있는 방법이 있을까요?

    메인공유기 밑에 무선용으로 허브모드로 설정된 공유기를 놓고 사용중입니다. 메인공유기는 외부접속포트를 설정해놓으면 외부에서도 접속이 가능한데, 하단에 있는 공유기를 외부에서 접속할 수 있는 방법을 모르겠습니다. 이걸 가능하게...
    Date2021.05.12 질문 Bytitle: 컴맹니즛 Reply3 Views880
    Read More
  11. 저희 아파트에 KT가 기가 인터넷망 구축제안서를 내서 받아들인다는데 이게 무슨 소리인가요?

      현재는 100mbps망이고.. 여기에 UTP인가 하는 장비로 기가인터넷 구현하는데.... 이게 가구마다 광케이블을 넣어준다는 이야기는 아니죠?
    Date2021.05.07 질문 Bycowper Reply12 Views7232 file
    Read More
  12. No Image

    AUthy앱 계정정보 삭제

    제가 authy 앱 계정정보 삭제를 하려 하는데 어떻게 해야 하나요?
    Date2021.05.07 질문 Bysw1154 Reply13 Views1752
    Read More
  13. 2회차(?) 부팅시 윈도우 파일공유 문제

      NAS에 윈도우 파일공유로 접속할경우 저런식으로 오류가 발생하며 접속이 되지 않습니다.   윈도우 파일공유가 아닌 다른 방법(ex, 크롬으로 접속)을 사용하거나 다른 컴퓨터에서 윈도우 파일공유로 접속시에는 정상접속이 됩니다. 따...
    Date2021.05.05 질문 ByYukirena Reply2 Views637 file
    Read More
  14. 구글계정 로그인 로그아웃 질문드립니다.

    https://gigglehd.com/gg/soft/9755536 1.제가 해당글 문의하고 이것저것 문의했었는데 가장 확실한 방법은  공초라 해서 5월1일날 공초를 했는데요 한 김에 모든 계정 비번 다 바꿨는데 구글계정 로그인 하면서 보안폴더 구글 로그인 시...
    Date2021.05.04 질문 Bysw1154 Reply8 Views1604 file
    Read More
  15. No Image

    자바 프로그램의 실행을 도와주세요.

    제가 지금껏 15년간 컴퓨터를 만지면서 수많은 프로그램들을 돌려봤지만, 항상 자바 뭐시기랑 관계된건 저와 상성이 좋지 않았습니다. 걸핏하면 튕기고, 실행자체가 안되며, 만약 된다해도 항상 자바를 깔아야만 되었기에 성질이 적지않게...
    Date2021.05.03 질문 Byveritas Reply11 Views884
    Read More
  16. No Image

    APM 이랑 자바 스프링 차이가 뭔가요?

    직업훈련에서 웹서버를 띄울 때    아파치, php, mariadb 를 이용해서 띄운 적이 있고 이를 통해 웹서버를 구축할 수 있다.   이런식으로 배워서 웹서버는 저렇게 만드는 줄 알았는데   웹서버개발하시는 분들 얘기는 스프링을 통해 개발...
    Date2021.05.01 질문 By주기율표 Reply5 Views864
    Read More
  17. No Image

    WebDAV와 일반적인 클라우드 드라이브의 차이점에 대해서

      현재 시놀로지를 사용중에 있습니다.   평소에는 백업 용도로 Synology Drive라고 하여, 구글의 백업 앤 싱크(Backup and Sync) 툴처럼 특정 폴더를 실시간으로 동기화하여 사용중에 있습니다.   그러다 이번에 WebDAV로 네트워크 드라...
    Date2021.05.01 질문 By노예MS호 Reply2 Views1114
    Read More
  18. No Image

    치아코인은 클라우드 용량 같은거로 하드를 쓰는건가요?

    아니면 GPU 채굴하듯이 아무 쓸모없는 행위로 낭비하는건가요?
    Date2021.05.01 질문 Byacropora Reply2 Views717
    Read More
  19. No Image

    IPTime의 Wi-Fi 5 기반 유무선 공유기 중 추천질문드립니다.

    위의 링크처럼 Wi-Fi 5 기반 IPTime의 유무선 공유기가 있는데요. 여기서 선택 장애가 있어서 질문드립니다.   EFM ipTIME A8004ITL : 인텔 SoC 기반 NPU 및 DDR3 512MB   EFM ipTIME A8004T : 미디어텍 MT7621 기반 NPU 및 DDR3 256MB   ...
    Date2021.04.30 질문 By블레이더영혼 Reply9 Views585
    Read More
  20. 크롬 동기화 질문드립니다

              1.제가 크롬 동기화 항목 들어갔더니 크롬 동기화 정지가 꺼지지 않는데 이게 정상인건가요? ​ 2.크롬 방문기록 북마크가 체크되어 있길래 동기화 관리탭 다 끄고 두번째창 동기화된 데이터 관리 들어가서 다 삭제했는데요 크...
    Date2021.04.27 질문 Bysw1154 Reply12 Views734 file
    Read More
목록
Board Pagination Prev 1 ... 19 20 21 22 23 24 25 26 27 28 ... 73 Next
/ 73

최근 코멘트 30개
까마귀
18:23
DoTheJihun
18:22
고자되기
18:21
렉사
18:20
렉사
18:19
포인트 팡팡!
18:19
고자되기
18:19
포인트 팡팡!
18:17
白夜2ndT
18:15
白夜2ndT
18:11
白夜2ndT
18:05
白夜2ndT
18:05
白夜2ndT
18:03
애플마티니
18:02
白夜2ndT
18:00
린네
17:58
白夜2ndT
17:57
白夜2ndT
17:55
별밤전원주택
17:51
유입입니다
17:47
미쿠미쿠
17:46
유입입니다
17:45
벨드록
17:44
IT가좋은뚱이
17:42
joyfuI
17:39
툴라
17:39
ASTRAY
17:34
별밤전원주택
17:34
Iwish
17:27
카에데
17:23

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

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


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

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


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

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

설치 취소