شرکت فرانسیسکو اخیراً الگوهای مشترک خود را از یک سرور به سرور دیگر منتقل کرده است. اکنون، آنها دیگر نمیتوانند هیچ سندی را که در گذشته ایجاد شده و به مکان قالب قدیمی اشاره میکرده است باز کنند. هنگامی که میخواهند سند را باز کنند، صفحه نمایش Word را دریافت میکنند. فرانسیسکو در شگفت است که چگونه می توانند از اسناد قدیمی خود استفاده کنند اگر حتی نمی توانند آنها را باز کنند.
چند روش وجود دارد که می توانید برای مشکلی مانند این استفاده کنید. اگر مکان قالب در سرور قدیمی از طریق یک درایو نگاشت شده در ویندوز قابل دسترسی بوده است، ممکن است بتوانید به سادگی درایو را به مکان جدید دوباره نقشه برداری کنید. به عنوان مثال، اگر مکان قالب قدیمی به درایو Z: نگاشت شده است، کافی است اتصال نگاشت را در ویندوز قطع کنید و درایو Z: را دوباره به مکان سرور جدید نقشه برداری کنید. اگر میتوانید این کار را انجام دهید، اسناد Word شما باید مستقیماً باز شوند، زیرا نقشهبرداری مکان به طور کامل توسط ویندوز انجام میشود.
با این حال، اگر به الگوهای شما با استفاده از یک مسیر UNC به جای درایو نقشهبرداری شده دسترسی پیدا کردهاید، ممکن است بخواهید ببینید که آیا افراد فناوری اطلاعات شما میتوانند سرور قدیمیتر را راهاندازی کنند تا اینکه بتوانید اسناد خود را باز کنید و مکان قالب را در اسناد تغییر دهید. یا شاید آنها می توانند یک "نام مستعار" در سرور جدید ایجاد کنند که به نظر می رسد، برای ماشین های متصل شما، گویی مسیر سرور قدیمی اکنون در سرور جدید است. مگر اینکه در سرور واقعی انجام شود.)
اگر می خواهید، می توانید از یک ماکرو برای دسترسی به اسناد استفاده کنید و الگوی پیوست شده را به چیزی که از طریق رایانه قابل دسترسی است تغییر دهید. موارد زیر را می توان به عنوان نقطه شروع خوبی برای چنین کلان در نظر گرفت.
Sub FixDocs()
Dim sDocRoot As String
Dim sNewTemplate As String
Dim sUserTemplates As String
Dim sWorkgroupTemplates As String
Dim sFile As String
Dim sAbsFile As String
Dim sAbsTemplate As String
Dim sOldTemplate As String
Dim d As Document
Dim sMsg As String
Dim sTemp As String
sDocRoot = "c:path odocuments"
sNewTemplate = "c:absolutelocationof
ew emplateNormal.dotm"
With Application.Options
sWorkgroupTemplates = .DefaultFilePath(wdWorkgroupTemplatesPath)
sUserTemplates = .DefaultFilePath(wdUserTemplatesPath)
End With
sFile = Dir(sDocRoot & "*.docx")
Do While Len(sFile) > 0
sAbsFile = sDocRoot & sFile
Set d = Documents.Open(sAbsFile)
sOldTemplate = d.AttachedTemplate
sMsg = sMsg & "Document Name = " & sFile & vbCrLf
sMsg = sMsg & "Absolute Document Name = " & sAbsFile & vbCrLf
sMsg = sMsg & "Attached Template = " & sOldTemplate & vbCrLf
sTemp = "Old template (" & sOldTemplate & ") found in "
sAbsTemplate = sWorkgroupTemplates & "" & sOldTemplate
If IsFile(sAbsTemplate) Then
sTemp = sTemp & "workgroups template directory"
Else
sAbsTemplate = sUserTemplates & "" & sOldTemplate
If IsFile(sAbsTemplate) Then
sTemp = sTemp & "user templates directory"
Else
sTemp = "Old template (" & sOldTemplate & ") not found"
End If
End If
sMsg = sMsg & sTemp & vbCrLf
If sAbsTemplate <> sNewTemplate Then
d.AttachedTemplate = sNewTemplate
d.Close SaveChanges:=wdSaveChanges
sMsg = sMsg & "Document updated" & vbCrLf
Else
d.Close SaveChanges:=wdDoNotSaveChanges
sMsg = sMsg & "Document not updated" & vbCrLf
End If
Set d = Nothing
sMsg = sMsg & vbCrLf
sFile = Dir
Loop
MsgBox sMsg
End Sub
Function IsFile(ByRef fName As String) As Boolean
"Returns TRUE if the provided name points to an existing file
"Returns FALSE if not existing, or if it"s a folder
On Error Resume Next
IsFile = ((GetAttr(fName) And vbDirectory) <> vbDirectory)
End Function
برای استفاده از ماکرو، باید مسیر اختصاص داده شده به sDocRoot را تغییر دهید؛ این مسیر باید دایرکتوری (با اسلش انتهایی) باشد که اسناد شما در آن قرار دارند. سپس، sNewTemplate را تغییر دهید تا مسیر کامل به الگوی جدید مورد نظر شما باشد. برای استفاده.
ماکرو از طریق هر سند در دایرکتوری sDocRoot گام برمی دارد، آن را باز می کند، بررسی می کند که آیا الگوی قدیمی در فهرست الگوهای گروه کاری یا در فهرست الگوهای کاربر قرار دارد یا خیر، و سپس اگر قبلاً پیوست نشده بود، الگوی پیوست شده را به الگوی جدید تغییر می دهد.
یکی از کارهایی که قطعاً باید قبل از استفاده از این ماکرو انجام دهید، تهیه نسخه پشتیبان از تمام اسنادی است که می خواهید پردازش کنید. ممکن است کمی آزمایش و خطا طول بکشد تا مطمئن شوید که همه چیز به آنچه نیاز دارید تغییر می کند، اما "ردیابی حسابرسی" " که در متغیر sMsg کامپایل شده است در این زمینه مفید خواهد بود. ماکرو نتایج را پس از تکمیل نمایش می دهد، اما همیشه می توانید ماکرو را تغییر دهید تا نتایج را در یک سند کاملاً جدید ذخیره کنید تا بتوانید یک رکورد دائمی از آنچه انجام شده است داشته باشید. .