2013-06-21 1 views
0

Visual Basic에서 특정 셀의 값을 기반으로 스프레드 시트의 파일 이름을 만들려고합니다. 내가 파일을 다시 저장 될 때마다, 그것은 새로운 값에 따라 파일 이름을 업데이트하지 않습니다Visual Basic Excel에서 셀 내용의 파일 이름을 지우는 기능

Public Sub SaveAsA1() 
ThisFile = "RWO_" + Format(Now(), "yyyymmdd") + "_" + Format(Now(), "hhmm") + "_" + Range("D4").Value + "_" + Range("F5").Value + "_" + Range("D8").Value 
ActiveWorkbook.SaveAs Filename:=ThisFile 
End Sub 

이 코드는, 그러나, 나는 파일을 저장 처음 작동합니다

은 지금까지 나는이 코드를 사용하고있다 세포에서.

누구든지이 작업을 수행하는 방법을 알 수 있습니까?

+0

오류 메시지가 있습니까? 이름의 시간 및 날짜 부분이 변경 되나요? 아니면 이름 안에 아무 것도 바뀌지 않습니까? –

+0

아무런 오류도 발생시키지 않습니다. 날짜와 시간을 포함하여 이름이 수정 된 후에는 이름이 변경되지 않습니다. –

+2

시간의 이름 부분을 다음과 같이 변경하십시오 :'Format (Now(), "hhmmss")'이 방법으로 직접 실행 창에서 테스트하는 동안 작동하는지 확인하십시오 :'? + "_"범위 ("지금", "hhmm") + "_"+ 범위 ("D4") 값 + "_"+ 범위 ("지금", "yyyymmddss" F5 "). 값 +"_ "+ 범위 ("D8 "). 값'... 그것은 맞습니까? –

답변

3

BeforeSave event에 코드를 추가하면됩니다. 파일을 정상적으로 저장하지만 SaveAs button을 누를 때마다 예상대로 이름이 바뀝니다.

이 코드는 ThisWorkbook 모듈 (통합 문서 모듈)에 있어야합니다.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 

    If SaveAsUI = True Then 

     Application.EnableEvents = False 
     Dim ThisFile As String 

     ThisFile = "RWO_" + Format(Now(), "yyyymmdd") + "_" + Format(Now(), "hhmmss") + "_" + Range("D4").Value + "_" + Range("F5").Value + "_" + Range("D8").Value & ".xlsm" 
     ActiveWorkbook.SaveAs Filename:=ThisFile, FileFormat:=XlFileFormat.xlOpenXMLWorkbookMacroEnabled 
     Application.EnableEvents = True 
     Cancel = True 
    End If 

End Sub 

내가 시간 ss과 끝에 .xlsm 확장을 추가하여 변화 ThisFile을했습니다 있습니다. 또한 FileFormat parameter.SaveAs method에 추가했습니다.

+0

고맙습니다. 이것은 정확하게 내가하려고했던 것이었다. –

+0

문제를 해결하고 구현하는 것이 좋습니다. +1 –