Макрокодирование, как автоматизировать переименование документа в названные выше папки - PullRequest
0 голосов
/ 22 апреля 2019

Я хочу, чтобы макрос Word VBA переименовал документ в папку, в которой он находится.

Sub SaveAsDOCX()
'
OpenDocName = ActiveDocument.FullName
lengthFileName `enter code here`= Len(OpenDocName)
OpenDocName = Left(OpenDocName, lengthFileName - 4)
'
ChangeFileOpenDirectory (ActiveDocument.Path & "\")
ActiveDocument.SaveAs2 FileName:=(OpenDocName & ".docx"), 
FileFormat:=wdFormatXMLDocument, LockComments:=False, Password:="", 
AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, 
EmbedTrueTypeFonts:=False, SaveFormsData:=False, 
SaveAsAOCELetter:=False, CompatibilityMode:=0
ActiveWindow.Close
End Sub

Прямо сейчас код функционирует, чтобы переименовать DOCX в старое имя файла, но я хочу извлечь из каталога имя папки и переименовать документ, который. К сожалению, мне нужен этот макрос для запуска во многих разных папках, поэтому он должен оставаться динамическим и не может использовать явные пути к папкам.

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

На самом деле довольно просто.Использовал ActiveDocument, чтобы получить строку пути, разделить ее, развернув вверх, -1, чтобы найти имя родительских папок в массиве, а затем вызвать эту результирующую строку.Конечный код выглядит следующим образом:

Dim name, nameSplit, ParentFolderName
OpenDocName = ActiveDocument.FullName
nameSplit = Split(OpenDocName, "\")
ParentFolderName = (UBound(nameSplit) - 1)

, а затем при выполнении SaveAs2 вызывает следующее имя файла: =

(nameSplit(ParentFolderName) & ".docx") 
1 голос
/ 22 апреля 2019

'Эта строка получает полный путь к папке, в которой находится документ.

 ThisDocument.path

'Эта строка возвращает полный путь к месту документа

ThisDocument.FullName

Например, вы можете создать новую строку для имени документа

 dim docpath as string
 Dim docname As String
docname = VBA.Split(VBA.Mid(ActiveDocument.FullName, VBA.InStrRev(ActiveDocument.FullName, "\") + 1), ".")(0)
DocPath = ThisDocument.Path & "\" & docname &  ".docx"

Пример 2

dim docpath as string
 Dim docname As String
docname = Vba.Split(ActiveDocument,".")(0)
DocPath = ThisDocument.Path & "\" & docname &  ".docx"

Я не знаю, если вы этого хотите, пожалуйста, прокомментируйте ниже, если это помогло вам, я хочу помочь вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...