2013-06-18 1 views
12

양식 통합 단추를 클릭하면 파일 이름이 현재 날짜 인 통합 문서의 복사본을 저장하려고하는 Excel 통합 문서가 있습니다.vba 코드에서 "다른 이름으로 저장"을 수행하여 현재 Excel 통합 문서를 datestamp에 저장하는 방법?

나는 노력을 계속하여 ActiveWorkbook.SaveAs ("\\filePath\FormFlow To MSExcel\" & Left(Now(), 10))을 다음하지만 가

이 사람이 나를 도울 수 Run-time error '1004': Method 'SaveAs' of object'_Workbook' failed.

을받는 건가요? 저는 여전히 Excel 용으로 개발하는 데있어 새로운 것을 알고 있습니다.

답변

18

아마도 액세스하려는 경로가 존재하지 않습니다. 그것은 당신이 상대 위치에 저장하려고하고 그 문자열에 파일 확장명이없는 것 같습니다. 당신이 상대 경로를 사용해야하는 경우에는 ActiveWorkbook.FullName

편집에서 경로를 분석 할 수 있습니다 더 나은 구문도 나는 이것이 이전 게시물입니다 알고 있지만 나는 비슷한을 찾고 있었다

ActiveWorkbook.SaveAs Filename:=myFileName, FileFormat:=xlWorkbookNormal 
+5

도움을 주셔서 감사합니다! MSExcel \ Archive \ FeedSampleReport- "& Format (Now(),"mmddyyyy ") &".xlsm ")'ActiveWorkbook.SaveCopyAs ("\\ filePath \ Feed Program \ FormFlow to MSExcel \ –

+6

코드를 매우 성공적으로 사용했습니다. 감사! 하나의 작은 점 : xlWorkbookNormal의 파일 형식을 사용하면 파일을 Excel 97-2003 통합 문서로 저장합니다. 현재 .xlsx 통합 문서로 저장하려면 xlOpenXMLWorkbook을 사용해야합니다. 내 코드 : –

+1

대신 xlWorkbookNormal과 같은 이름을 사용하고 숫자를 사용하십시오. 그렇지 않으면 이전 Excel로 컴파일 할 수 없을 수도 있습니다. http://www.rondebruin.nl/win/s5/win001.htm을 참조하십시오. –

0

것 ... 당신의 문제는 Now()를 사용할 때 출력이 "20/20/2014"가 될 것이라고 생각합니다. 파일 이름에 "/"가있는 것과 같은 문제입니다. 아시다시피, 파일 이름에는 특정 기호를 사용할 수 없습니다.

건배

+0

@AnalyticLunatic - 올바른 것으로 표시된 모든 stackoverflow 항목이 정답이므로 완전히 개선 할 수 없습니다. 더 나은, 또는 다른 해결책은 사실 후에 다른 사람들에 의해 결코 발견되지 않는다. –

0

나는 성공적 다시 ... 만 마지막 줄에 오류가

Newpath = Mid(ThisWorkbook.FullName, 1, _ 
Len(ThisWorkbook.FullName) - Len(ThisWorkbook.Name)) & "\" & "ABC - " & Format(Date, "dd-mm-yyyy") & ".xlsm" 
ThisWorkbook.SaveAs (Newpath) 
8
을 마련, 하나 개의 파일에

를 다음과 같은 방법을 사용하지만, 정확히 같은 오류와 함께 올

이 기능을 사용하는 가장 쉬운 방법은 '매크로 기록'으로 시작하는 것입니다. 녹음을 시작하면 원하는 이름으로 파일을 원하는 위치에 저장 한 다음 파일 유형을 설정합니다. 'Excel 매크로 사용 통합 문서'~ 'XLSM'

녹음을 중지하면됩니다. 코드 검사를 시작하십시오.

나는 "[A1 이벤트 셀에 날짜" "]"

Option Explicit 

Sub SaveFile() 

Dim fdate As Date 
Dim fname As String 
Dim path As String 

fdate = Range("A1").Value 
path = Application.ActiveWorkbook.path 

If fdate > 0 Then 
    fname = "Event " & fdate 
    Application.ActiveWorkbook.SaveAs Filename:=path & "\" & fname, _ 
     FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False 
Else 
    MsgBox "Chose a date for the event", vbOKOnly 
End If 

End Sub 

복사 코드로 명명, 당신은 파일을 원래 위치했던 경로를 사용하여 통합 문서를 저장할 수있는 아래의 코드를 작성 새 모듈에 넣은 다음 셀 "A1"에 날짜를 씁니다. 01-01-2016 -> 하위 버튼을 버튼에 할당하고 실행하십시오. [참고] 새 통합 문서가 기본 자동 저장 위치에 저장되므로이 스크립트가 작동하기 전에 저장 파일을 만들어야합니다!

1

기본 형식이 파일 확장명과 일치하지 않을 수 있습니다. 당신은 형식이 확장을 일치하는지 확인하고, 파일 이름과 함께 파일 형식을 지정해야합니다 :

With someWorkbook 
.SaveAs "C:\someDirector\Awesome.xlsm", fileformat:=xlOpenXMLWorkbookMacroEnabled 
End With 

는 OTOH, 당신의 .SaveAs 파일 이름에 확장자를 볼 수 없습니다. 아마도 이것을 프로그래밍 방식으로 제공 할 필요가있을 것입니다. GUI 인터페이스에서 확장을 제공 할 필요가 없다는 것이 편리하지만 프로그래머는 모호하지 않은 코드를 작성해야합니다. 확장자와 일치하는 형식을 추가하는 것이 좋습니다. 파일 형식 목록은 this msdn page을 참조하십시오. 솔직하게 말해서, 나는 많은 묘사를 인식하지 못한다.

xlExcel8 = 56입니다.XLS 포맷

xlExcel12 = (50)는 나열

xlWorkbookDefault도 인 .xlsm 형식

xlOpenXMLWorkbook = 51 .XLSX 포맷

xlOpenXMLWorkbookMacroEnabled = (52) 인 .xlsb 형식이다 51의 가치, 나는 기본 형식이 바뀔 수 있다고 생각했기 때문에 나를 괴롭힌다.

+0

감사합니다. +1 형식의 저장 형식 –

+0

@ PatrickLepelletier. 감사. VBA에서 그 당시에 일하고 있었고, 나 자신을 알아 냈습니다. VBA 코드를 자주 작성하지 않습니다. 나는 다음 번에 내 자신의 대답을 참조해야 할 것입니다. – riderBill

+0

@riderBill - 모든 것을 열거했기 때문에 기쁩니다. 나는 많은 포맷이 무엇인지 알고 있지만, 여전히 상수의 이름에 대한 충분한 혼란이 있습니다. 나는 마이크로 소프트가 어느 파일 포맷 상수가 어떤 파일 확장자와 연관되는지를 철자하는 곳이 어디인지는 모른다. –