کریستین یک پوشه پر از فایل های DOC دارد که باید آنها را به فایل های DOCX تبدیل کند. او متعجب است که آیا راه سریعی برای تبدیل آنها بدون باز کردن و ذخیره هر یک به صورت جداگانه وجود دارد؟
مایکروسافت این قابلیت را در Word ارائه نمی کند و افزونه ای برای انجام تبدیل ارائه نمی دهد. با این حال، می توانید ماکرو خود را برای انجام تبدیل ایجاد کنید. یک رویکرد نسبتا ساده در اینجا نشان داده شده است:
Sub ConvertBatchToDOCX()
Dim sSourcePath As String
Dim sTargetPath As String
Dim sDocName As String
Dim docCurDoc As Document
Dim sNewDocName As String
" Looking in this path
sSourcePath = "c:UsersAdministratorDesktopTesting"
sTargetPath = "c:UsersAdministratorDesktopConverted"
" Look for first DOC file
sDocName = Dir(sSourcePath & "*.doc")
Do While sDocName <> ""
" Repeat as long as there are source files
"Only work on files where right-most characters are ".doc"
If Right(sDocName, 4) = ".doc" Then
" Open file
Set docCurDoc = Documents.Open(FileName:=sSourcePath & sDocName)
sNewDocName = Replace(sDocName, ".doc", ".docx")
With docCurDoc
.SaveAs FileName:=sTargetPath & sNewDocName, _
FileFormat:=wdFormatDocumentDefault
.Close SaveChanges:=wdDoNotSaveChanges
End With
End If
" Get next source file name
sDocName = Dir
Loop
MsgBox "Finished"
End Sub
برای استفاده از ماکرو، باید دو تغییر ایجاد کنید. ابتدا در متغیر sSourcePath مسیر کامل (به دنبال آن یک بک اسلش) به دایرکتوری حاوی فایل هایی که می خواهید تبدیل کنید را مشخص کنید. سپس در متغیر sTargetPath. ، مسیر کامل (با اسلش انتهایی) دایرکتوری که اسناد تبدیل شده باید در آن ذخیره شوند را مشخص کنید.
سپس ماکرو تمام فایلهای DOC را که در دایرکتوری منبع پیدا میکند، مرور میکند، آنها را باز میکند و بهعنوان فایلهای DOCX در فهرست هدف ذخیره میکند.
توجه داشته باشید که من اشاره کردم این یک روش ساده است. دلیل آن این است که در بررسی کار خود خطایی انجام نمی دهد. به عنوان مثال، اگر این ماکرو را دو بار پشت سر هم اجرا کنید، با خطا مواجه می شوید زیرا فایل هایی که در فهرست هدف ذخیره می شوند از قبل وجود دارند. علاوه بر این، باید بدانید که این کار تمام فایلهای DOC را به فایلهای DOCX تبدیل میکند. به عبارت دیگر، اگر فایل اصلی دارای ماکرو باشد، آن ماکروها در فرآیند تبدیل حذف خواهند شد.
در نهایت، توجه داشته باشید که قلب ماکرو در ساختار If/Then قرار دارد که بررسی میکند تا مطمئن شود که 4 کاراکتر سمت راست نام فایل در واقع ".doc" هستند. این کار به دلیل رفتار نسبتاً تشدیدکننده تابع Dir در برخی از سیستمها انجام میشود که در آن جستجوی الگوی "*.doc" به عنوان تطابق با هر نام فایلی که حاوی .doc است برمیگردد . این بدان معنی است که فایل هایی را که به .docx و .docm ختم می شوند را نیز برمی گرداند. بدیهی است که اینها نباید تبدیل شوند، بنابراین ساختار If / Then برای حذف آنها گنجانده شده است.
اگر ترجیح می دهید از ماکرو خود استفاده نکنید، راه حل های شخص ثالثی وجود دارد که می توانید استفاده کنید. صفحه زیر در سایت Graham Mayor دارای یک افزونه رایگان است که از جمله موارد دیگر، تبدیل سند را انجام می دهد:
http://www.gmayor.com/document_batch_processes.htm
ممکن است بتوانید سایر مبدل های مشابه را با جستجوی وب برای "مبدل doc docx" (بدون علامت نقل قول) پیدا کنید.