날짜 스탬프로 현재 Excel 워크북을 저장하고 vba 코드로 "다른 이름으로 저장"하는 방법은 무엇입니까?
Excel Workbook이 있는데, 양식 버튼을 클릭하여 현재 날짜의 파일 이름으로 Workbook 복사본을 저장합니다.
저는 다음을 계속 시도합니다.ActiveWorkbook.SaveAs ("\\filePath\FormFlow To MSExcel\" & Left(Now(), 10))
하지만 받고 있습니다.Run-time error '1004': Method 'SaveAs' of object'_Workbook' failed.
누가 이것을 도와줄 수 있습니까?저는 아직 엑셀 개발에 익숙하지 않습니다.
액세스하려는 경로가 존재하지 않을 가능성이 높습니다.상대 위치에 저장하려고 하는데 해당 문자열에 파일 확장명이 없습니다.상대 경로를 사용해야 하는 경우 경로를 구문 분석할 수 있습니다.ActiveWorkbook.FullName
편집: 더 나은 구문은 다음과 같습니다.
ActiveWorkbook.SaveAs Filename:=myFileName, FileFormat:=xlWorkbookNormal
이 기능을 사용하는 가장 쉬운 방법은 '매크로 기록'으로 시작하는 것입니다.기록을 시작하면 파일을 원하는 위치에 원하는 이름으로 저장한 다음 당연히 파일 형식을 설정합니다. 'Excel Macro Enabled Workbook' ~ '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->). 버튼에 서브를 할당하고 실행합니다.[참고] 새 워크북이 기본 자동 저장 위치에 저장되므로 이 스크립트가 작동하려면 먼저 저장 파일을 만들어야 합니다!
기본 형식이 파일 확장자와 일치하지 않을 수 있습니다.파일 형식을 파일 이름과 함께 지정하여 확장자와 일치하는지 확인해야 합니다.
With someWorkbook
.SaveAs "C:\someDirector\Awesome.xlsm", fileformat:=xlOpenXMLWorkbookMacroEnabled
End With
OTOH, 당신의 확장자가 보이지 않습니다.파일 이름으로 저장합니다.프로그래밍 방식으로 이 작업을 수행할 때 하나를 제공해야 할 수 있습니다.GUI 인터페이스에서 확장을 제공하지 않아도 되는 것이 편리하지만, 우리 프로그래머들은 명확한 코드를 작성해야 합니다.확장자와 일치하는 형식을 추가하는 것을 제안합니다.파일 형식 목록은 이 msdn 페이지를 참조하십시오.솔직히, 저는 그 설명들을 많이 인식하지 못합니다.
xlExcel8 = 56은 .xls 형식입니다.
xlExcel12 = 50은 .xlsb 형식입니다.
xlOpenXML워크북 = 51은 .xlsx 형식입니다.
xlOpenXMLWorkbookMacroEnabled = 52는 .xlsm 형식입니다.
xlWorkbookDefault도 51 값으로 나열되어 있는데, 기본 형식이 변경될 수 있다고 생각했기 때문에 혼란스럽습니다.
저는 하나의 파일에서 다음과 같은 방법을 성공적으로 사용합니다.
하지만 똑같은 오류를 다시 생각해보면,마지막 줄만 오류가 발생합니다.
Newpath = Mid(ThisWorkbook.FullName, 1, _
Len(ThisWorkbook.FullName) - Len(ThisWorkbook.Name)) & "\" & "ABC - " & Format(Date, "dd-mm-yyyy") & ".xlsm"
ThisWorkbook.SaveAs (Newpath)
저는 힘들었지만, 아래의 것들이 마침내 저에게 효과가 있었습니다!
Dim WB As Workbook
Set WB = Workbooks.Open("\\users\path\Desktop\test.xlsx")
WB.SaveAs fileName:="\\users\path\Desktop\test.xls", _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Dim NuevoLibro As Workbook
Dim NombreLibro As String
NombreLibro = "LibroPrueba"
'---Creamos nuevo libro y lo guardamos
Set NuevoLibro = Workbooks.Add
With NuevoLibro
.SaveAs Filename:=NuevaRuta & NombreLibro, FileFormat:=52
End With
'*****************************
'valores para FileFormat
'.xlsx = 51 '(52 for Mac)
'.xlsm = 52 '(53 for Mac)
'.xlsb = 50 '(51 for Mac)
'.xls = 56 '(57 for Mac)
'*****************************
.xlsx 워크북이 필요한 대용량 데이터로 작업할 때는 다음 구문을 사용합니다.
ActiveWorkbook.SaveAs Filename:=myFileName, FileFormat:=51
(자세한 파일 형식은 설명서를 참조하십시오.)
Now()를 사용하면 출력이 "2014년 6월 20일"이 된다는 것이 문제였던 것 같습니다.파일 이름에 "/"가 있기 때문에 이 문제가 발생합니다.파일 이름에 특정 기호를 사용할 수 없습니다.
언급URL : https://stackoverflow.com/questions/17173898/how-to-do-a-save-as-in-vba-code-saving-my-current-excel-workbook-with-datesta
'programing' 카테고리의 다른 글
ReDim "가입자 범위를 벗어남" 유지 (0) | 2023.06.19 |
---|---|
MariaDB: 다중 테이블 업데이트가 단일 행을 여러 번 업데이트하지 않습니까?왜요? (0) | 2023.06.19 |
C#의 StringBuilder와 같은 Python 문자열 클래스? (0) | 2023.06.14 |
주어진 조건에서 배열의 요소를 선택하려면 어떻게 해야 합니까? (0) | 2023.06.14 |
루비 형식으로 xlsx 파일 가져오기/내보내기를 지원하는 보석 (0) | 2023.06.14 |