MS Office에서 파일 이름을 동시에 바꾸고 이전 버전을 삭제하는 방법은 무엇입니까? 이름으로 저장하려면 다음

Microsoft Office에서 이전 파일 이름의 복사본을 유지하지 않고 파일을 다른 파일 이름으로 저장하려면 다음 두 단계가 필요합니다.

  • 먼저 파일-> 다른 이름으로 저장 …을 선택하고 새 이름을 선택하십시오. 파일 의 사본 이 작성됩니다.
  • 그런 다음 Windows 탐색기로 이동하여 이전 이름의 이전 파일을 삭제하십시오.

Office 자체에서 파일을 한 번에 “이름 바꾸기”하여 이러한 단계를 단순화하고 싶습니다. 어떻게해야합니까?

더 재미 있고 암호화 된 버전은 개정 1을 참조하십시오 .



답변

이 답변에 대한 “가장 쉬운”방법은 이 답변을 크게 구축 한 것으로 보입니다 .

  1. normal.dotm 템플릿에 다음 코드 삽입 ( C:\Documents and Settings\user name\Application Data\Microsoft\TemplatesWord 7 for Windows)
  2. normal.dotm을 저장하십시오
  3. 이를 Word의 빠른 실행 도구 모음에 추가하십시오.
  4. 선택 사항-키보드 단축키를 여기에 다시 매핑
  5. 선택 사항-템플릿에 디지털 서명 (권장)

이것은 실제로 오래된 파일을 완전히 휴지통으로 옮기지 않고 휴지통으로 옮기고 새 파일 이름을 매우 편리한 방식으로 설정합니다.


Option Explicit

 'To send a file to the recycle bin, we'll need to use the Win32 API
 'We'll be using the SHFileOperation function which uses a 'struct'
 'as an argument. That struct is defined here:
Private Type SHFILEOPSTRUCT
    hwnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAnyOperationsAborted As Long
    hNameMappings As Long
    lpszProgressTitle As Long
End Type

 ' function declaration:
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

 'there are some constants to declare too
Private Const FO_DELETE = &H3
Private Const FOF_ALLOWUNDO = &H40
Private Const FOF_NOCONFIRMATION = &H10
Private Const FOF_SILENT = &H4

Function RecycleFile(FileName As String, Optional UserConfirm As Boolean = True, Optional HideErrors As Boolean = False) As Long
     'This function takes one mandatory argument (the file to be recycled) and two
     'optional arguments: UserConfirm is used to determine if the "Are you sure..." dialog
     'should be displayed before deleting the file and HideErrors is used to determine
     'if any errors should be shown to the user

    Dim ptFileOp As SHFILEOPSTRUCT
     'We have declared FileOp as a SHFILEOPSTRUCT above, now to fill it:
    With ptFileOp
        .wFunc = FO_DELETE
        .pFrom = FileName
        .fFlags = FOF_ALLOWUNDO
        If Not UserConfirm Then .fFlags = .fFlags + FOF_NOCONFIRMATION
        If HideErrors Then .fFlags = .fFlags + FOF_SILENT
    End With
     'Note that the entire struct wasn't populated, so it would be legitimate to change it's
     'declaration above and remove the unused elements. The reason we don't do that is that the
     'struct is used in many operations, some of which may utilise those elements

     'Now invoke the function and return the long from the call as the result of this function
    RecycleFile = SHFileOperation(ptFileOp)

End Function


Sub renameAndDelete()

    ' Store original name
    Dim sOriginalName As String
    sOriginalName = ActiveDocument.FullName

    ' Save As
    Dim sFilename As String, fDialog As FileDialog, ret As Long
    Set fDialog = Application.FileDialog(msoFileDialogSaveAs)

    'set initial name so you don't have to navigate to
    fDialog.InitialFileName = sOriginalName

    ret = fDialog.Show

    If ret <> 0 Then
        sFilename = fDialog.SelectedItems(1)
    Else
        Exit Sub
    End If

    Set fDialog = Nothing

    'only do this if the file names are different...
    If (sFilename <> sOriginalName) Then
        'I love vba's pretty code
         ActiveDocument.SaveAs2 FileName:=sFilename, FileFormat:= _
            wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
            :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
            :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
            SaveAsAOCELetter:=False, CompatibilityMode:=14

        ' Delete original (don't care about errors, I guess)
        Dim hatersGonnaHate As Integer
        hatersGonnaHate = RecycleFile(sOriginalName, False, True)

    End If

End Sub


답변

내장 기능으로는이 작업을 수행 할 수 없습니다. 사무실 이 문서에 명시된 바와 같이

파일 이름을 바꾸면 기존 파일의 파일 이름이 변경됩니다. 다른 프로그램에서 파일을 연 상태에서는 파일 이름을 바꿀 수 없습니다. 파일을 닫아야하고 공유 파일 인 경우 체크인해야합니다. 열려있는 파일을 새 이름으로 저장할 수 있지만 원래 이름을 가진 파일의 사본은 여전히 ​​존재합니다.

VSTO 또는 VBA 를 사용하여 사용자 지정 “이름 바꾸기 …”기능을 만들어서 이와 같은 것을 구현할 수있는 것처럼 보입니다 (올리버의 답변 에서처럼). 새 사본을 저장 한 다음 이전 사본을 삭제하도록 프로그래밍해야합니다.


답변

여기에 내가 던진 작은 VBA 매크로가 있습니다.

Sub Macro1()
    ' Store original name
    Dim sOriginalName As String
    sOriginalName = ActiveDocument.FullName

    ' Save As
    Dim sFilename As String, fDialog As FileDialog, ret As Long
    Set fDialog = Application.FileDialog(msoFileDialogSaveAs)
    ret = fDialog.Show
    If ret <> 0 Then
        sFilename = fDialog.SelectedItems(1)
    Else
        Exit Sub
    End If
    Set fDialog = Nothing

    ' Don't replace the original file
    If sFilename = sOriginalName Then Exit Sub

     ActiveDocument.SaveAs2 FileName:=sFilename, FileFormat:= _
        wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
        :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
        :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False, CompatibilityMode:=14

    ' Delete original
    Kill sOriginalName
End Sub


답변

아니요, 내장 기능이 아닙니다.

한 가지 해결 방법은 파일을 새 이름으로 저장하는 것입니다. 그런 다음 파일, 다른 이름으로 저장으로 돌아가서 이전 파일을 삭제하면 문서 닫기, 탐색기, 이름 바꾸기, 다시 열기보다 더 효율적입니다.


답변

@Travis 답변에 약간의 변형이 있습니다.

다시 말하지만, 그것은 내장 함수가 아닙니다.

  1. Word에서 파일을 닫고 필요한 경우 변경 사항을 저장하도록 확인합니다.
  2. 여전히 Word에서 파일을 열려면 클릭하십시오.
  3. 필요한 경우 파일로 이동하여 파일을 마우스 오른쪽 단추로 클릭하고 이름을 바꿉니다.
  4. 여전히 파일 열기 대화 상자에있는 동안 이름이 바뀐 파일을여십시오.

이 솔루션 :

  1. Windows 탐색기에서 오래된 외로운 드라이브를 제거하여 이전 파일을 삭제합니다.
  2. 파일 열기 / 다른 이름으로 저장 대화 상자를 한 번만 방문합니다.
  3. Save-As 작업보다 몇 번의 마우스 클릭만으로 작업을 완료합니다.
  4. 또한 VBA 또는 유사한 솔루션보다 몇 번의 마우스 클릭만으로 작업을 완료합니다.

답변