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

جیسون ویراستار دانشجوی یک مجله حقوق دانشگاهی است. به عنوان بخشی از فرآیند انتشار، او باید هر جمله را از نظر سرقت ادبی و صحت و هر نقل قولی برای اطمینان از قالب بندی و پشتیبانی مناسب بررسی کند. این اساساً به این معنی است که هر جمله باید توسط یک استناد در پاورقی پشتیبانی شود. در حال حاضر کارکنان به صورت دستی هر جمله متنی، پاورقی، و شماره پاورقی را از دستنوشته نویسنده (یک سند Word) در سند ورد یک ویرایشگر کارکنان کپی و جایگذاری می کنند که سپس برای بررسی استفاده می شود. جیسون تعجب می‌کند که آیا راهی برای خودکار کردن این فرآیند کپی کردن روی «شماره پانوشت»، «جمله از سند مقاله» و «محتوای پاورقی اصلی» از سند منبع دست‌نوشته در سند کاربرگ وجود دارد.

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

http://www.vbaexpress.com/forum/showthread.php?31231

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

نکته این است که ملاحظاتی وجود دارد که می تواند بر توسعه یک کلان تأثیر بگذارد. این بدان معنی است که هر ماکرو باید به طور دقیق با سند منبعی که با آن کار می کنید تنظیم شود - که به معنای آزمایش زیاد است. با این حال، برای اینکه نقطه شروعی به شما بدهیم، ماکروهای زیر را در نظر بگیرید. آنها جملات، پاورقی‌ها و یادداشت‌های پایانی (در صورت وجود) را از یک سند منبع در یک سند جدید کپی می‌کنند.

Sub FootnotesEndnotes()
    Dim fNote As Footnote
    Dim eNote As Endnote
    Dim aRange As Range
    Dim sText As String
    Dim rText As String
    Dim eRef As String
    Dim newDoc As Document
    Dim oldDoc As Document

    Set oldDoc = ActiveDocument
    Set newDoc = Documents.Add

    sText = "---------------FOOTNOTES---------------" & vbCr
    newDoc.Content.InsertAfter sText

    oldDoc.Activate
    For Each fNote In ActiveDocument.Footnotes
        Set aRange = fNote.Reference
        aRange.MoveStart unit:=wdSentence, Count:=-1
        aRange.MoveEnd unit:=wdSentence
        sText = aRange.Text
        rText = fNote.Range.Text
        With fNote.Reference.Characters.First
            .Collapse
            .InsertCrossReference wdRefTypeFootnote, _
              wdFootnoteNumberFormatted, fNote.Index
            eRef = .Characters.First.Fields(1).Result
            Selection.Start = fNote.Reference.Start - Len(eRef)
            Selection.End = fNote.Reference.Start
            Selection.Delete
        End With
        Call WriteNewdoc(newDoc, sText, rText, eRef, "Footnote Text")
    Next fNote

    sText = "---------------ENDNOTES----------------" & vbCr
    newDoc.Content.InsertAfter vbCr & vbCr & sText

    For Each eNote In ActiveDocument.Endnotes
        Set aRange = eNote.Reference
        aRange.MoveStart unit:=wdSentence, Count:=-1
        aRange.MoveEnd unit:=wdSentence
        sText = aRange.Text
        rText = eNote.Range.Text
        With eNote.Reference.Characters.First
            .Collapse
            .InsertCrossReference wdRefTypeEndnote, _
              wdEndnoteNumberFormatted, eNote.Index
            eRef = .Characters.First.Fields(1).Result
            Selection.Start = eNote.Reference.Start - Len(eRef)
            Selection.End = eNote.Reference.Start
            Selection.Delete
        End With
        Call WriteNewdoc(newDoc, sText, rText, eRef, "Endnote Text")
    Next eNote

    newDoc.Activate
End Sub

Sub WriteNewdoc(newDoc As Document, sText As String, rText As String, _
       eRef As String, aStyle As String)
    Dim sText1 As String
    Dim sText2 As String
    Dim dRange As Range
    Dim k As Long
    Dim curDoc As Document

    Set curDoc = ActiveDocument
    newDoc.Activate
    k = InStr(sText, Chr(2))
    If k = 1 Then sText = Mid(sText, 2) "in case previous sentence has note
    sText = Trim(sText)
    k = InStr(sText, Chr(2))
    If k = 0 Then
        sText = sText & Chr(2)
        k = Len(sText)
    End If
    If k > 1 Then
        sText1 = Left(sText, k - 1)
    Else
        sText1 = ""
    End If
    If k = Len(sText) Then
        sText2 = ""
    Else
        sText2 = Mid(sText, k + 1)
    End If
    If Len(sText2) > 0 Then
        If Mid(sText2, Len(sText2), 1) = Chr(13) Then
            sText2 = Left(sText2, Len(sText2) - 1)
        End If
    End If
    Set dRange = newDoc.Content
    dRange.Collapse Direction:=wdCollapseEnd
    dRange.Select
    With Selection
        .InsertAfter vbCr & sText1
        .Font.Superscript = False
        .Collapse Direction:=wdCollapseEnd
        .InsertAfter eRef
        .Font.Superscript = True
        .Collapse Direction:=wdCollapseEnd
        .InsertAfter " " & sText2 & vbCr
        .Font.Superscript = False
        .Collapse Direction:=wdCollapseEnd
        .InsertAfter eRef
        .Font.Superscript = True
        .Collapse Direction:=wdCollapseEnd
        .InsertAfter " " & rText & vbCr & vbCr
        .Font.Superscript = False
        .Style = aStyle
    End With
    curDoc.Activate
End Sub

این (دوباره) فقط یک نقطه شروع است. شما باید ماکروها را با اسناد خود تست و تغییر دهید تا مطمئن شوید آنچه را که شما انتظار دارید انجام می دهند.

اگر به دنبال منابع اضافی برای کمک به توسعه چنین کلان هستید، ممکن است این کتاب را امتحان کنید. این یک بازی رایگان است و ممکن است چند ماکرو (یا نمونه) داشته باشد که بتوانید آنها را با اهداف خاص خود وفق دهید:

http://www.archivepub.co.uk/book.html

تعجب نکنید اگر ماکرو شما در طول زمان کاملاً پیچیده شود. هر زمان که یک ماکرو برای انجام کارهایی ایجاد کنید که انسان ها می توانند با تفکر نسبتاً کمی انجام دهند، انتظار می رود.

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

پاسخ شما

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

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

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

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 38 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 117 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 37 visibility
ارسال شده در 23 تیر 1402 موضوع: ویندوز توسط: Admin
0 دوستدار 0 امتیاز منفی
1 پاسخ 162 visibility

25.1k سوال

10.4k پاسخ

614 دیدگاه

11.2k کاربر

389 نفر آنلاین
2 عضو و 387 مهمان در سایت حاضرند
اعضای حاضر در سایت
بازدید امروز: 10699
بازدید دیروز: 38614
بازدید کل: 20482512
...