Ihor می خواهد به طور خودکار درج یک لینک URL در یک سند Word را انجام دهد. URL با عبارتی مانند "اینجا را کلیک کنید" مرتبط خواهد شد. او ابتدا URL یک وب سایت خاص را در کلیپ بورد کپی می کند. سپس یک ماکرو را ضبط میکند که کادر محاورهای Insert Hyperlink ( Ctrl+K ) را باز میکند و URL را از کلیپبورد ( Ctrl+V ) در فیلد مناسب میچسباند و روی OK کلیک میکند. وقتی بعداً ماکرو را اجرا می کند، هر بار که آن را اجرا می کند همان URL را به او می دهد. Ihor میخواهد هر بار که ماکرو را اجرا میکند URL متفاوتی را در کادر محاورهای بچسباند، اما به نظر میرسد نحوه انجام این کار را از دست داده است.
هنگامی که یک ماکرو را ضبط می کنید، در مورد آنچه انجام می دهد بسیار تحت اللفظی است - دقیقاً مراحلی را که انجام می دهید، از جمله نحوه پر شدن کادرهای گفتگو را ثبت می کند. راه حل این نیست که به دنبال راه هایی برای چسباندن اطلاعات جدید در یک کادر محاوره ای باشید، بلکه این است که به نحوه ایجاد لینک خود نگاه کنید. اگر یک هایپرلینک را با ضبط کننده ماکرو در حال اجرا درج کنید چه چیزی ضبط می شود:
Sub Macro1() Macro1 Macro ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _ "
http://www.tips.net/", SubAddress:="", ScreenTip:="", TextToDisplay:= _ "click here" End Sub
چیزی که Ihor میخواهد تغییر دهد، هدف پیوند است که به ویژگی Address اختصاص داده شده است. این همان چیزی است که در فیلد آدرس کادر محاوره ای "پیست" می شود. برای انجام این کار، می توانید ماکرو خود را به روشی ساده تغییر دهید، مانند:
Sub Macro2() Dim sTemp As String sTemp = "
http://www.tips.net/" ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, _ Address:= sTemp, SubAddress:="", ScreenTip:="", _ TextToDisplay:= "click here" End Sub
تمام کاری که در این مثال انجام شده است این است که برخی از نظرات غیر ضروری در ابتدای ماکرو را حذف کرده و یک متغیر رشته ای به نام sTemp ایجاد کنید که اکنون حاوی هدف برای هایپرلینک است. سپس این متغیر به ویژگی Address اختصاص داده می شود. بنابراین، برای تغییر هدف، فقط باید مقدار متغیر sTemp را تغییر داد - و راههای مختلفی برای این کار وجود دارد.
یک راه این است که از یک تابع InputBox برای ایجاد کادر محاوره ای خود استفاده کنید، به این ترتیب:
Sub Macro3() Dim sTemp As String Dim sPrompt As String Dim sTitle As String sPrompt = "Enter the target for the hyperlink" sTitle = "Hyperlink Destination" sTemp = "
http://www.tips.net/" sTemp = InputBox(sPrompt, sTitle, sTemp) ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, _ Address:= sTemp, SubAddress:="", ScreenTip:="", _ TextToDisplay:= "click here" End Sub
البته، ایهور اشاره کرد که در فرآیند خود در واقع URL را در کلیپ بورد کپی می کند. اگر این فرآیندی است که او میخواهد از آن استفاده کند، میتوان URL را بر اساس هر آنچه در کلیپ بورد وجود دارد در هنگام اجرای ماکرو اختصاص داد. در اینجا نحوه انجام این کار آمده است:
Sub Macro4() Dim sTemp As String Dim MyData As DataObject Set MyData = New DataObject MyData.GetFromClipboard sTemp = Trim(MyData.GetText(1)) ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, _ Address:= sTemp, SubAddress:="", ScreenTip:="", _ TextToDisplay:= "click here" End Sub
به منظور استفاده از کلیپ بورد در این روش، باید یک مرجع برای فرم های Microsoft در ویرایشگر VBA تنظیم کنید. (از منوی ابزار در ویرایشگر، References را انتخاب کنید.)
همچنین توجه داشته باشید که همه این مثالها آنچه را که به ویژگی Address پیوند جدید شما اختصاص داده شده است را تغییر میدهند. شانس خوبی وجود دارد که بخواهید ماکرو را تغییر دهید تا آنچه به ویژگی TextToDisplay اختصاص داده شده است را نیز تغییر دهید.