나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 날개 (skfro11)

추천:  2
파일:     Book1[4].xlsm (20.9KB) 조회:  3004
제목:   [RE]vba 폼에 입력된 내용을 다른 엑셀 파일에 저장
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(95,97,2000,xp,2003,2007): 엑셀 2007

* 아래줄에 질문을 작성하세요 >>
안녕하세요.
혼자서 씨름하다가 안되서 문의글 올립니다.

c:에 있는 엑셀파일에 폼을 만들어 놓고.
해당 입력값을 다른 폴더에 있는 엑셀파일에 저장하고 싶습니다.
동일 파일내의 다른 시트로 저장시키는건 worksheets()를 사용해서 해결은
했는데..이걸 다른 파일로 할려고 하니..너무 막막하네요..

엑셀 vba 에서 어떤 명령어를 써야 하나요.?
==============[날개님 글에 대한 답변입니다]==============

예시 코드입니다.
해당 사용자정의 폼에
TextBox1 이라는 텍스트박스와
CommandButton1 이라는 버튼이 배치되어 있다고 가정합니다.
그 외에 파일명이나 경로명 등은 예시이므로, 적당히 알아서 수정하면 됩니다.
해당 사용자정의 폼의 코드 창에 다음 코드 내용을 삽입하되
각각의 이벤트 핸들러가 이미 존재하고 있다면 그 안에 적절한 위치에 
각 코드를 삽입해 넣으면 됩니다.

참고 자료:
 http://www.officetutor.co.kr/board/Dtype/bfrmvw.asp?f_tn=Dqa_excel_n2&f_bno=124103
 http://www.officetutor.co.kr//board/DType/bfrmvw.asp?f_tn=Dqa_excel_n2&f_bno=124064 ;

------------------------------
Dim dname As String  ' 대상 파일(통합문서)의 파일명 및
Dim dpath As String  ' 경로명을 전역변수로 선언

Private Sub CommandButton1_Click()
    Workbooks(dname).Worksheets("A").Cells(17, 3) = TextBox1
    ' 대상 통합문서-워크시트-셀(행,열)을 차례로 지정함
End Sub

Private Sub UserForm_Initialize()
    Dim wb As Variant
    Dim exist As Boolean
    dname = "매출처.xlsx"
    dpath = "D:\Users\CHOGA\Documents\"
            ' 드라이브명칭까지 포함하는 full name으로 지정하는 것이 안전함
    For Each wb In Application.Workbooks
        ' 현재 대상 파일이 열려 있는지 검사
        exist = wb.Name = dname
        If exist Then Exit For
    Next wb
    If Not exist Then Workbooks.Open dpath & dname
End Sub

Private Sub UserForm_Terminate()
    Workbooks(dname).Close SaveChanges:=True
    ' 사용자정의 폼을 닫으면 대상 파일도 저장하고 닫음
End Sub

==============[조삿갓님 글에 대한 답변입니다]==============

조삿갓님 답변 감사합니다.

위에 코드를 적용하여 테스트 하였습니다.
 Workbooks(dname).Worksheets("AQ").Cells(1, 1) = TextBox1
이 부분에서 런타임 오류 9  창이 뜨면서 작동하질 않네요..

저장되었으면 하는 파일은 그냥 바탕화면에 올려져있는 빈 엑셀파일로 하였습니다. 

혹시 다른걸 설치를 해야 하나요?
아니면 저장되었으면 하는 파일에 설정을 바꿔야 하는게 있나요?
 
[불량 게시물 신고]  
날개아 오류 내용은 
아래첨자 사용이 잘못되었습니다.. 라고 뜹니다..
05-04 (17:28)
삭제 ■신고
조삿갓코드를 잘못 베끼셨네요.
중요한 두 줄을 빼 먹으셨습니다.

    If Not exist Then Workbooks.Open dpath & dname
 End Sub  ' UserForm_Initialize 프로시저는 여기서 끝나야 함

 Private Sub UserForm_Terminate() ' 여기는 새로운 프로시저
' 즉, 위에 거는 폼이 열리려고 준비할 때 대상 파일을 찾아서
' 열어주는 거고
' 이 프로시저는 그 폼을 닫을 때 대상 파일도 닫으라는 것임
' 그런데, End Sub와 새 프로시저 시작 명령을 빼먹으니
' 폼이 열리면서 대상 파일을 열었다가 그냥 닫게 되네요
     Workbooks(dname).Close SaveChanges:=True
05-04 (20:50)
삭제 ■신고
날개앗..조삿갓님 감사합니다.
이것저것 수정하면서 지워졌었나 보네요.
해결되었습니다.
05-07 (09:26)
삭제 ■신고
        
  

작성일 : 2018-05-04(17:24)
최종수정일 : 2018-05-04(17:24)
 


 ◎ 관련글

  제 목   작성자   날짜
vba 폼에 입력된 내용을 다른 엑셀 파일에 저장 날개 2018-05-04
[RE]vba 폼에 입력된 내용을 다른 엑셀 파일에 저장 조삿갓 2018-05-04
[RE]vba 폼에 입력된 내용을 다른 엑셀 파일에 저장 날개 2018-05-04