2017-12-29 7 views
0

붙여 넣기를 제외한 거의 모든 작업이 완료되었습니다. 내 문제 : 내보내기 및 저장 기능은 새 통합 문서를 만들고 저장하지만 비어 있습니다.Excel VBA 변수 선택 (워크 시트 변경)을 새 Wookbook에 복사하고 붙여 넣기 및 CSV로 저장

사용자가 정적 범위를 추출 할 워크 시트 (변수가 워크 시트)를 선택하도록하는 중입니다. 각 시트의 이름은 주 번호 (52 개의 개별 워크 시트)와 두 개의 배경 데이터 시트로 구성되며, 워크 시트의 이름을 워크 시트를 4로 부 터 오프셋 할 수 있습니다. 의미 sheet1은 "노동", 시트 5는 "1 "- 연중 첫 주.

어쨌든, 변수는 사용자가 lstExportInvoiceWeek 콤보 상자를 통해 전달됩니다. 그 선택에서 정적 범위 (BA6 : BT200)를 복사 한 다음 csv 파일에 붙여 넣으려고합니다.

여기 내 코드입니다. 붙여 넣기가 작동하지 않습니다.새 통합 문서가 비어 있습니다.

Private Sub cmbInvoicesExport_Click() 

Application.ScreenUpdating = False 

Dim CurrentFileName As String 
CurrentFileName = ActiveWorkbook.Name 
Debug.Print "Active File: " + CurrentFileName 


Dim wsexport As String 
wsexport = cboExportInvoiceWeek.Value 
Worksheets(wsexport).Activate 
Worksheets(wsexport).Unprotect 

Range("BA6:BT200").Copy 

Workbooks.Add Template:="Workbook" 

Range("A1").Select 

ActiveSheet.Paste 

Dim file_name As Variant 
file_name = Application.GetSaveAsFilename(FileFilter:="CSV (Comma delimited) (*.csv), *.csv") 

If file_name <> False Then 
    ActiveWorkbook.SaveAs Filename:=file_name 
    MsgBox "File Saved!" 
End If 

Application.DisplayAlerts = False 
ActiveWorkbook.Close 
Application.DisplayAlerts = True 
Application.CutCopyMode = False 
Workbooks(CurrentFileName).Activate 
Application.ScreenUpdating = True 
End Sub 

이 문제에 대한 조언을 주셔서 감사합니다.

답변

0

대신 당신은 데이터를 붙여 넣을 통합 문서 대상을 참조 할 필요가 Workbooks("YourWorkbook.xls").Worksheets("Sheet1").Activate

를 사용 ActiveSheet를 사용하지 마십시오.

+0

여러 통합 문서 또는 워크 시트를 사용하여 변수에 할당하고 코드에서 명시 적으로 이름을 지정할 때 동의했습니다. 이런 식으로 당신은 자신의 행동을 언급하고있는 워크 북 - 워크 시트를 항상 알 수 있습니다. –

+0

감사합니다. 나는 내가 무엇을 편집해야하는지 구체적으로 이해하려고 노력하고 있다고 생각한다. 코드에서 붙여 넣을 때 새 통합 문서의 이름을 알 수 없으므로이를 모른 채 어떻게 참조해야합니까? – jpend314

관련 문제