ข้อผิดพลาดอัตโนมัติ


-1

ฉันพยายามใช้ excel VBA เพื่อคัดลอกแผนภูมิไปยังสไลด์ Powerpoint โดยใช้รหัสด้านล่าง แต่มันแสดงข้อผิดพลาด ฉันไม่สามารถหาสาเหตุของปัญหาได้ ฉันสงสัยว่าไฟล์ excel มีขนาดใหญ่เกินไปหรือไม่ ฉันจะแก้ไขปัญหาได้อย่างไร

Sub ExcelToPres()
Dim PPT As Object
Set PPT = CreateObject("PowerPoint.Application")
PPT.Visible = True
PPT.Presentations.Open Filename:="C:\test\test.pptx"
copy_chart "Sheet1", 2  ' Name of the sheet to copy graph and slide number the graph is to be pasted in
PPT.Save
PPT.Close
End Sub


Public Function copy_chart(sheet, slide)


Dim PPApp As Object
Dim PPPres As Object
Dim PPSlide As Object

Set PPApp = CreateObject("Powerpoint.Application")


Set PPApp = GetObject(, "Powerpoint.Application")
Set PPPres = PPApp.ActivePresentation
'PPApp.ActiveWindow.ViewType = ppViewSlide
PPApp.ActiveWindow.View.GotoSlide (slide)

Worksheets("Sheet1").Activate
ActiveSheet.ChartObjects("Chart 13").Chart.CopyPicture _ ****
Appearance:=xlScreen, Size:=xlScreen, Format:=xlPicture 


'PPApp.ActiveWindow.View.GotoSlide PPSlide.SlideIndex

Set PPSlide = PPPres.Slides(PPApp.ActiveWindow.Selection.SlideRange.SlideIndex)
With PPSlide
' paste and select the chart picture
.Shapes.Paste.Select
' align the chart
PPApp.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True
PPApp.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True
End With

' Clean up
Set PPSlide = Nothing
Set PPPres = Nothing
Set PPApp = Nothing

End Function

ข้อผิดพลาดสายใดกำลังโยน? คุณลองไฟล์ Excel ที่เล็กกว่านี้หรือไม่ (เพื่อตรวจสอบว่าข้อสงสัยของคุณถูกหรือผิด)
Ƭᴇcʜιᴇ007

คำตอบ:


0

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

สิ่งหนึ่งที่ฉันต้องสงสัยในทันทีคือรูทีนการล้างข้อมูลใน copy_chart กำลังปิดออบเจ็กต์แอป PPT ดังนั้นเมื่อการควบคุมกลับไปที่รูทีนย่อยการเรียกวัตถุนั้นเป็นโมฆะ หากข้อผิดพลาดเกิดขึ้นในบรรทัด "PPT.Save" ฉันจะนำเงินมาให้ ;-)

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

Sub ExcelToPres()
Dim PPT As Object
Dim PPTPres as Object
Set PPT = CreateObject("PowerPoint.Application")
PPT.Visible = True
Set PPTPres = PPT.Presentations.Open Filename:="C:\test\test.pptx"
copy_chart "Sheet1", 2, PPTPres  ' Name of the sheet to copy graph and slide number the graph is to be pasted in
PPTPres.Save
PPTPres.Close
' optionally
PPT.Quit

End Sub


Public Function copy_chart(sheet as String, lSlide as Long, PPTPres as Object)

Dim PPSlide As Object
Dim PPShapeRange as Object

Worksheets("Sheet1").Activate
ActiveSheet.ChartObjects("Chart 13").Chart.CopyPicture _ ****
Appearance:=xlScreen, Size:=xlScreen, Format:=xlPicture 

Set PPSlide = PPTPres.Slides(lSlide)

With PPSlide
' paste and select the chart picture
set PPShapeRange = .Shapes.Paste

' align the chart
With PPShapeRange
.Align msoAlignCenters, True
.Align msoAlignMiddles, True
End With


End Function
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.