ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
26 visibility
موضوع: آفیس توسط:

کوین به این فکر می کند که آیا راهی برای کپی کردن طیف وسیعی از صفحات در VBA وجود دارد. او می داند که چگونه پاراگراف ها و یک محدوده متنی به هم پیوسته را کپی کند، اما نمی داند چگونه کل صفحات را کپی کند.

هیچ شی VBA وجود ندارد که به کل صفحه ارجاع دهد، مانند یک پاراگراف، و همچنین یک عبارت VBA وجود ندارد که به شما اجازه دهد یک صفحه را انتخاب کنید. با این حال، می توانید محاسبه کنید که یک صفحه شامل چه چیزی می شود و سپس آن محدوده را انتخاب کنید. مفهوم کلی در این ماکرو نشان داده شده است:

Sub CopyPages1()
    Dim rCopy As Range

    Set rCopy = ActiveDocument.GoTo(What:=wdGoToPage, _
      Which:=wdGoToAbsolute, Count:=7)
    Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=9

    rCopy.End = Selection.Bookmarks("Page").Range.End

    rCopy.Select
End Sub

این ماکرو محدوده rCopy را برابر با نقطه شروع صفحه 7 تعیین می کند. سپس متن را در همان ابتدای صفحه 9 انتخاب می کند و از یکی از نشانک های داخلی Word برای انتخاب از بالای صفحه 7 تا انتهای صفحه 9 استفاده می کند. (این کاری است که این ماکرو برای انجام آن طراحی شده است - انتخاب کنید. صفحات 7 تا 9.)

البته باید توجه داشته باشید که صفحات در Word بسیار روان هستند. اگر دقیقاً از یک سند در دو سیستم مختلف استفاده می‌کنید، ماکرو بالا ممکن است انتخاب‌های مختلف را کاملاً بازگرداند. چرا؟ زیرا صفحات می توانند در هر یک از سیستم ها به طور متفاوتی جریان داشته باشند.

اگر می خواهید واقعاً صفحات انتخاب شده (7 تا 9) را کپی کنید، می توانید ماکرو را فقط کمی تغییر دهید تا به نتیجه دلخواه برسید.

Sub CopyPages2()
    Dim rCopy As Range
    Dim rCurrent As Range

    Set rCurrent = Selection.Range

    Set rCopy = ActiveDocument.GoTo(What:=wdGoToPage, _
      Which:=wdGoToAbsolute, Count:=7)
    Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=9

    rCopy.End = Selection.Bookmarks("Page").Range.End
    rCopy.Copy
    Documents.Add
    ActiveDocument.Range.PasteSpecial

    rCurrent.Select
End Sub

توجه داشته باشید که ماکرو آنچه را که کاربر قبل از اجرا انتخاب کرده بود "به خاطر می آورد"، محدوده را در متغیر rCurrent ذخیره می کند و از آن برای انتخاب مجدد آن ناحیه در انتهای ماکرو استفاده می کند. صفحات انتخاب شده (دوباره، 7 تا 9) در یک سند کاملاً جدید کپی می شوند.

باید توجه داشته باشید که ماکروهای فوق فقط در صورتی به درستی کار می کنند که واقعاً حداقل 9 صفحه در سند فعلی وجود داشته باشد. اگر ماکرو انعطاف‌پذیرتر و قوی‌تری می‌خواهید، می‌توانید تغییرات زیر را در نظر بگیرید.

Sub CopyPages3()
    Dim rCopy As Range
    Dim rCurrent As Range
    Dim sTemp As String
    Dim i As Integer
    Dim iStart As Integer
    Dim iEnd As Integer
    
    Set rCurrent = Selection.Range

    " Get page numbers to be copied
    sTemp = InputBox("Page range to copy (use format 6-7)", "")
    i = InStr(sTemp, "-")
    If i > 0 Then
        iStart = Val(Left(sTemp, i - 1))
        iEnd = Val(Mid(sTemp, i + 1))
        
        If iStart < 1 Then iStart = 1
        If iEnd  .Information(wdNumberOfPagesInDocument) Then
                iStart = .Information(wdNumberOfPagesInDocument)
            End If
            If iEnd > .Information(wdNumberOfPagesInDocument) Then
                iEnd = .Information(wdNumberOfPagesInDocument)
            End If
        End With

        " Set the range
        Set rCopy = ActiveDocument.GoTo(What:=wdGoToPage, _
          Which:=wdGoToAbsolute, Count:=iStart)
        
        Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, _
          Count:=iEnd
        rCopy.End = Selection.Bookmarks("Page").Range.End
        
        " Copy range to a new document
        rCopy.Copy
        Documents.Add
        ActiveDocument.Range.PasteSpecial

        rCurrent.Select
    Else
        If sTemp > "" Then
            MsgBox "There is no dash character"
        End If
    End If
End Sub

این نسخه از کاربر می خواهد که محدوده صفحه ای را برای کپی کردن مشخص کند. شماره‌های صفحه طوری تنظیم می‌شوند که اطمینان حاصل شود که شماره شروع کمتر یا مساوی با شماره پایانی است و هر دو شماره شروع و پایان کمتر از تعداد کل صفحات سند هستند.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 29 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 34 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 31 visibility
ارسال شده در 26 تیر 1402 موضوع: آفیس توسط: Admin
0 دوستدار 0 امتیاز منفی
0 پاسخ 24 visibility
ارسال شده در 25 تیر 1402 موضوع: آفیس توسط: Admin
0 دوستدار 0 امتیاز منفی
0 پاسخ 29 visibility
ارسال شده در 25 تیر 1402 موضوع: آفیس توسط: Admin

24.3k سوال

9.6k پاسخ

614 دیدگاه

11.2k کاربر

131 نفر آنلاین
0 عضو و 131 مهمان در سایت حاضرند
بازدید امروز: 1067
بازدید دیروز: 25180
بازدید کل: 20338425
...