|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 jiulongpo 于 2012-6-25 21:53 编辑
本来开始是用03版的EXCEL写入03的.ppt,但不知为什么,写入图表数据表的数据读不出来,{:soso_e143:}搞了很久,还是不行,只好放弃了.{:soso_e149:}
晚上用excel2007重做了一个excel工作表,写入07版的.PPTX和.PPTM,还是读不出来,真是郁闷{:soso_e109:}.还好,用07版的EXCEL写入03版式的.PPT后顺利读了出来.至此才完成任务.{:soso_e128:}
还请看到此贴的高手进一步完善.{:soso_e163:}
以下是代码,附件在最后------------------------------------------------------------------
'使用前要引用:1. ms PowerPoint 12.0 object
' 2. ms Graph 12.0 object
Function XZwj() As String
Dim Mydz As String
Dim Myfd As FileDialog '声明一个文件对话框对象
Mydz = ThisWorkbook.Path & "\" '获得当前工作目录
Set Myfd = Application.FileDialog(msoFileDialogFilePicker) '设置文件夹选择框对象
With Myfd
.AllowMultiSelect = False '只允许选择一个文件
.Filters.Clear '清空文件筛选器
.Filters.Add "PPT文件", "*.ppt", 1 '重新添加文件筛选器
.InitialFileName = Mydz '对话框中初始显示的路径
.Title = "选择一个PPT类型的文件" '对话框中标题
.Show '显示对话框
If .SelectedItems.Count < 1 Then
XZwj = ""
Exit Function '没有选择就退出
End If
XZwj = .SelectedItems(1) '获得选择后全路径文件夹
End With
End Function
Sub Excel导出到PPt()
Dim Myxzwj As String '声明变量为字符串
Dim Myppt As PowerPoint.Presentation '声明变量为PPT演示文稿
Dim Mysli As PowerPoint.Slide '声明变量为幻灯片
Dim Mysha As PowerPoint.Shape '声明变量为形状
Dim Mycha As Graph.Chart '声明变量为图表
Dim Myshe As Worksheet '声明变量为工作表
Dim Myran '声明变量为数组
Dim Myro As Long, Myco As Long
Set Myshe = Worksheets("ppt_exc") '设置对象为工作表
Myshe.Activate '激活工作表
Myro = Myshe.Range("a65536").End(xlUp).Row '获得A列最后一个使用单元格的行号
Myco = Myshe.Cells(1, 256).End(xlToLeft).Column '获得第一行最后一个使用单元格的列号
Myxzwj = XZwj() '调用函数
If Myxzwj = "" Then '判断是否选择了文件
MsgBox "没有选择文件"
Exit Sub
End If
Set Myppt = GetObject(Myxzwj) '设置对象为文件中的 ActiveX 对象的引用
For k = Myppt.Slides.Count To 1 Step -1 '在PPT中循环
Myppt.Slides(k).Delete '删除全部幻灯片
Next
a = 1 '赋初值
b = 0
For k = 1 To (Myco + 4) / 5 '在工作表列上循环
If (k - 1) Mod 2 = 0 Then '一个幻灯片上放2个图表
Set Mysli = Myppt.Slides.Add(Myppt.Slides.Count + 1, ppLayoutBlank) '添加新的幻灯片
b = 0
End If
Myran = Myshe.Range(Cells(1, a), Cells(1 + 5, a + 4)) '数组赋值
Set Mysha = Mysli.Shapes.AddOLEObject(Left:=10 + b, Top:=100, Width:=350, Height:=300, _
ClassName:="MSGraph.Chart", Link:=msoFalse) '添加新的图表
b = Mysha.Width + b '下一张图表的左边距
Mysha.Name = "Mychart_" & Myshe.Cells(1, a) '设置图表名称
Set Mycha = Mysha.OLEFormat.Object '设置对象
With Mycha
.HasTitle = True '图表显示标题
.ChartTitle.Text = Myran(1, 1) '设置标题文本
.HasLegend = False '图表没有图例
.ChartType = 65 '图表类型为_数据点折线图
.Application.PlotBy = 1 '图表产生在行上
.Parent.DataSheet.Cells.Clear '清除图表数据表中所有数据
For ro = 1 To UBound(Myran, 1) - 1 '该循环给图表数据表加入数据
For co = 1 To UBound(Myran, 2)
.Parent.DataSheet.Cells(ro, co) = Myran(ro + 1, co) '给图表数据表加入数据
Next co
Next ro
End With
a = a + 5
Next k
Myppt.Save 'PPT演示文稿保存
Myppt.Close 'PPT演示文稿关闭
Myppt.Application.Quit 'PPT退出
Set Myshe = Nothing '清空对象
Set Mycha = Nothing
Set Mysha = Nothing
Set Mysli = Nothing
Set Myppt = Nothing '清空对象
End Sub
Sub PPt导入到Excel()
Dim Myxzwj As String '声明变量为字符串
Dim Myppt As PowerPoint.Presentation '声明变量为PPT演示文稿
Dim Mysli As PowerPoint.Slide '声明变量为幻灯片
Dim Mysha As PowerPoint.Shape '声明变量为形状
Dim Mycha As Graph.Chart '声明变量为图表
Dim Myshe As Worksheet '声明变量为工作表
Dim Myran '声明变量为数组
Set Myshe = Worksheets("ppt_exc") '设置对象为工作表
Myshe.Activate '激活工作表
Myxzwj = XZwj() '调用函数
If Myxzwj = "" Then '判断是否选择了文件
MsgBox "没有选择文件"
Exit Sub
End If
a = 0 '赋初值
Set Myppt = GetObject(Myxzwj) '设置对象为文件中的 ActiveX 对象的引用
For Each Mysli In Myppt.Slides '在幻灯片集合中循环
For Each Mysha In Mysli.Shapes '在魂状集合中循环
If Mysha.Type <> msoEmbeddedOLEObject Then '判断不是图表就退出循环
Exit For
End If
Set Mycha = Mysha.OLEFormat.Object '设置对象
Myshe.Cells(1, 1 + a) = Mycha.ChartTitle.Text '标题写入工作表
For ro = 1 To 5 '该循环把图表数据表写入工作表
For co = 1 To 5
Myshe.Cells(ro + 1, co + a) = Mycha.Parent.DataSheet.Cells(ro, co)
Next co
Next ro
a = a + 5
Next Mysha
Next Mysli
Myppt.Close 'PPT演示文稿关闭
Myppt.Application.Quit 'PPT退出
Set Myshe = Nothing '清空对象
Set Mycha = Nothing
Set Mysha = Nothing
Set Mysli = Nothing
Set Myppt = Nothing '清空对象
End Sub
ppt_excel.zip
(57.96 KB, 下载次数: 373)
终于知道为什么用excel2007做的excel工作表,写入07版的.PPTX和.PPTM,还是读不出来了,在安装 Office 2007 套件 Service Pack 2 之前不能使用 Microsoft Visual Basic 的应用程序 (VBA) 来修改已插入 PowerPoint 2007 或 Word 2007 中的图表
http://support.microsoft.com/kb/948683/zh-cn
|
|