2012-08-13 1 views
0

모든 매크로와 함께 완벽하게 실행되는 기존 .xlsm 파일이 있습니다. 문제는 다른 매크로를 기록하려고 할 때 열을 추가하고 Enter 키를 누른 다음 "Microsoft Excel이 응답을 중지했습니다."라는 메시지가 나타납니다. 나는 그 과정을 끝내야한다. 이 매크로는 Excel 2003에서 가져 와서 2010 년에 작동하도록 수정 한 기존 매크로와 관련이 있다고 가정합니다.매크로 기록시 Excel이 멈춤

이 매크로에는이 문제를 일으킬 수있는 비 호환성이 있습니까?

Sub Auto_Open() 

    Wbname = ActiveWorkbook.Name ' this needs to be first so the move works properly 
    fileToOpen = Application.GetOpenFilename("CSV files (*.csv), *.csv", 1, "Select file to open") 
    If fileToOpen <> False Then 
     Workbooks.Open (fileToOpen) 
    End If 

    sheetname = ActiveSheet.Name 

    Sheets(sheetname).Select 
    Sheets(sheetname).Move Before:=Workbooks(Wbname).Sheets(1) 

    Call Weekly_RTP 

End Sub 

Sub Weekly_RTP() 
' 
' Macro recorded 01/12/12 by Robert Gagliardi 
' 
' This next section (up to call sort_data) is needed until we get the formatting correct. 
' Clearing the last rows and adding misc headers will solve the short term problem 
' Need this once pivot table is created. Can't have heading row without names in it 
    Range("L1").Select 
    ActiveCell.FormulaR1C1 = "Misc" 
    Range("M1").Select 
    ActiveCell.FormulaR1C1 = "Misc1" 
    Columns("N:Z").Select 
    Selection.ClearContents 

    Call Sort_data 

    ' concat mui & object to make it easy to find dups use countifs once at excel 2007 or greater 
    Range("N1").Select 
    ActiveCell.FormulaR1C1 = "Junk" 
    Range("N2").Select 
    ActiveCell.FormulaR1C1 = "=RC[-7]&RC[-5]" 
    Range("N2").Select 
    Selection.Copy 
' need to find last row using column K2 
    lastrow = ActiveSheet.Range("K2").End(xlDown).Select 
' Selection.Offset(0, 3).Select Moves over 3 cells 
    Range("N2", Selection.Offset(0, 3)).Select 
    ActiveSheet.Paste 
    Application.CutCopyMode = False 


    Columns("C:C").Select 
    Selection.Insert Shift:=xlToRight 
    Range("C1").Select 
    ActiveCell.FormulaR1C1 = "Alerts" 
    Range("C2").Select 
    ActiveCell.FormulaR1C1 = "=IF(COUNTIF(R2C[12]:RC15,RC[12])=1,COUNTIF(C[12],RC[12]),"" "")" 
    Range("C2").Select 
    Selection.Copy 
' need to find last row using column B2 since column C was just added 
    lastrow = ActiveSheet.Range("B2").End(xlDown).Select 
' Selection.Offset(0, 1).Select Moves over 1 cell from last cell in column B 
    Range("C2", Selection.Offset(0, 1)).Select 
    ActiveSheet.Paste 
    Application.CutCopyMode = False 


    Call Create_pivot 
    Call Save_data 

' how to select a range of cells with data in them 
' Worksheets(ActiveSheet.Name).Activate 
' ActiveCell.CurrentRegion.Select 

End Sub 


Sub Create_pivot() 

    Wbname = ActiveWorkbook.Name 

' Insert columns to make room for pivot table 
    Columns("A:I").Select 
    Selection.Insert Shift:=xlToRight 

    myData = Sheets(ActiveSheet.Name).[J1].CurrentRegion.Address 
    mySheet = ActiveSheet.Name & "!" 
    tableDest = "[" & Wbname & "]" & mySheet & "R1C1" 
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ 
     mySheet & myData).CreatePivotTable TableDestination:=tableDest, TableName _ 
     :="RTP_alerts", DefaultVersion:=xlPivotTableVersionCurrent 
    With ActiveSheet.PivotTables("RTP_alerts").PivotFields("Application") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 
    With ActiveSheet.PivotTables("RTP_alerts").PivotFields("Object") 
     .Orientation = xlRowField 
     .Position = 2 
    End With 
    ActiveSheet.PivotTables("RTP_alerts").AddDataField ActiveSheet.PivotTables(_ 
     "RTP_alerts").PivotFields("Alerts"), "Count of Alerts", xlCount 
    ActiveWorkbook.ShowPivotTableFieldList = False 
    Application.CommandBars("PivotTable").Visible = False 

    Columns("G:I").Select 
    Selection.Delete Shift:=xlToLeft 
    Range("D2").Select 
    ActiveCell.FormulaR1C1 = "Owner" 
    Range("E2").Select 
    ActiveCell.FormulaR1C1 = "Problem Ticket" 
    Columns("E:E").ColumnWidth = 13 
    Range("F2").Select 
    ActiveCell.FormulaR1C1 = "Comments" 
    Columns("F:F").ColumnWidth = 48 

End Sub 

Sub Save_data() 

    Filename = ActiveWorkbook.Name 
    Do 
     Fname = Application.GetSaveAsFilename(Filename, fileFilter:="Excel Files (*.xlsm), *.xlsm") 
    Loop Until Fname <> False 
    ActiveWorkbook.SaveAs Filename:=Fname, FileFormat:=52 

End Sub 

Sub Sort_data() 

    Columns("A:M").Select 
    Selection.Sort Key1:=Range("G2"), Order1:=xlAscending, Key2:=Range("I2") _ 
     , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _ 
     False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _ 
     :=xlSortNormal 
    Range("A1").Select 

End Sub 
+0

어둠 속에서 그냥 쐈어. 워크 시트 변경 이벤트에 코드가 있습니까? –

+0

매크로를 기록하려고 할 때 Excel이 작동을 멈 추면 왜 위의 코드와 관련이 있습니까? 이렇게하려고 할 때 위의 매크로가 실행 중입니까? –

+0

아니요 실행되지 않습니다. 얼어 붙는 이유에 대한 단서가 없지만 다른 컴퓨터에서도 마찬가지입니다. 워크 시트 변경 이벤트에 코드가 없습니다. – rupes0610

답변

0

동일한 문제가 발생했습니다. 시도해 볼 수 있습니다. start-->run으로 이동하여 상자에 %temp%을 입력하십시오. 그러면 임시 파일이 나타납니다.

전체 또는 일부를 삭제하고 컴퓨터를 다시 시작한 다음 다시 시도하십시오.