자유롭게 글을 올리시고 이야기하는 공간입니다. 경어체를 사용해 주시길 바라며, 자유로운 만큼 더욱 더 예절을 지켜주시기 바랍니다. 자게의 성격에 맞지 않거나, 광고성글, 타인에게 거부감을 주는 글은 임의 삭제/이동 조치 합니다.

출석부규정;출사코리아 회원은 누구나 작성 가능하며, 05;00 이후에 작성해 주시고 그 이전에 작성한 글은 통보없이 임의삭제 하니 참고 하여 올리시기 바랍니다.



이름 :
sky_2
제목 :
하도 답답해서리~ 엉뚱한 질문 하나 드려 봅니다.
조회 수 :
2527
등록일 :
2010.11.03.13:18:26

사진하고는 상관이 없읍니다만.... 하다 하다 잘 안되어서 자문을 구해 봅니다.

출코에서 안되는 게 엄끼에~~~~~emoticon

 

엑셀에서 어떤 통화의 금액을 숫자로 입력하면 이것을 문자로 풀어주는 함수 기능이 있읍니다.

예를 들어서... "Amount"라는 이름의 셀에다가 US$12,345.10 을 입력하고 나서

="US Dollars "&SpellNumber_USD(Amount)라고 입력하면

US Dollars TWELVE THOUSAND THREE HUNDRED AND TEN CENTS 라고 문자로 풀어서 써 줍니다.emoticon

 

그런데.... 요 기능을 해주는 함수를 제가 사용하고있는 컴의 엑셀에다가 추가시킬려고 하는데... 도무지 안되네요....

 함수 추가하는 방법 아시는 분 좀 아르켜 주시면 감사하겠읍니다...emoticon



profile
2010.11.03
13:43:40

안녕하세요. ^^;;
제가 답변을 드릴 수 있을 것 같습니다.

일단 사용자 모듈을 추가해야 기능을 사용하실 수 있습니다.

1) 원하시는 엑셀 파일을 여신 다음

2) Alt + F11 을 눌러서 Visual basic 창을 띄웁니다.

3) 창의 왼쪽 상단의 VBAProject 트리상의 아무 엔트리에 마우스 우클릭을 하시고 "삽입" -> "모듈"을 선택합니다.

4) 그럼 모듈 코드를 입력하는 창이 뜨게 됩니다.

5) 다음의 코드를 모듈 코드 넣는 곳에 복사합니다.

Option Explicit


'****************
' Main Function *
'****************

Function SpellNumber(ByVal MyNumber)
Dim Dollars, Cents, Temp
Dim DecimalPlace, Count

ReDim Place(9) As String
Place(2) = " Thousand "
Place(3) = " Million "
Place(4) = " Billion "
Place(5) = " Trillion "

' String representation of amount.
MyNumber = Trim(Str(MyNumber))

' Position of decimal place 0 if none.
DecimalPlace = InStr(MyNumber, ".")
' Convert cents and set MyNumber to dollar amount.
If DecimalPlace > 0 Then
Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & _
"00", 2))
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
End If

Count = 1
Do While MyNumber <> ""
Temp = GetHundreds(Right(MyNumber, 3))
If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
If Len(MyNumber) > 3 Then
MyNumber = Left(MyNumber, Len(MyNumber) - 3)
Else
MyNumber = ""
End If
Count = Count + 1
Loop

Select Case Dollars
Case ""
Dollars = "No Dollars"
Case "One"
Dollars = "One Dollar"
Case Else
Dollars = Dollars & " Dollars"
End Select

Select Case Cents
Case ""
Cents = " and No Cents"
Case "One"
Cents = " and One Cent"
Case Else
Cents = " and " & Cents & " Cents"
End Select

SpellNumber = Dollars & Cents
End Function

'*******************************************
' Converts a number from 100-999 into text *
'*******************************************

Function GetHundreds(ByVal MyNumber)
Dim Result As String

If Val(MyNumber) = 0 Then Exit Function
MyNumber = Right("000" & MyNumber, 3)

' Convert the hundreds place.
If Mid(MyNumber, 1, 1) <> "0" Then
Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
End If

' Convert the tens and ones place.
If Mid(MyNumber, 2, 1) <> "0" Then
Result = Result & GetTens(Mid(MyNumber, 2))
Else
Result = Result & GetDigit(Mid(MyNumber, 3))
End If

GetHundreds = Result
End Function

'*********************************************
' Converts a number from 10 to 99 into text. *
'*********************************************

Function GetTens(TensText)
Dim Result As String

Result = "" ' Null out the temporary function value.
If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...
Select Case Val(TensText)
Case 10: Result = "Ten"
Case 11: Result = "Eleven"
Case 12: Result = "Twelve"
Case 13: Result = "Thirteen"
Case 14: Result = "Fourteen"
Case 15: Result = "Fifteen"
Case 16: Result = "Sixteen"
Case 17: Result = "Seventeen"
Case 18: Result = "Eighteen"
Case 19: Result = "Nineteen"
Case Else
End Select
Else ' If value between 20-99...
Select Case Val(Left(TensText, 1))
Case 2: Result = "Twenty "
Case 3: Result = "Thirty "
Case 4: Result = "Forty "
Case 5: Result = "Fifty "
Case 6: Result = "Sixty "
Case 7: Result = "Seventy "
Case 8: Result = "Eighty "
Case 9: Result = "Ninety "
Case Else
End Select
Result = Result & GetDigit _
(Right(TensText, 1)) ' Retrieve ones place.
End If
GetTens = Result
End Function

'*******************************************
' Converts a number from 1 to 9 into text. *
'*******************************************

Function GetDigit(Digit)
Select Case Val(Digit)
Case 1: GetDigit = "One"
Case 2: GetDigit = "Two"
Case 3: GetDigit = "Three"
Case 4: GetDigit = "Four"
Case 5: GetDigit = "Five"
Case 6: GetDigit = "Six"
Case 7: GetDigit = "Seven"
Case 8: GetDigit = "Eight"
Case 9: GetDigit = "Nine"
Case Else: GetDigit = ""
End Select
End Function

6) Visual basic 창을 닫으시고 엑셀창에서 다른 함수 사용하시는 방법처럼 "=SpellNumber($A1)" 과 같이 함수를 사용하시면 됩니다. ^^;

혹시 설명이 부족하면 다시 설명 드릴 수 있으니 댓글 남겨주세요~

 

profile
2010.11.03
16:09:32

fates님, 한가지 고민 더 자문을 구합니다.
말씀하신 방식으로.... 현재의 Worksheet에서는 작동이 되는데 이것을 모든 Worksheet에 적용을 시킬려니 안되는군요....(ㅠ.ㅜ)
PERSONAL.xls에다가 모듈 추가를 하고 Worksheet를 열고 해보면 작동이 안되네요....
"현재의Worksheet" 뿐만이 아니고 "범용적"으로 적용시키는 방법 좀 가르쳐 주시면 감사하겠읍니다^^;;

profile
2010.11.03
19:26:59

애고.. 글 확인을 늦게해서.. 답변이 늦었네요 ^^;;
각 워크시트 별이 아닌 "범용적"으로 사용하시기 위해서는 말씀하신 것 처럼 Personal.xlsb 파일 (개인 매크로 통합파일)을 만들어서 사용하시면 됩니다.
그럼 순서대로 설명을 드리겠습니다.

일단은 office 2007을 사용하고 계시다는 가정하에 설명 드리겠습니다. ^^;

1) 엑셀 실행창에 젤 왼쪽 위에 있는 엑셀 아이콘을 클릭합니다. (Alt 후 F를 누르셔도 됩니다.)

2) 메뉴 오른쪽 하단에 "Excel 옵션"을 선택합니다.

3) 팝업이 뜨면 기본설정의 "Excel에서 가장 많이 사용하는 옵션"에서 "리본 메뉴에 개발 도구 탭 표시"에 체크를 한 후 확인을 누릅니다.

4) 화면에 추가된 개발도구 탭을 선택합니다.

5) 매크로 기록을 선택합니다.

6) 매크로 이름은 상관없고 매크로 저장위치를 "개인용 매크로 통합문서"로 선택 후 확인을 누릅니다.

7) 아무 셀을 클릭하고 도구모음의 "기록 중지"를 누릅니다.

8)  Alt + F11을 눌러 Visual Basic 창을 띄웁니다.

9) 왼쪽에 프로젝트 트리를 보시면 작업중인 위크시트 말고 "PERSONAL.XLSB"라는 프로젝트가 보입니다. 프로젝트의 모듈에 보시면 기록된 메크로 코드가 보입니다.
   
    Sub Macro1( )
      .....
    End Sub
   
   와 같은 형태의 코드가 있으면 모두 삭제를 하고 기존에 제가 설명드린 글의 코드를 복사해서 넣습니다.

10) Visual Basic 창의 파일 메뉴에서 PERSONAL.XLSB 저장을 누릅니다.

11) 이제 VB 창을 닫습니다.

12) 모든 워크 시트에서 사용가능한 매크로가 personal.xlsb에 저장되어있습니다.

13) 기존에 "=SpellNumber(100)" 과 같이 함수를 호출하는 방법 대신에 "=personal.xlsb!SpellNumber(100)" 과 같은 방법으로 함수를 호출해서 사용하시면 됩니다.

설명이 좀 장황했는데.. 혹시 하시다가 안되시면 다시 댓글 달아주시면 화면 캡쳐를 해서 설명드리겠습니다. ^^;;

profile
2010.11.03
23:11:02

자세하신 설명에 또 다시 감탄을 합니다^^
설명하신 내용 흐름은 대충 이해가 됩니다.
저는 그냥 Personal.xls에다가 모듈 추가만 했더니 안되더군요~ㅋ
내일 사무실에 가서 실행을 해보고 혹시 더 궁금한 사항이 있으면 다시 문의를 드리겠읍니다.
정말 정말 감사합니다^^;;

profile
2010.11.04
00:29:35

가르쳐 주신대로 해보니 다음과 같은 결과 입니다(엑셀2007)^^
-------------------------------------------------------------------------------
- 제가 기존에 사용하고 있는 Personal.xls에는 매크로 모듈3개가 들어가 있는 상태 입니다.
- 개발도구탭에서 매크로 기록을 하고 VB창에 들어 가니 Personal.xlsb란 프로젝트는 없고,
  기존의 Personal.xls프로젝트가 있고 모듈4에 기록이 되어 있었읍니다.
- 편집을 한 후에 Personal.xls 저장하기를 클릭하니, 읽기전용이라 저장할 수 없으니 사본으로 저장하라면서
   Personal.xlsb로 저장이 되었읍니다.
- VB창을 닫고 실행을 하니 잘 실행이 되었읍니다.
- 그런데 엑셀을 닫았다가 다시 실행을 시키면 자동으로 Personal.xls가 연계되어 로딩이 되고
  Personal.xlsb는 로딩이 되지 않는 것 같습니다.
- 그래서 Personal.xlsb 파일을 찾아 들어가서 클릭을 하니, 파일형식 또는 확장명이 잘못되어 열수 없으니
  파일이 손상되었는지 확장명이 파일 형식과 일치하는지 확인해보라는 경고문이 뜹니다.
  그리고는 실행이 되지 않고 새로 작성한 매크로도 작동이 안되는 군요...(ㅠ.ㅜ) 

Personal.xls위치는 Program Files\Microsoft Office\Office12\Xlstart\ 에 있고
Personal.xlsb 위치는 User\사용자이름\AppData\Roaming\Microsoft\Excel\Xlstart\ 에 있읍니다.

뭐가 잘못되었는지요?
기존의 Personal.xls가 자동 로딩이 되어서 문제인지요?
기존의 Personal.xls Module4에 그냥 추가시켜 사용해도 될런지요?
 (윈도우7에선 저장이 안되므로 Vista에서 만들어 복사해 넣으면 될런지요...?)

그리고 이런 경우에도 [매크로단추] 만들 수 있는지요...?

지금까지도 많은 도움을 받았는데... 더욱 욕심을 부려 번거롭게 해드려서 죄송합니다 _-_;;; 

profile
2010.11.04
10:13:00
애고.. 저도 테스트를 좀 해봐야 알 것 같네요.. ^^;;
저는 기존에 사용하던 .xls가 없는 상태로 테스트를 했었는데,  (윈도우 7 + Office 2007 조합입니다.)
일단 상황만 봐서는 기존에 사용하시던 .xls 프로젝트가 자동으로 로딩 되는 것 때문에 그런 것으로 생각됩니다.
(100% 확실한 것은 아니지만) 제가 알기로 .xls는 오피스 2003까지 사용되던 파일 형식이고 2007에서는 .xlsb 파일을 사용하는 것으로 알고 있습니다.
기존의 .xls 파일의 연동을 끊고 해당 파일에 있던 매크로 모듈들을 .xlsb 파일에 넣으면 될 것 같다는 생각입니다.

이번엔 테스트를 좀 해봐야할 것 같아서 바로 답을 못드릴 것 같네요. ㅠㅠ (아직 교수님 눈치보는 학생인지라 연구실에서 다른 걸 오래 못하거든요 틈틈히 해보겠습니다.)

아.. 그리고 [매크로단추]에 대한 질문은 제가 제대로 이해를 못했는데, 다시 한 번 설명해주실 수 있나요? ^^;;
profile
2010.11.04
12:08:17

안녕하세요^^;;
저는 집 PC에 윈7+Office7 사무실 노트북 윈Vista+Office7 이며,
Personal.xls는 Office2000 인가 2003 인가에서 만든 것을 복사해 넣고 계속 사용해 왔던 것입니다.
그래서 Office7에 형식이 .xlsb 인지는 알수가 없고 지금 모두 .xls로 되어 있읍니다.

지금 사무실에 와서 Vista+Office7에서 Personal.xls에 매크로 모듈을 추가하고 실행해 보니 작동이 잘 됩니다.
그런데 매크로 보기를 하면 새로 만들은 매크로는 목록에 보이질 않네요.... 엑셀옵션-고급-빠른실행도구모음-매크로 에도 보이지 않구요~@@_???

매크로 단추는.... Office2000 인가 2003인가 시절에 도구모음(?)-명령-매크로에서 해당 매크로를 끌어다가 화면위에 놓으면 단축 아이콘이 생기고 이를 "매크로연결"로 해당 매크로와 연계시킨 후에 이것을 엑셀 상단 도구모음줄에 끌어다 놓고 그 담 부터는 이 단추만 누르면 매크로가 실행되죠~ 단추 모양을 그림으로 또는 알파벳으로 편집할 수도 있구요(각각 매크로 간에 구분을 위해서요....)
그런데 Personal.xls를 복사해 넣어도 이 단추는 같이 복사가 안되고 또... 엑셀 버젼이 진화(?)되면서 조금식 달라져서 Office2003에서는 겨우 어찌 어찌 해서 다시 만들어 사용했었는데.... Office2007이 되면서 단추를 어떻게 만들긴 했었는데..... 단추모양편집이나 문자표시 하는 방법을 몰라서 모든 단추가 똑같이 되어버렸으며.... 
지금은 아무리 찾아봐도 어디서 어떻게 단추를 만드는지 알 수가 없네요....(ㅠ.ㅜ)

즐거운 하루 되시기 바랍니다^^;;

profile
2010.11.04
13:56:46

저도 엑셀 2007은 자주 사용하지 않다보니, 예전과 다른게 너무 많아서 햇깔리는게 참 많네요 ^^;
좀 찾아보니 매크로 단추를 만들 수는 있는거 같은데, 말씀하신 것 처럼 도구 모음줄에 매크로 아이콘을 추가하는 방법은 못찾겠네요;;
워크시트 상에 버튼을 만들어서 실행할 수 있게 하는 방법은 있는데, 원하시는건 단추 또한 "범용적"으로 사용하길 원하시 것 같은데 도움이 못돼서 죄송합니다. ^^;;;

.xls 파일에 관해서는 제가 이전 댓글에 단 것 처럼, 사용하시던 .xls 파일의 모듈 코드를 .xlsb 파일에 추가하시고 .xls가 자동으로 열리는걸 끊어주시면 될 것 같네요.
2007부터는 개인 매크로 통합 문서를 .xlsb로 관리하고 있어서 두가지 통합 문서가 충돌하는 것 같습니다.

혹시 워크시트에 단추 만드는 것이라도 괜찮으시다면 다시 댓글 남기도록 하겠습니다. ^^;;;
덕뿐에 저도 오랜만에 엑셀 공부를 하게 됐네요. 기억이 새록새록 살아나는 것이 잼있습니다. 하하

profile
2010.11.04
14:07:06

애그~~~~~~~바쁘실텐데요..........
단추는 도구모음줄에 추가해두고 범용적으로 사용할려고 하는 것 입니다.

윈도우7 에서는 몇가지 파일들이 읽기전용으로 보호화된 것들이 있더군요.... PERSONAL.XLS(B) 처럼요~~~
우선에는 이 매크로를 윈도우VISTA에서 사용할 것이므로.....
현재 상태로 사용을 하다가 나중에 윈도우7에서 사용하게 될 경우에 새롭게 실험을 해보면 될 것 같습니다^^

그동안 친절하게 도움을 주신 것 정말 감사를 드립니다. 늘 행복하시기를 바랍니다^^;;

profile
2010.11.04
20:23:43

노트북 비스타에서 PERSONAL.XLS에다가 입력한 후에 복사해 와서
PC 윈7에 있던 PERSONAL.XLS 삭제하고 복사해온 것 집어넣고 시도해보니 잘 작동되네요~~~~^^;;
덕분에 저한테 중요한 문제가 해결되게되어 감사를 드립니다^^;;

profile
2010.11.03
15:07:28

emoticon우와~ 너무 너무감사합니다^^;;;
지난 몇년 동안에 구닥다리 매크로 방식으로 사용하다 오류가 자주나서 고민해 왔었는데~
fates님께서 왕고민을 확~! 풀어 주셨읍니다.
정말 감사합니다~~~~~~emoticonemoticon

profile
2010.11.03
15:24:22
덕분에 한수 배우고 갑니다.... ^^
profile
2010.11.03
15:26:22
ta tes ~         emoticonemoticon
profile
2010.11.03
15:26:43
와우..언빌리브...엑셀고수님이 여기에 계셨네요..놀라울 따름입니다..
profile
2010.11.03
15:35:16

역시 안되는건 엄꾼요. ^^ emoticon

profile
2010.11.03
15:37:18

역~~쉬....
출...코 emoticonemoticonemoticonemoticon
안되는거 빼고 다~~~된다는.ㅋㅋㅋㅋㅋ

profile
2010.11.03
15:47:54

출코는 희망이다..ㅎㅎ
온갖 전문인들이 다들 계시네요..^^*

profile
2010.11.03
15:51:45

ㅎㅎㅎ

저도 엑셀에 대해서는 조금은 아는데..

역쒸 고쑤님은 따로 계셨군요...

언제 함 뵙고 한수 배우야겠습니다.

profile
2010.11.03
16:02:32
엑셀이라기보단 VB의 고수님이시네요.
이런 프로그램을 만들려고 생각하면....
머리가 빙빙돕니다.
profile
2010.11.03
16:04:52
모든게 다 해결 되는군요 ^^
profile
2010.11.03
16:06:01
저도 엑셀 자격증이 있는데 ....
전혀 모르는 .........
대단한 출코입니다^^
profile
2010.11.03
16:07:13
출코인은 전부다 능력자이시군요. ㅎㅎㅎ

profile
2010.11.03
16:10:04
출코는 지식 동아리?
profile
2010.11.03
17:16:34
안되는게 없는 출사코리아네요
출사코리아 화이팅!!!
profile
2010.11.03
18:47:48
안되는게 없는 출사코리아네요
출사코리아 화이팅!!!.........(2)
profile
2010.11.03
19:41:51
휴.. 왠지 출코에서 공짜 정보만 얻어먹는 기분이었는데 제가 도움이 된다니 기분 좋네요 ^^;;
profile
2010.11.03
21:18:26
안되는게 없는 출사코리아네요
대단한 출사코리아 화이팅!!!.........(3)
List of Articles
번호 글쓴이 제목 날짜 조회 수sort
공지 엔죠 [공지] 스마트폰 페이지에서 파일첨부가 보이지 않을때 - (안드로이드 계열 ... file [20] 2013-08-22 231893
공지 엔죠 ★ 스마트한 출코 모바일 페이지 (스마트폰에서 사진올리는 방법!) file [58] 2011-04-26 246181
공지 ㅊ ㅓ ㄹ ㅣ/손상철 카메라로 찍은 사진올리는 방법~(동영상) file [70] 2010-07-13 244120
공지 엔죠 윈도우7 ie9에서 파일첨부가 되지 않을때 - 기타 잦은 질의응답 file [10] 2010-06-15 248352
공지 ㅊ ㅓㄹ ㅣ/손상철 추상 갤러리 개설했습니다. [27] 2020-07-06 105271
  • 구단

거제 통영 출사 문의드립니다. [20]

  • 2014-02-26
  • 조회 수 2528
  • 김기덕

한국 영국 프랑스 미국 중상층의 기준 [14]

  • 2014-01-17
  • 조회 수 2528
  • sky_2

하도 답답해서리~ 엉뚱한 질문 하나 드려 봅니다. [27]

  • 2010-11-03
  • 조회 수 2527
  • 순수 (b) (황차곤)

~~~ # 방탄 소년단 상징색 조명 ~~~ file [15]

  • 2019-06-17
  • 조회 수 2527
  • 긴꼬리.

오늘 황매산 상황 ㅡ 두번다시 안오고 싶습니다 file [13]

  • 2015-05-09
  • 조회 수 2527
  • 두두리

초상권에대하여? [14]

  • 2015-02-24
  • 조회 수 2527
  • 아이스크림/

함백산 철쭉 상황 file [20]

  • 2016-05-24
  • 조회 수 2526
  • bluegrip

신문에 난 황매산 철쭉 사진 한장 file [18]

  • 2017-04-20
  • 조회 수 2525
  • 송원/조웅제

누군가 옆에 있어준다면.. file [37]

  • 2014-11-17
  • 조회 수 2524
  • kj ㅈ ㅔ우스 / 金年泰

장비 손질합시다 !! file [26]

  • 2015-08-25
  • 조회 수 2523
  • 쌍둥이아빠

2014년 달력 file [18]

  • 2014-01-03
  • 조회 수 2523
  • kj ㅈ ㅔ우스 / 金年泰

신원사에 다녀 왔습니다 ^^* file [24]

  • 2015-08-05
  • 조회 수 2521
  • EF자전거/강동구

인물 보정 프로그램 소개합니다. file [19]

  • 2015-02-22
  • 조회 수 2520
  • 둔자

그때까지는 괜챦겠지만 .. file [27]

  • 2016-05-10
  • 조회 수 2519
  • 태임

제발 이러지들 맙시다. file [18]

  • 2014-10-13
  • 조회 수 2519
  • kj ㅈ ㅔ우스 / 金年泰

우중에 ... file [31]

  • 2016-05-16
  • 조회 수 2518
  • (홀스타인)박무길

어저께---궁---오늘두 좋와유 file [16]

  • 2016-09-09
  • 조회 수 2517
  • ㅊ ㅓ ㄹ ㅣ/손상철

죙일 작업 했습니다~ㅠㅠ file [29]

  • 2014-12-07
  • 조회 수 2516
  • 순수 (b) (황차곤)

광복 70 부산항 불꽃 file [16]

  • 2015-08-15
  • 조회 수 2516
  • 이과수/유진현

새로 영입해 성능 실험해보았습니다..^^* file [22]

  • 2015-08-31
  • 조회 수 2515





XE Login