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

کیت باید فقط برای سرصفحه‌ها و پاورقی‌های یک سند تعداد کلمات ایجاد کند، و او در مورد نحوه انجام این کار دچار مشکل است.

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

Sub CntHeaderWords()
    Dim s As Section
    Dim h As HeaderFooter
    Dim sRaw As String
    Dim Cnt As Long
    Dim J As Integer

    Cnt = 0
    For Each s In ActiveDocument.Sections
        For Each h In s.Headers
            If Not h.LinkToPrevious Or s.Index = 1 Then
                For J = 1 To h.Range.Words.Count
                    sRaw = h.Range.Words(J)
                    sRaw = Trim(sRaw)
                    If sRaw = vbCrLf Then sRaw = ""
                    If sRaw = vbCr Then sRaw = ""
                    If sRaw = vbLf Then sRaw = ""
                    If Len(sRaw) > 0 Then Cnt = Cnt + 1
                Next J
            End If
        Next h
    Next s

    MsgBox Cnt & " words in headers"
End Sub

هنگامی که این ماکرو را اجرا می کنید، از هر بخش در سند و سپس هر سرصفحه در آن بخش عبور می کند. تعداد کلمات برای هر هدر تعیین می شود و به متغیر Cnt اضافه می شود. وقتی ماکرو کامل شد، تعداد کلمات سرصفحه سند را نمایش می دهد.

چند نکته جالب در مورد این ماکرو وجود دارد. ابتدا توجه کنید که ماکرو خاصیت LinkToPrevious را برای هدر بررسی می کند. این کار به این دلیل انجام می شود که در بخش های فراتر از اول، سرصفحه های پیوندی پردازش نمی شوند. چرا؟ زیرا اضافه کردن کلمات برای سرصفحه هر بخش منطقی نیست اگر آن هدر مانند قسمت قبلی باشد.

در مرحله بعد، از آنجایی که می‌توانید برای هر سرصفحه یک ویژگی Count برای مجموعه Words تعیین کنید، ممکن است فکر کنید که می‌توانید به سادگی همه آن تعداد را با هم اضافه کنید تا تعداد کل کلمات خود را تعیین کنید. مشکل این است که حتی اگر برای یک بخش سرصفحه ای وجود نداشته باشد، Word تعداد کلمات 1 را برای سرصفحه "ضمنی" برمی گرداند. به همین دلیل است که ماکرو در واقع هر کلمه را در هدر بررسی می کند، و اگر چیزی جز یک بازگشت یا تغذیه خط نباشد، در شمارش گنجانده نمی شود.

نکته دیگری که باید به آن توجه کنید این است که اگر در سرصفحه خود علامت نگارشی دارید، هر علامت نگارشی به عنوان یک کلمه به حساب می آید. به عنوان مثال، اگر عنوان "همه حقوق محفوظ است" را داشته باشید، Word آن را سه کلمه در نظر می گیرد. اگر سرصفحه "کلیه حقوق محفوظ است." (با دوره انتهایی)، سپس Word آن را چهار کلمه در نظر می گیرد. نتیجه این است که اگر فکر می‌کنید ممکن است در سرصفحه‌های شما علائم نگارشی وجود داشته باشد، ممکن است بخواهید کد ماکرو را طوری تنظیم کنید که علائم نگارشی به حساب نیاید.

در نهایت، باید توجه داشته باشید که اگر هدر شما حاوی اشیایی مانند جعبه متن یا جدول باشد و آن اشیا حاوی کلمات باشند، به تعداد کلمات اضافه نمی شوند. اگر چنین اسنادی را توسعه می دهید، ممکن است بخواهید ماکرو را برای در نظر گرفتن آن اشیاء تنظیم کنید.

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

Sub CntHFWords()
    Dim s As Section
    Dim h As HeaderFooter
    Dim f As HeaderFooter
    Dim sRaw As String
    Dim HdCnt As Long
    Dim FtCnt As Long
    Dim J As Integer

    HdCnt = 0
    FtCnt = 0
    For Each s In ActiveDocument.Sections
        For Each h In s.Headers
            If Not h.LinkToPrevious Or s.Index = 1 Then
                For J = 1 To h.Range.Words.Count
                    sRaw = h.Range.Words(J)
                    sRaw = Trim(sRaw)
                    If sRaw = vbCrLf Then sRaw = ""
                    If sRaw = vbCr Then sRaw = ""
                    If sRaw = vbLf Then sRaw = ""
                    If Len(sRaw) > 0 Then HdCnt = HdCnt + 1
                Next J
            End If
        Next h

        For Each f In s.Footers
            If Not f.LinkToPrevious Or s.Index = 1 Then
                For J = 1 To f.Range.Words.Count
                    sRaw = f.Range.Words(J)
                    sRaw = Trim(sRaw)
                    If sRaw = vbCrLf Then sRaw = ""
                    If sRaw = vbCr Then sRaw = ""
                    If sRaw = vbLf Then sRaw = ""
                    If Len(sRaw) > 0 Then FtCnt = FtCnt + 1
                Next J
            End If
        Next f
    Next s

    sRaw = "Header words: " & HdCnt & vbCrLf
    sRaw = sRaw & "Footer words: " & FtCnt & vbCrLf
    sRaw = sRaw & "Total words: " & HdCnt + FtCnt
    MsgBox sRaw
End Sub

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

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

پاسخ شما

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

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

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

سوال مشابهی یافت نشد

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

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

95 نفر آنلاین
0 عضو و 95 مهمان در سایت حاضرند
بازدید امروز: 11723
بازدید دیروز: 23827
بازدید کل: 15446238
...