Powerpoint: วิธีแทรกคุณสมบัติเอกสาร (aka 'field') ในสไลด์?


31

ฉันจะแทรกคุณสมบัติเอกสาร (เช่นชื่อผู้เขียน) ในสไลด์ใน PowerPoint 2007 ได้อย่างไร ฉันรู้ว่าสิ่งนี้สามารถทำได้ใน Microsoft Word แต่ฉันไม่พบวิธีการทำใน PowerPoint

(แนวคิดก็คือด้วยคุณสมบัติเอกสารมันง่ายที่จะเปลี่ยนเช่นเนื้อหาของส่วนท้ายในสไลด์ทั้งหมดแม้ว่าคุณจะใช้หน้าต้นแบบที่แตกต่างกันหากมีวิธีการแก้ปัญหาที่แตกต่างกันก็จะดีเช่นกัน)

คำตอบ:


19

ในขณะที่ Word สามารถทำได้ PowerPoint ไม่สามารถทำได้ AFAIK คุณสามารถมีคุณสมบัติเอกสารใน PPT แต่คุณไม่สามารถแทรกคุณสมบัติเหล่านั้นบนสไลด์ ฟิลด์อัปเดตเดียวที่มีให้สำหรับ PowerPoint คือวันที่และหมายเลขสไลด์ อย่างไรก็ตามอาจมีวิธีแก้ปัญหาบางอย่างใน VBA เพื่อให้บรรลุเป้าหมายนี้ คุณสามารถถามสิ่งนี้ใน Stackoverflow เพื่อใช้โอกาสของคุณ



6

เพียงเขียนรูทีนย่อยเพื่อใส่คุณสมบัติที่มีชื่อไว้ในวัตถุข้อความที่ติดแท็กบนสไลด์ทั้งหมด

เมื่อต้องการวางคุณสมบัติไฟล์ลงบนภาพนิ่ง สร้างกล่องข้อความเพื่อเก็บสตริง ในคุณสมบัติ / ข้อความตัวอักษรใส่ชื่อคุณสมบัติลงในวงเล็บเหลี่ยม

updateProperties()แล้วรันมาโคร

ie [title]- อนุญาตให้อัปเดตชื่อเอกสารในหลายรายการ

มีการเขียนแท็กพิเศษสองแท็ก:

  • [copyright]จะใส่สตริงลิขสิทธิ์เช่น© 1998-2013 P.Boothroyd, NIS Oskemen
  • [page] จะใส่หมายเลขสไลด์จากแท็บเครื่องมือแก้ไข
  • 'คัดลอกคุณสมบัติของเอกสารไปยังสไลด์ทั้งหมด
    (c) 2013, P.Boothroyd สำหรับ NIS Oskemen
    Dim processPage As Slide
    
    Sub updateProperties ()
        หน้าสลัวเป็นสไลด์
        Dim propname As String
        'แยกวิเคราะห์สไลด์ทั้งหมดในงานนำเสนอที่ใช้งานอยู่ (เอกสาร)
        สำหรับแต่ละ processPage ใน Application.ActivePresentation.Slides
            'สแกนองค์ประกอบทั้งหมดของหน้าสำหรับช่องข้อความที่มีแท็ก "altText / title" ฟิลด์ด้วย "["
            สำหรับแต่ละ obj In processPage.Shapes
                ถ้า Left (obj.Title, 1) = "[" จากนั้น
                    ติ่ม sStart, sEnd As Integer
                    'ดึงคุณสมบัติจากระหว่างวงเล็บเหลี่ยม
                    sStart = 2
                    sEnd = InStr (2, obj.Title, "]")
                    propname = Trim (กลาง (obj.Title, sStart, sEnd - 2))
                    ถ้า obj.Type = msoTextBox แล้ว
                        'ตั้งค่ากล่องข้อความเป็นค่าที่ร้องขอ
                        obj.TextFrame.TextRange.Text = getProperty (propname, obj.TextFrame.TextRange.Text)
                    สิ้นสุดถ้า
                สิ้นสุดถ้า
            ถัดไป 'obj
        หน้าต่อไป
    ส่วนท้าย
    
    'รับคุณสมบัติของเอกสารที่กำหนดชื่อ (พร้อมค่าเริ่มต้นไม่บังคับ)
    ฟังก์ชั่น getProperty (propname, ตัวเลือก def As String) As String
        'คุณสมบัติกำหนดค่าเริ่มต้น
        getProperty = def
        ติ่มซำพบว่าเป็นบูลีน
        พบ = เท็จ
        propname = LCase (propname)
    
        ลิขสิทธิ์เป็นทรัพย์สินที่สร้างขึ้น
        ถ้า propname = "copyright" จากนั้น
            ติ่มซำ As String
            บริษัท Dim เป็น As String
            ติ่มปีจาก As String
            ติ่มซำเป็น As String
    
            'รับตัวแปรที่เหมาะสมทั้งหมด
            ผู้เขียน = getProperty ("ผู้แต่ง", "")
            company = getProperty ("บริษัท ", "")
            yearFrom = getProperty ("สร้าง", "")
            yearTo = รูปแบบ (ตอนนี้ (), "YYYY")
    
            'ใส่สัญลักษณ์ลิขสิทธิ์
            getProperty = Chr (169) + ""
    
            'แนบช่วงปีเพื่อแจ้งให้ทราบลิขสิทธิ์
            ถ้าปีจากปีไปแล้ว
                getProperty = getProperty + yearFrom + "-"
            สิ้นสุดถ้า
            getProperty = getProperty + yearTo
    
            เพิ่มผู้แต่ง
            getProperty = getProperty + "" + ผู้แต่ง
    
            'เพิ่มตัวคั่นสำหรับผู้แต่ง / บริษัท หากทั้งสองมีอยู่
            ถ้า Len (ผู้เขียน)> 0 And Len (บริษัท )> 0 จากนั้น
                getProperty = getProperty & ","
            สิ้นสุดถ้า
            getProperty = getProperty & บริษัท
    
            ดำเนินการแล้วจึงส่งคืนค่า
            พบ = จริง
        สิ้นสุดถ้า
    
        'ใส่หมายเลขสไลด์ลงในเอกสาร
        ถ้า propname = "หน้า" จากนั้น
            getProperty = processPage.SlideNumber
            พบ = จริง
        สิ้นสุดถ้า
    
        'ถ้าชื่อที่สร้างที่สร้างขึ้นส่งคืนค่า
        หากพบแล้วไปที่
    
        'ค้นหาคุณสมบัติ MS (ไฟล์) มาตรฐานของค่าที่ตั้งชื่อ
        สำหรับแต่ละ p ใน Application.ActivePresentation.BuiltInDocumentProperties
            ถ้า LCase (p.Name) = propname แล้ว
                getProperty = p.Value
                พบ = จริง
                ออกจาก
            สิ้นสุดถ้า
        ถัดไป
    
        'ค้นหาคุณสมบัติที่กำหนดเองของค่าที่ตั้งชื่อ
        หากพบแล้วไปที่
        สำหรับแต่ละ p ใน Application.ActivePresentation.CustomDocumentProperties
            ถ้า LCase (p.Name) = propname แล้ว
                getProperty = p.Value
                พบ = จริง
                ออกจาก
            สิ้นสุดถ้า
        ถัดไป
    ret:
    ฟังก์ชั่นสิ้นสุด
    

    1

    วิธีแก้ปัญหาคือการใช้คุณสมบัติที่กำหนดเองที่คุณสามารถ "ไปที่" ได้อย่างง่ายดาย (ไม่ต้องลุยผ่านสไลด์)

    จากhttp://msdn.itags.org/powerpoint/4426/ :

    1. เลือกรูปร่างหรือข้อความที่คุณต้องการตั้งค่าบุ๊คมาร์ค
    2. เลือกไฟล์ | คุณสมบัติ ... และเปิดใช้งานแท็บกำหนดเอง
    3. พิมพ์ชื่อสำหรับบุ๊กมาร์ก
    4. ทำเครื่องหมาย 'ลิงก์ไปยังเนื้อหา' ค่าที่ระบุไว้ในกล่องดรอปดาวน์ที่อยู่ติดกันเมื่อคุณทำเครื่องหมาย 'ลิงก์ไปยังเนื้อหา' เป็นการอ้างอิงถึงการเลือกของคุณ
    5. คลิกเพิ่ม
    6. คลิกตกลงเพื่อปิดกล่องโต้ตอบคุณสมบัติ

    เมื่อคุณสร้างบุ๊กมาร์กแล้วคุณสามารถข้ามไปที่บุ๊กมาร์กดังต่อไปนี้:
    1. เลือกแก้ไข | ไปที่คุณสมบัติ ...
    2. คลิกชื่อคุณสมบัติจากกล่องโต้ตอบ (นี่คือชื่อที่คุณตั้งให้กับบุ๊คมาร์ค)
    3. คลิกที่ไปที่

    กล่องโต้ตอบ "ไปที่" จะแสดงรายการบุ๊คมาร์คที่คุณสามารถดับเบิลคลิกและไปที่กล่องข้อความที่คุณชื่นชอบพร้อมที่จะแก้ไข / วาง


    1

    วิธีที่ง่ายที่สุดในการทำเช่นนี้ใน Powerpoint (อย่างน้อยสำหรับค่าที่จะปรากฏในทุกสไลด์) คือการแก้ไขต้นแบบภาพนิ่ง ใส่ชื่อผู้แต่งที่นั่น

    (เหตุผลที่เป็นไปได้ที่ Word ช่วยให้คุณและคนอื่น ๆ ไม่ได้ทำคือทีมต่าง ๆ ของ Microsoft ไม่ค่อยพูดคุยกัน ... )


    1
    ดูย่อหน้าที่สองในคำถามของฉัน: '... แม้ว่าคุณจะใช้หน้าต้นแบบที่แตกต่างกัน ... '
    Rabarberski

    0

    อัปเดตสำหรับจัดการโค้ดด้วย ppt 2019: ฉันเปลี่ยนรูทีนถัดไปเล็กน้อยสาเหตุคือง่ายกว่าสำหรับผู้ใช้ส่วนหน้าในการเปลี่ยน "ทางเลือก" โดยใช้ปุ่มเมาส์ขวา:

        For Each ShapeObj In processPage.Shapes
             If Left(ShapeObj.AlternativeText, 1) = "[" Then
            'If Left(ShapeObj.Title, 1) = "[" Then
                Dim sStart, sEnd As Integer
                ' extract property from between square brackets
                sStart = 2
                'sEnd = InStr(2, ShapeObj.Title, "]")
                sEnd = InStr(2, ShapeObj.AlternativeText, "]")
                'propname = Trim(Mid(ShapeObj.Title, sStart, sEnd - 2))
                propname = Trim(Mid(ShapeObj.AlternativeText, sStart, sEnd - 2))
                    ShapeObj.TextFrame.TextRange.Text = getProperty(propname, ShapeObj.TextFrame.TextRange.Text)
    
            End If
        Next ' obj
    
    โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
    Licensed under cc by-sa 3.0 with attribution required.