2012-12-18 2 views
0

VBA에서해야 할 일이 있습니다. IDE를 열고 거기에서 예상대로 코드를 실행하면 txt 파일의 데이터가 새 임시 워크 북에로드됩니다 내 워크 시트에 붙이면 임시 워크 북을 닫습니다.파일에서 데이터를로드 할 때 Excel

하지만 Ctr + Sft + L과 같은 바로 가기를 사용하여 실행하면 임시 통합 문서에 데이터가로드되고 활성화되어 실행이 중지됩니다. 데이터를 다시 워크 시트에 붙여 넣지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?

Sub Load_Text() 
    Dim wsSheet As Worksheet 
    InsertWorkSheet ("Data") 

    Set wsSheet = ThisWorkbook.Sheets("Data") 

    Workbooks.OpenText Filename:="C:\Documents and Settings\w059\Desktop\20121107_Report.txt", _ 
    Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ 
    ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, _ 
    Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), _ 
    Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1)), TrailingMinusNumbers:=True 
    ActiveWorkbook.Worksheets(1).Cells.Copy wsSheet.Range("A1") 
    ActiveWorkbook.Close True 
End Sub 
Public Sub InsertWorkSheet(name As String) 
    Dim wsSheet As Worksheet 
    On Error Resume Next 
    Set wsSheet = ThisWorkbook.Sheets(name) 

    If wsSheet Is Nothing Then 
     ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count) 
     ThisWorkbook.Sheets(Sheets.Count).name = name 
    End If 
End Sub 
+1

나는이 점을 놓치고으로

ActiveWorkbook.Worksheets(1).Cells.Copy wsSheet.Range("A1") ActiveWorkbook.Close True 

을 대체 : 이것은 수정? 매크로에서 붙여 넣기 명령을 볼 수 없습니다. 덧붙여, 통합 문서에 워크 시트를 삽입하면 자동으로 현재 워크 시트가되므로 ThisWorkbook.Sheets.Add 다음에 ActiveSheet.Name = Name을 사용할 수 있습니다. 또 다른 점은 인수와 변수의 이름에 NAME과 같은 예약어를 사용하지 마십시오. 이상한 오류가 발생할 수 있으므로 (이 매크로에서 가장 먼저 변경해야 할 사항) –

+0

+1 @AndyBrown에 오신 것을 환영합니다 StackOverFlow : 여기에서 만나서 반갑습니다. [현명한 올빼미 블로그는 어떻게 운영됩니까?] (http://www.wiseowl.co.uk/blog/author/AndyBrown.htm)? – bonCodigo

+0

@AndyBrown ActiveWorkbook.Worksheets (1) .Cells.Copy wsSheet.Range ("A1") – kooshka

답변

0

나는 ActiveWorkbook에 잘못된 참조를 얻고 있었다 :

여기에 코드입니다.

Dim wb As Workbook 
Set wb = ActiveWorkbook 
wb.Worksheets(1).Cells.Copy wsSheet.Range("A1") 
wb.Close True 
관련 문제