반응형
안녕하세요. 누군가에게 기댈 수 있는 곳이 되길 바라며, 함께 할 수 있는 일상 공유로 SNS에 컨텐츠를 만드는 행복랜드 행부장(HappyLandHB)입니다.
엑셀에서 VBA를 이용하여 Log를 파일에 저장하는 방법입니다. On Error GoTo 발생시 처리방법도 포함합니다.
글을 보시기 전에 공감하트 클릭 부탁드립니다. (위 혹은 아래에 위치)
"합산하기" 클릭 시에 동작합니다.
아래는 VBA소스 입니다. (첨부한 엑셀에서 Alt + F11 클릭 후에 확인 가능)
'//Log 파일이름
Public g_strLogFileName As String
'//Save Log
'//Scripting Runtime Library 사용하기
'//도구-참조 클릭 후에 Microsoft Scripting Runtime 추가
Public g_objFSO As Scripting.FileSystemObject
Public g_scrText As Scripting.TextStream
Public Function LogFile_WriteError(ByVal sFileName As String, ByVal sCalledFunctionName As String, _
ByVal sMessage As String)
Dim sText As String
On Error GoTo ErrorHandler
If (g_objFSO Is Nothing) Then
Set g_objFSO = New FileSystemObject
End If
If (g_scrText Is Nothing) Then
If (g_objFSO.FileExists(sFileName) = False) Then
Set g_scrText = g_objFSO.OpenTextFile(sFileName, IOMode.ForWriting, True)
Else
Set g_scrText = g_objFSO.OpenTextFile(sFileName, IOMode.ForAppending)
End If
End If
'//마지막에는 vbCrLf 제외
sText = sText & ">> " & Format(Date, "yyyy.mm.dd") & " " & Format(Time, "hh:mm:ss") & vbCrLf
sText = sText & ">> " & "호출한 함수: " & sCalledFunctionName & vbCrLf
sText = sText & ">> " & sMessage & vbCrLf
sText = sText & "######################################################################"
g_scrText.WriteLine sText
g_scrText.Close
Set g_scrText = Nothing
Exit Function
ErrorHandler:
Set g_scrText = Nothing
Call MsgBox("파일(" & sFileName & ")에 저장할 수 없습니다.(파일경로를 확인필요)", vbCritical, "Log저장 오류")
End Function
Sub cmdSum_Click()
Dim rRange As Range
Dim rCell As Range
Dim iSum As Integer
Dim sErrorMsg As String
Dim strFileName As String
Dim strSubName As String
Dim strMsg As String
Set rRange = ActiveSheet.Range("B2:B6")
For Each rCell In rRange
On Error GoTo ErrorHandler:
iSum = iSum + rCell.Value
Next rCell
ActiveSheet.Range("B9") = iTotal
Exit Sub
ErrorHandler:
g_strLogFileName = "TEST"
strFileName = "C:\temp" & "\" & "log" & Format(Date, "yyyymmdd") & "_" & g_strLogFileName & ".txt"
strSubName = "cmdSum_Click()"
strMsg = "Error Number: " & Err.Number
MsgBox strMsg
Call LogFile_WriteError(strFileName, strSubName, strMsg)
Resume Next
End Sub
샘플 Excel파일을 아래에 첨부합니다. (파일을 실행하기 위해, 파일 실행 후에 "편집 사용"을 클릭해야 매크로가 실행합니다.)
도움이 되셨다면 공감하트 클릭 부탁드립니다. (위 혹은 아래에 위치)
감사드리며…
오늘 더 행복하시길.
감사합니다.
반응형
'IT와 꿍짝 > 엑셀쉽게' 카테고리의 다른 글
엑셀에서 피벗 테이블을 이용 시 별도로 ∑값 내 추가후, "기준값과의차이"를 이용한 직전월 값과 비교방법입니다.(샘플 다운로드 가능) Pivo (0) | 2022.07.16 |
---|---|
엑셀에서 출력시 메모를 함께 출력 방법입니다. Memo, 오피스, Excel, microsoft office (0) | 2022.06.20 |
엑셀(Excel)에서 피벗(pivot) 테이블 값 표시 형식으로 볼 수 있는 종류입니다. (0) | 2022.05.15 |
구글(Google) 스프레드시트에서 "범위 이름 지정" 후에 "데이터 확인"을 사용하여 엑셀(Excel)에서 드롭다운 목록처럼 사용하는 방법 (0) | 2022.02.02 |
엑셀(Excel)에서 날짜를 한글 요일로 표기하는 방법(샘플 양식 포함 - 다운로드 가능) (0) | 2022.02.02 |
댓글