2017-12-29 1 views
-1

나는 stackoverflow 및 mrexcel 및 기타 몇 가지 사이트에서 큰 비트를 연구했습니다. 즉, 필자는 정보를 복사하여 몇 가지 변수와 결합하여 '내보내기'라는 이름의 범위로 채워지는 텍스트 문자열을 만드는 템플릿을 가지고 있습니다. 이 범위를 새 통합 문서로 복사하여 .txt 파일로 저장하려고합니다. 그러나 VBA에서 이름을 지정하고 파일을 미리 지정된 위치 [t : \ downloads]에 저장하도록합니다. 파일 이름은 소스 시트의 두 셀 (계정 c1에 저장) 및 월/년 (셀 b3에 저장 됨)의 조합이어야합니다. 예를 들어 셀 c1의 계정 번호가 123456이고 b3의 날짜가 12/25/2017 인 경우 파일 이름을 t : \ downloads \ 123456.2017.12.txt로 표시하고 싶습니다. (; -4158가 .txt 인 형식이다 나는 wbdest이 활성화 worbook이라고 가정)VBA 복사본 범위 디버깅 및 파일 참조 이름으로 셀 참조를 사용하여 저장

Sub Foo_Tab() 
    Dim wbSource As Workbook 
    Dim wssource As Worksheet 
    Dim wbdest As Workbook 


'References 
    Set wbSource = ActiveWorkbook 
    Set wssource = ActiveSheet 
    Set wbdest = Workbooks.Add 
    acct = Cells("c1") 
    yr = Year(Cells("b3")) 
    mnth = Month(Cells("b3")) 


'Copy range on original sheet 
    wssource.Range("Export").Copy 

'Save in new workbook 
    wbdest.Worksheets(1).Cells(1, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats 
    Application.CutCopyMode = False 

'get file name from cells 
    Dim path As String 
    Dim full As String 
    Dim acct As String 
    Dim yr As String 
    Dim mnth As String 
    path = "Z:\Downloads\" 
    full = path + acct + "." + yr + "." + mnth + ".txt" 
    ActiveWorkbook.SaveAs filename:=full 
    wbdest.Close savechanges:=True 

End Sub 
+0

실제 문제는 무엇인지는 모르겠지만 여기에는 '셀'이라고 생각됩니다. 첫째, '셀'안에서 범위 참조를 호출 할 수 없습니다. '셀 '은 (행, 열) 인수를 숫자 형태로 기대합니다. 즉. '세포 (1,3)'. 셀 주소를 사용하려면'Range'를 사용하십시오 :'Range ("C1")'. 둘째, 부모의 워크 북으로 '셀'또는 '범위'에 대한 모든 참조를 한정하십시오. 예를 들어,'wbSource.Cells (1,3)'. 작성된대로 코드는 새로 추가 된 통합 문서를보고 셀에서 데이터를 수집합니다. 이는 분명히 비어있게됩니다. –

+0

'.SaveAs' 함수 안에'FileFormat : = xlTextWindows'를 포함 시켰는지 확인하십시오 – Maldred

답변

0

보십시오이와

ActiveWorbook.SaveAs filename:=full 
wbdest.Close savechanges:=True 

을 대체 :

내가 지금까지 가지고있는 코드입니다

With wbdest 
     .SaveAs full, FileFormat:=-4158 
     .Close SaveChanges:=True 
End With 
관련 문제