VBA实现从EXCEL单元格更新或修改PPT对应文本框内容并且不改变格式

VBA实现从EXCEL单元格更新或修改PPT对应文本框内容并且不改变格式

原创不容易,请不要抄袭!

配置工作

EXCEL 2010版本以上配置

  1. 文件-选项-自定义功能区-主选项卡-勾选开发者选项
  2. 打开开发者选项里的Visual Basic, 选择工具-引用-勾选Microsoft Powerpoint 14.0 Object Library

开发

  1. 打开Visual Basic 在工程框里相应的EXCEL下新建模块,此时会弹出模块1(代码)
  2. 编写两个VB函数getshapedata() 和 writedata()
Dim ppapp As PowerPoint.Application
Dim pppres As PowerPoint.Presentation

Sub getshapedata()
'On Error GoTo line1
Set ppapp = GetObject(, "powerpoint.application")
Set pppres = ppapp.ActivePresentation

Dim shapename
Dim shapeslide
Dim shapetext
Dim nextrow

shapeslide = ppapp.ActiveWindow.View.Slide.SlideIndex
shapename = ppapp.ActiveWindow.Selection.ShapeRange(1).Name
shapetext = pppres.Slides(shapeslide).Shapes(shapename).TextEffect.Text
'friendlyname = InputBox("insert one name" & shapetext, "Friendly Name", "")

nextrow = Sheet1.Range("a" & Rows.Count).End(xlUp).Row + 1

Sheet1.Range("a" & nextrow) = shapeslide
Sheet1.Range("b" & nextrow) = shapename
Sheet1.Range("c" & nextrow) = shapetext
'Sheet1.Range("d" & nextrow) = friendlyname

'Exit Sub

'line1:
'MsgBox "no selection"

End Sub


Sub writedata()
Dim c As Object
Dim shapename
Dim slidename
Dim shapetext

Set ppapp = GetObject(, "powerpoint.application")
Set pppres = ppapp.ActivePresentation

For Each c In Sheet1.Range("a2:a" & Sheet1.Range("a" & Rows.Count).End(xlUp).Row)

shapeslide = Sheet1.Range("a" & c.Row)
shapename = Sheet1.Range("b" & c.Row)
shapetext = Sheet1.Range("c" & c.Row)
'friendlyname = Sheet1.Range("d" & c.Row)

pppres.Slides(shapeslide).Shapes(shapename).TextEffect.Text = shapetext

Next c

End Sub
  1. 保存

演示

  1. 打开保存代码的EXCEL,在开发工具中新建按钮,选择getshapedata,并改按钮名称为get data.
    在这里插入图片描述
  2. 按照上一步骤,插入另一个按钮,选择writedata, 并修改名称为write data, 在A1, B1&C1键入shape index(幻灯片索引), shape name(文本框索引), value(文本框的内容),结果如下图所示。
    在这里插入图片描述
  3. 不关闭EXCEL, 并打开PPT,选择想要更新的文本框。
    在这里插入图片描述
  4. 按一下EXCEL的按钮get data,ppt对应文本框的三个信息自动生成在excel里,如下所示:
    在这里插入图片描述
  5. 保持PPT与EXCEL同时打开,修改目标文本框对应EXCEL里VALUE中的值,例如(今天天气很好),点按钮write data,运行结束后查看下PPT,如下图所示:
    在这里插入图片描述
  6. 自动化功能强一点就是这个效果,需要增加格式处理函数text(), round(),left(), 和len()等EXCEL函数。
    6.1 数据源EXCEL加格式处理:
    在这里插入图片描述
    6.2 中间文本框对应EXCEL文件
    在这里插入图片描述
    6.3 可替换PPT里的所有的文本框
    在这里插入图片描述

注意点!!!

PPT里的文本框必须是在创建或设计时新建的文本框,不能是同一个文本框复制的

打赏

本人制作这个代码不容易,希望大家获得便利的同时,支援点粮草,谢谢!
在这里插入图片描述
如果有深入问题,请联系modas_lee@foxmail.com

  • 7
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 您好!以下是实现VBA代码,以显示Sheet1单元格内容在窗体文本框: 首先,您需要在窗体上创建一个文本框。在窗体设计器,双击工具箱的“文本框”控件并将其拖动到窗体上。然后右键单击文本框,选择“属性”窗口。在属性窗口,找到“名称”属性并为文本框命名,例如“TextBox1”。 接下来,打开VBA编辑器。可以通过按下Alt+F11键或在开发者选项卡单击“Visual Basic”按钮来打开VBA编辑器。 在VBA编辑器,选择窗体对象并打开其“代码”视图。在代码视图,找到窗体的“Load”事件处理程序,并将以下代码添加到该处理程序: Private Sub UserForm_Initialize() TextBox1.Value = Sheets("Sheet1").Range("A1").Value End Sub 在上面的代码,我们将Sheet1单元格A1的值赋值给名为“TextBox1”的文本框的Value属性。您可以更改单元格引用以显示所需的单元格内容。 ### 回答2: VBA是Visual Basic for Applications的缩写,是一种用于编写宏的编程语言。实现窗体文本框显示Sheet1单元格内容可以通过以下步骤来完成: 1. 首先,在VBA编辑器,打开窗体的代码模块。 2. 在窗体的代码模块,声明一个变量来保存Sheet1单元格内容。例如,可以使用以下命令声明一个名为cellValue的字符串变量: Dim cellValue As String 3. 在窗体的代码模块,使用以下命令将Sheet1单元格内容赋值给变量cellValue: cellValue = Sheets("Sheet1").Range("A1").Value 这里假设需要显示Sheet1单元格A1的内容。 4. 在窗体的代码模块,使用以下命令将变量cellValue的值传递给文本框的Text属性,使其显示在窗体上: TextBox1.Text = cellValue 这里假设窗体上的文本框的名称为TextBox1。 5. 最后,保存并关闭VBA编辑器。 通过以上步骤,窗体的文本框将显示Sheet1单元格内容。每当Sheet1单元格内容发生改变时,文本框内容也会相应地更新。 ### 回答3: VBA是Visual Basic for Applications的缩写,是一种用于自动化和自定义Microsoft Office应用程序的编程语言。VBA可以与Excel进行集成,通过编写代码来实现各种功能。 要实现窗体文本框显示Sheet1单元格内容,可以按照以下步骤进行: 1. 打开Excel,创建一个新的宏,点击“开发工具”选项卡,选择“Visual Basic”按钮,打开Visual Basic编辑器。 2. 在Visual Basic编辑器,找到VBA project窗口VBA项目名称,右键点击,选择“插入”-“用户窗体”来创建一个新的用户窗体。 3. 在用户窗体上添加一个文本框控件,通过在工具箱拖动放置到用户窗体上。可以调整文本框的大小和位置。 4. 双击文本框,进入文本框的事件处理程序。 5. 在文本框的事件处理程序,编写以下VBA代码: Private Sub TextBox1_Change() Dim cellValue As Variant cellValue = ThisWorkbook.Sheets("Sheet1").Range("A1").Value TextBox1.Text = cellValue End Sub 这段代码的作用是在TextBox1的Change事件,将Sheet1的A1单元格的值赋值给TextBox1的文本。 6. 在用户窗体,右键点击用户窗体的名称,选择“显示代码”来打开代码窗口。在代码窗口编写以下VBA代码: Private Sub UserForm_Initialize() Dim cellValue As Variant cellValue = ThisWorkbook.Sheets("Sheet1").Range("A1").Value TextBox1.Text = cellValue End Sub 这段代码的作用是在用户窗体初始化时,将Sheet1的A1单元格的值赋值给TextBox1的文本。 7. 验证代码的正确性后,点击“保存”并关闭Visual Basic编辑器。 8. 返回Excel,打开VBA编辑器,双击Sheet1,进入Sheet1的事件处理程序。 9. 在Sheet1的事件处理程序,编写以下VBA代码: Private Sub Worksheet_Change(ByVal Target As Range) UserForm1.TextBox1.Text = Target.Value End Sub 这段代码的作用是当Sheet1单元格内容发生变化时,将变化的内容赋值给用户窗体的TextBox1。 10. 最后,关闭VBA编辑器。现在,当你在Sheet1单元格输入内容时,用户窗体文本框将显示Sheet1单元格内容。 以上是使用VBA实现窗体文本框显示Sheet1单元格内容的步骤,你可以根据具体的需求进行适当的修改和扩展。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值