کد vba کپی پیست و حذف کلیپ بورد
بسم الله الرحمن الرحیم
سلام
در این آموزش سعی دارم تا نحوه کپی کردن در کلیب بورد، پیست کردن و چسباندن از کلیب بورد و حذف کردن محتویات کلیب بورد رو با هم بررسی کنیم.
برای انجام این کار چند مرحله رو باید طی کنیم تا به نتیجه مطلوب برسیم. پس تا انتهای مراحل با دقت مرور کنین.
مرحله اول: افزودن کتابخانه Microsoft Forms 2.0 Object Library
در مرحله اول شما باید کتابخانه Microsoft Forms 2.0 Object Library رو از طریق محیط VBA که با Alt + F11 باز میشه به پروژه خودتون اضافه کنید.
- محیط VBA رو باز کنید.
- بر روی Tools > References کلیک کنید.
- در لیست موجود تیک گزینه Microsoft Forms 2.0 Object Library را بزنید.
تایید کنید.
مرحله دوم: کدهای VBA کپی در کلیب بورد
برای انجام کپی (Copy) در کلیب بورد لازم یک متغیر از نوع MSForms.DataObject بسازید. که DataObject پل بین شما و کلیب بورد خواهد شد.
در این مرحله در محیط VBA از با استفاده از گزینه Insert Module یک ماژول خام ایجاد کنید و کدهای زیر را در آن قرار بدین.
' کپی رشته به کلیپ بورد'
Sub CopyToClipboard()
Dim clipboard As MSForms.DataObject
Dim strSample As String
Set clipboard = New MSForms.DataObject
strSample = "This is a sample string"
clipboard.SetText strSample
clipboard.PutInClipboard
End Sub
روش SetText برای ذخیره یک رشته در DataObject استفاده میشود. رشته میتواند یک متغیر VBA باشد، (همانطور که در بالا نشان داده شد.) یا یک فیلد در فرم شما، (همانطور که در زیر نشان داده شده است.)
روش PutInClipboard قطعه کدی است که متن را در کلیپ بورد شما قرار میدهد.
' کپی سلول به کلیپ بورد'
Sub CopyToClipboard2()
Dim clipboard As MSForms.DataObject
Set clipboard = New MSForms.DataObject
clipboard.SetText ActiveSheet.Range("B2")
clipboard.PutInClipboard
End Sub
نکته:
- در VBA تبدیل انواع دادهها به رشته قبل از ذخیره آنها در کلیپ بورد بسیار خوب است، بنابراین لازم نیست نگران استفاده از عملکرد CStr برای تبدیل دستی باشید.
مرحله سوم: چسباندن و یا پیست کردن از کلیب بورد
در مرحله قبل چگونگی قرار دادن اطلاعات در حافظه موقت یا کلیب بورد رو مرور کردیم. در این مرحله عمل (Paste) چگونگی چسباندن از کلیب بورد یا پیست کردن از کلیب بورد رو مرور میکنیم.
' بازیابی محتوای کلیپ بورد'
Sub PasteFromClipboard3()
Dim clipboard As MSForms.DataObject
Dim str1 As String
Set clipboard = New MSForms.DataObject
clipboard.GetFromClipboard
str1 = clipboard.GetText
End Sub
روش GetFromClipboard دادهها را از کلیپ بورد شما میگیرد و دادهها را در DataObject ذخیره میکند.
روش GetText رشته را از DataObject میبُرد و آن را در متغیر رشته شما (در این مورد در متغیر رشته str1 شما با موفقیت محتوای کلیپبورد خود را به متغیر رشته ای که می تواند در ماکرو VBA شما دستکاری شود،) جا به جا کنید.
مرحله چهارم: حذف کردن و پاک کردن کلیپ بورد
از شما میپرسم، چطور محتوای ذخیره شده در کلیپ بورد را پاک کنیم؟
چندین روش برای پاک کردن کلیپ بورد وجود دارد. سادهترین است که یک رشته خالی در کلیپ بورد قرار دهیم.
' قرار دادن رشته خالی در کلیپ بورد' Sub ClearClipboard() Dim clipboard As MSForms.DataObject Set clipboard = New MSForms.DataObject clipboard.SetText "" clipboard.PutInClipboard End Sub
نکته:
- روش بهتر برای خالی کردن حافظه موقت (خالی کردن کلیپ بورد)، استفاده از کتابخانه نام آشنا user32 هست!
' پاک کردن کامل محتویات کلیپ بورد'
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Sub ClearClipboard2()
OpenClipboard (0&)
EmptyClipboard
CloseClipboard
End Sub
از این نکته غافل نشوید که حافظه موقت یا همون کلیپ بورد یک قابلیت بزرگ در VBA هست که میتونید کارهای زیادی رو باهاش انجام بدین.
منبع: wellsr.com