본문 바로가기
전산처리/Misc

Excel-Word Integration

by goodasa 2020. 3. 22.

 

Excel-Word Integration

01 엑셀과 워드를 연동해서 회사문서를 작성해야 할 일이 생김

 

02 인터넷 검색을 통해 Amazing한 Krish를 알게됨

03 하지만 코드가 동작이 안된다!!! 유투브 댓글을 보니 거의 모든 사람들이 코드가 동작하지 않는다고 함. 하지만 나는 이 기능이 필요함

 

04 일단 왜 코드가 동작하지 않는지 확인. 일단 동작하지 않는 이유는

object 선언이 안되어 있어서 그렇다! 이건 VB와 VBA의 차이점임!!

  • 질문내용

    안녕하세요.지금 하는 프로젝트중에 vba를 사용해야 하는곳이 있어서 공부를 하고 있는데요.가장 기본적이라는 데이터베이스 연결도 너무 어렵네요.심지어 힘들면 오피스 엑세스 사용해서 연결해보라는데도 잘 되지가 않아요.ㅠㅠ

    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    
    Set conn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    
    conn.Open "Driver={Microsoft ODBC for Oracle};" & _
    "Server=orcl;" & _
    "Uid=scott;" & _
    "Pwd=pass;"

    지금 연습하는건 엑셀에 개발도구로 단추 하나 만들어놓고 그 단추에 매크로연결로 그 단추를 눌렀을시 기본적으로 전체 테이블 하나가 셀렉트 되는 걸 연습하려고 하는데 위에처럼 기본적인 접속만 해도 저렇게 해놓으면첫번째줄에 사용자 정의 형식이 정의되지 않았다는 에러메시지를 출력하네요.ㅠㅠ제가 검색해서 보기론 처음 dim으로 저렇게 위에 접속형태 지정해주고 해주면 된다는데 저렇게 해주는게 아닌건가요?위에 처음 접속세팅하는데 제가 무슨 실수를 했는지 꼭 조언 부탁드립니다.ㅠㅠ 어제 하루종일 봤는데도 안되니 너무 답답하네요.ㅠㅠ


    VB는 저런 Object참조를 넣는데 VBA에서는 그게 없는거 같네요.

    Object로 선언하고 CreateObject함수를 사용하면 될 것 같네요.

    Dim Obj As Object
    Dim RS As Object
    
    Set Obj = CreateObject("ADODB.Connection")
    Set RS = CreateObject("ADODB.Recordset")

 

05 하지만 제대로 선언을 했지만 계속 에러메시지가 나온다

다시 코드를 천천히 읽어보니

FIndRecord method가 잘못 사용되고 있었다

사실 04번에서 고친 object선언관련 내용은 에러와는 특별한 관련이 없는것 같다

 

06 그래서 완성된 코드

FindRecord 메서드 안의

  • FindText:= myname 은 엑셀파일에서 검색할 글자
  • Field:="No" 는 엑셀파일에서 검색할 해당 행 헤더
Sub getdata() 
Dim numRecord As Integer
Dim myName As String
Dim dsMain As MailMergeDataSource
ActiveDocument.MailMerge.ViewMailMergeFieldCodes = False
myName = InputBox("Enter the value: ")
Set dsMain = ActiveDocument.MailMerge.DataSource
If dsMain.FindRecord(FindText:=myName, Field:="No") = True Then
numRecord = dsMain.ActiveRecord
End if
End Sub

 

'전산처리 > Misc' 카테고리의 다른 글

초보자를 위한 5가지 머신러닝 프로젝트  (0) 2022.03.16
NIED strong-motion seismograph networks  (0) 2022.03.14
Fonts: 무료폰트  (0) 2022.03.01
Please allow us NO Windows Updates!!  (0) 2022.02.14