2014-02-28 3 views
0

아래 매크로는 Excel 통합 문서를 열고 제공된 데이터로 차트를 작성합니다. 오류 처리를 추가하여 지정된 Employee_source_data와 다른 이름의 Excel 통합 문서가 제공되면 메시지 상자가 표시됩니다 (예 : 제공된 스프레드 시트 이름이 "Employee_source_data"인지 확인하십시오). 어떤 아이디어가 이것을 달성하는 방법? 미리 감사드립니다!Excel 매크로에 사용자 지정 오류 메시지 추가

Sub GenerateEmployeeReport() 
    Workbooks.Open Filename:=ThisWorkbook.Path & "\Employee_source_data" 

    Range("E2").Select 
    ActiveCell.FormulaR1C1 = "=SUM(RC[-3]:RC[-1])" 
    Selection.AutoFill Destination:=Range("E2:E7"), Type:=xlFillDefault 
    Range("E2:E7").Select 
    Range("A1:A7,E1:E7").Select 
    Range("E1").Activate 
    ActiveSheet.Shapes.AddChart.Select 
    ActiveChart.SetSourceData Source:=Range(_ 
     "'Sheet2'!$A$1:$A$7,'Sheet2'!$E$1:$E$7") 
    ActiveChart.ChartType = xl3DColumnClustered 
End Sub 
+1

좋아, 달성하려는 목표는 분명하지만 지금까지 시도한 내용을 알려주지 않았습니다. 아무도 당신을 위해 코드를 작성하지 않습니다, 당신이 시도하고 뭘 작동하는지 보여줄 필요가 :) –

+0

안녕하세요 @ mehow 내가 진술과 msg 박스와 함께 엉망으로했지만 아주 멀리 내가 완전히 새로운 얻지 않았다 프로그래밍을 능가하고 요구 사항 중 하나입니다 :) –

+0

과정이 매우 간단합니다. 경로를 저장하고'InStr()'또는'StrComp()'를 사용하여 한 문자열이 다른 문자열 내에 존재하는지 확인하는 변수가 필요합니다. –

답변

1

Dir() 함수가 유용 할 것입니다.
는 또 다른 대안은 당신이 상황에 있다면 어디에 그들을 선택이 쉬울하려는의 FileDialog 컨트롤을 사용하는 것입니다

if dir(ThisWorkbook.path & "Employee_source_data*") = "" then 
    msgbox "Please ensure spreadsheet name provided is Employee_source_data" 
end if 

같은 것을보십시오. 내 경험상, 누구도 명명 규칙에 집착하지 않아도됩니다.

+0

아주 좋은 지적, 내가 FileDialog 감사 좀 봐 줄게! –

1
Sub GenerateEmployeeReport() 
    Dim strWorkbookName As String 
    Dim Answer As String 
Start: 
    strWorkbookName = InputBox("Enter Workbook", "Open Workbook") 

    On Error GoTo BadWorkbook 
    Workbooks.Open Filename:=ThisWorkbook.Path & "\" & strWorkbookName 

    Range("E2").Select 
    ActiveCell.FormulaR1C1 = "=SUM(RC[-3]:RC[-1])" 
    Selection.AutoFill Destination:=Range("E2:E7"), Type:=xlFillDefault 
    Range("E2:E7").Select 
    Range("A1:A7,E1:E7").Select 
    Range("E1").Activate 
    ActiveSheet.Shapes.AddChart.Select 
    ActiveChart.SetSourceData Source:=Range(_ 
     "'Sheet2'!$A$1:$A$7,'Sheet2'!$E$1:$E$7") 
    ActiveChart.ChartType = xl3DColumnClustered 
    Exit Sub 

BadWorkbook: 
    Answer = MsgBox("Please ensure spreadsheet name provided is Employee_source_data", vbRetryCancel) 
    If Answer = 4 Then 
     GoTo Start 
    Else: Exit Sub 
    End If 
End Sub 

고토 명령 라인 제목 WrongWorkbook에 코드를 점프하고 사용자에게 종료 또는 버튼을 취소 MSGBOX의 rety를 계속 할 수있는 기회를 제공합니다. 그런 다음 재 시도하면 goto start를 사용하여 sub를 다시 시작합니다. 다른 사람은 종료합니다.

관련 문제