Excel范围到PowerPoint-粘贴问题
我在粘贴从Excel到PowerPoint的范围时遇到一些问题。我想将其保留为Keepsource格式:Excel范围到PowerPoint-粘贴问题,excel,vba,format,powerpoint,paste,Excel,Vba,Format,Powerpoint,Paste,我在粘贴从Excel到PowerPoint的范围时遇到一些问题。我想将其保留为Keepsource格式: Function copyToPPT() 'Create an instance of PowerPoint. Set pptApp = CreateObject("PowerPoint.Application") ' Create a PowerPoint presentation. nomeppt = ThisWorkbook.Path + "\" + "SR-1871_R1 - ID
Function copyToPPT()
'Create an instance of PowerPoint.
Set pptApp = CreateObject("PowerPoint.Application")
' Create a PowerPoint presentation.
nomeppt = ThisWorkbook.Path + "\" + "SR-1871_R1 - ID-033 - Bi-Weekly LATAM QC Communication Meeting - data_Blank.pptx"
With pptApp
Let .Visible = True
Let .WindowState = 3
Set Pres1 = pptApp.Presentations.Open(nomeppt)
End With
i = 8
While i <= 14
slide = "Slide " & i & " Final"
Workbooks("Results.xlsx").Activate
Worksheets(slide).Activate
Worksheets(slide).Range("A1").Select
Worksheets(slide).Range(Selection, Selection.End(xlDown)).Select
Worksheets(slide).Range(Selection, Selection.End(xlToRight)).Select 'Selecionando os registros - Simulando ctrl + shift baixo/direta
Selection.Copy
pptApp.ActiveWindow.View.GotoSlide Index:=i
'pptApp.ActivePresentation.Slides(i).Shapes.PasteSpecial DataType:=7 - NOT THE FORMAT I WANT
i = i + 1
pptApp.CommandBars.ExecuteMso ("PasteSourceFormatting") 'freeze the powerpoint when pasting...
pptApp.CommandBars.ReleaseFocus
Wend
End Function
函数copyToPPT()
'创建PowerPoint的实例。
设置pptap=CreateObject(“PowerPoint.Application”)
'创建PowerPoint演示文稿。
nomeppt=ThisWorkbook.Path+“\”+“SR-1871\U R1-ID-033-每两周一次的LATAM质控沟通会议-数据\u Blank.pptx”
用pptApp
Let.Visible=True
设.WindowState=3
Set Pres1=ppt.Presentations.Open(nomeppt)
以
i=8
而我试试这个
pptApp.ActiveWindow.View.PasteSpecial DataType:=ppPasteDefault
Sub copyToPPT()
Dim lRow As Long, lCol As Long
Dim LastCol As String
Dim rng As Range
'Create an instance of PowerPoint.
Set pptApp = CreateObject("PowerPoint.Application")
' Create a PowerPoint presentation.
nomeppt = ThisWorkbook.Path & "\" & _
"SR-1871_R1 - ID-033 - Bi-Weekly LATAM QC Communication Meeting - data_Blank.pptx"
With pptApp
.Visible = True
.WindowState = 3
Set Pres1 = pptApp.Presentations.Open(nomeppt)
End With
i = 8
While i <= 14
slide = "Slide " & i & " Final"
With Workbooks("Results.xlsx").Worksheets(slide)
lRow = .Range("A" & .Rows.Count).End(xlUp).Row
lCol = .Cells(1, Columns.Count).End(xlToLeft).Column
LastCol = Split(.Cells(, lCol).Address, "$")(1)
Set rng = .Range("A1:" & LastCol & lRow)
End With
pptApp.ActiveWindow.View.GotoSlide Index:=i
rng.Copy
DoEvents
pptApp.ActiveWindow.Panes(2).Activate
pptApp.CommandBars.ExecuteMso ("PasteSourceFormatting")
Wait 3
Application.CutCopyMode = False
i = i + 1
Wend
End Sub
Private Sub Wait(ByVal nSec As Long)
nSec = nSec + Timer
While nSec > Timer
DoEvents
Wend
End Sub
这将给出与相同的结果
pptApp.CommandBars.ExecuteMso ("PasteSourceFormatting")
ppPasteDefault
的值为0
,因此您可以
Const ppPasteDefault as Integer = 0
在您的代码顶部或使用
pptApp.ActiveWindow.View.PasteSpecial DataType:=0
编辑(从评论中跟进)
我已经更改了你的密码。用这个,如果你有任何错误,告诉我。这不使用.Activate/。选择
试试这个
pptApp.ActiveWindow.View.PasteSpecial DataType:=ppPasteDefault
Sub copyToPPT()
Dim lRow As Long, lCol As Long
Dim LastCol As String
Dim rng As Range
'Create an instance of PowerPoint.
Set pptApp = CreateObject("PowerPoint.Application")
' Create a PowerPoint presentation.
nomeppt = ThisWorkbook.Path & "\" & _
"SR-1871_R1 - ID-033 - Bi-Weekly LATAM QC Communication Meeting - data_Blank.pptx"
With pptApp
.Visible = True
.WindowState = 3
Set Pres1 = pptApp.Presentations.Open(nomeppt)
End With
i = 8
While i <= 14
slide = "Slide " & i & " Final"
With Workbooks("Results.xlsx").Worksheets(slide)
lRow = .Range("A" & .Rows.Count).End(xlUp).Row
lCol = .Cells(1, Columns.Count).End(xlToLeft).Column
LastCol = Split(.Cells(, lCol).Address, "$")(1)
Set rng = .Range("A1:" & LastCol & lRow)
End With
pptApp.ActiveWindow.View.GotoSlide Index:=i
rng.Copy
DoEvents
pptApp.ActiveWindow.Panes(2).Activate
pptApp.CommandBars.ExecuteMso ("PasteSourceFormatting")
Wait 3
Application.CutCopyMode = False
i = i + 1
Wend
End Sub
Private Sub Wait(ByVal nSec As Long)
nSec = nSec + Timer
While nSec > Timer
DoEvents
Wend
End Sub
子copyToPPT()
变暗lRow尽可能长,lCol尽可能长
将LastCol设置为字符串
变暗rng As范围
'创建PowerPoint的实例。
设置pptap=CreateObject(“PowerPoint.Application”)
'创建PowerPoint演示文稿。
nomeppt=thispoolk.Path&“\”和_
“SR-1871_R1-ID-033-每两周一次的LATAM质控沟通会议-数据_Blank.pptx”
用pptApp
.Visible=True
.WindowsState=3
Set Pres1=ppt.Presentations.Open(nomeppt)
以
i=8
当我打开计时器时
多芬特
温德
端接头
我已经测试并尝试了该代码,它可以正常工作。。。在复制和粘贴之间,您还做过其他事情吗?这可能正在清除剪贴板。或者在复制命令后添加DoEvents
,以便Excel有足够的时间将图像放入剪贴板。将DoEvents
放在选择之后。复制
片刻,我正在重新编写您的整个函数。。给我10分钟一个简单的问题。Excel工作表中的行1是否有标题?已更新。请帮我测试一下。OP还需要2张投票才能聊天。如果有人能帮忙,请:)试试www.pptxbuilder.com。它会自动将excel数据转换为powerpoint图表。