‘壹’ Word邮件合并以后如何做个vba,自动刷新图片
Word中的邮件合并中,要把照片显示出来是有讲究的,不能像其它内容一样直接插入。
1. 首先要准备好好照片,照片大小和分辨率应一致,并把照片文件全部放到数据源同一个文件夹下
2. 在数据源表格(一般为Excel表格或Word表格),表格标题名称照片,下面各行分别是照片的文件名,文件名应与前面的姓名相同,扩展名一般为.jpg
3. 在主文档中,插入照片的位置处,插入域——Includepicture,为便于后续处理,在“文件名或URL”框中,随便输入一预设文件名,图片中输入了1。
5. 按Alt+F9切换域结果的格式,这样就完成了照片的邮件合并
6. 完成合并邮件。
‘贰’ 怎么在ppt里插入vb程序以随机调用文本,并用一个控件来控制刷新
文本的我会,如图排列一下对象,名称图上有标
然后用VBA
因为急,所以用网上1现成的改动了一下,快停电了.....
这是VBA
Dimtxtline
PrivateSubCommandButton2_Click()
DimTextLine1
Ifxhs.Text=""Then
aa=MsgBox("请输入与本Powerpoint文件在同一文件夹下文本文件名!",vbDefaultButton4,"提示")
ElseIfxhs.Text+".txt"<>Dir(xhs.Text+".txt")Then
aa=MsgBox("该文件不存在!请输入与本Powerpoint文件在同一文件夹下"+vbCrLf+"其他文本文件的文件名后再按“导入”。",vbDefaultButton4,"提示")
xhs.Text=""
Else
Openxhs.Text+".txt"ForInputAs#1
DoWhileNotEOF(1)
LineInput#1,TextLine1
h=h+TextLine1+vbCrLf
Loop
txtline=Split(h,vbCrLf)
Length=UBound(txtline)
LineCount.Text=CStr(Length)
IfLineCount.Text>0ThenGo.Enabled=True
xms.Text=h+vbCrLf
EndIf
Close#1
EndSub
PrivateSubCommandButton4_Click()
xms.Text=""
EndSub
PrivateSubGo_Click()
IfCInt(TargetLine.Text)<CInt(LineCount.Text)Then
xms.Text=vbCrLf+"这是第"+TargetLine.Text+"行的内容"+vbCrLf+txtline(CInt(TargetLine.Text)-1)
Else
aa=MsgBox("行数超出文本最大行数",vbDefaultButton4,"提示")
EndIf
EndSub
说明下:CommandButton2是那个导入的名称.....
这个很简单的,一看就明白,就是读出来,然后用split将其打开成数组,然后分数组读出来就OK...
‘叁’ EXCEL 如何利用vba 插入本地一张图片 并且每次自动更新呢
工作簿打开时导入图片
Private Sub Workbook_Open()
ActiveSheet.Pictures.Insert("C:\123\456.jpg").Select
End Sub
A1不为空时删除图片
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("a1") <> "" Then
For Each sh In ActiveSheet.Shapes
sh.Delete
Next
End If
End Sub
这样每次打开工作簿就加载指定的图片,如果图片名称为456.jpg图片更新了,加载的图片也是最新的。
‘肆’ 如何使用VBA调用EXCEL里面的图片和数据生成PPT里面的图片和数据
本次案例来自网友提问:需要从600个Excel文件中导出每个文件中的2个图片,之前由于时间原因,回复比较简单没有给出具体实现方法,今天花时间整理写成图文,希望小伙伴们都可以学会。
一、 数据模拟
为了更加真实的还原提问者遇到的问题,我们需要准备600个且都包含有2个图片的Excel文件。一两个文件我们可以手动新建就可以了,这可是600个文件呐!
别担心,既然我们是用VBA来解决问题,解决这种事情重复机械的劳动,当然不是什么难事。图片我们用以下两个代替,放到当前文件目录下,分别命名为test1.png和test2.png,模拟数据时将test1.png插入到第一个表,test2.png插入到第二个工作表。
test1.png
test2.png
分步操作过程:
第一步:新建一个Excel文件,将它另存为.xlsm格式。
启用宏工作簿
第二步:打开新建好的.xlsm文件,按快捷键ALT+F11进入VBE界面。
进入VBE界面
第三步:在VBE工程种插入一个模块。
插入模块
第四步:在刚刚新建的模块中粘贴以下代码。
Sub 生成600个含图片的Excel文件()
'关闭刷新,防止屏幕抖动
Application.ScreenUpdating = False
'定义变量i
Dim i As Integer
'定义i从1循环到600
For i = 1 To 600
'新增一个工作簿
Workbooks.Add
'往工作簿的第一个工作表中插入图片test1.png
ActiveWorkbook.Sheets(1).Pictures.Insert(ThisWorkbook.Path & "\test1.png").Select
'往工作簿的第二个工作表中插入图片test2.png
ActiveWorkbook.Sheets(2).Pictures.Insert(ThisWorkbook.Path & "\test2.png").Select
'将工作簿存储到当前路径下
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & i & ".xlsx"
'关闭工作簿
ActiveWorkbook.Close
'继续循环新建其他工作簿
Next
'恢复屏幕刷新
Application.ScreenUpdating = True
'处理完成给出提示
MsgBox "600个含图片的Excel文件生成完成!", vbInformation, "提示信息"
End Sub
第五步:执行VBA代码,生成我们需要的600个Excel文件。
执行VBA代码
连贯操作演示:
操作演示
二、 图片导出
600个案例文件已经准备好了,接下来就是导出文件中的图片。
解决思路:
1. 一个个的找出当前目录下的所有Excel文件。
2. 打开找到的Excel文件。
3. 一个个的找出Excel文件中的工作表。
4. 找出工作表中的所有图片对象。
5. 把找到的每一个图片导出到当前目录下。
如果文件不多的情况下,按上面的思路手动操作导出也是可以的,其实通过VBA来解决问题也是要先把复杂问题进行简单化,一步步进行分解问题,最终形成完整解决方案。VBA代码使用方式在上面数据准备过程中已经有详细描述了,本次我们直接来运行下代码,实现导出文件中的图片。
Sub 导出当前路径下工作簿中的图片()
Dim wk$ '定义为工作簿文件
Dim i As Integer '定义工作簿中的工作表数量
Dim ii As Integer '定义为工作表中的对象个数
'关闭刷新,防止抖动
Application.ScreenUpdating = False
'遍历第一个工作簿文件
wk = Dir(ThisWorkbook.Path & "\*.xlsx")
'遍历到的文件名不等于空的情况下
Do While wk <> ""
'如果文件名称和当前的名称是不一样的。
If wk <> ThisWorkbook.Name Then
'打开遍历到的工作簿
Workbooks.Open (ThisWorkbook.Path & "\" & wk)
'对打开的工作簿文件进行以下操作
With ActiveWorkbook
'循环出工作簿中的每一个工作表
For i = 1 To .Sheets.Count
'循环出工作表中的每一个对象shape
For ii = 1 To .Sheets(i).Shapes.Count
'临时变量,统计shape的个数
k = k + 1
'复制shape对象
.Sheets(i).Shapes(ii).Copy
'创建一个图表对象,宽高与与对象保持一致
With .Sheets(i).ChartObjects.Add(0, 0, .Sheets(i).Shapes(ii).Width, .Sheets(i).Shapes(ii).Height).Chart
'把图片插入进去
.Paste
'通过图表对象的导出方法,把图片导出到当前目录下
.Export ThisWorkbook.Path & "\" & wk & "_" & k & ".png"
'删除图表
.Parent.Delete
End With
Next
Next
'关闭打开的工作簿
.Close False
End With
End If
'继续遍历下一个工作簿
wk = Dir
Loop
'开启屏幕刷新
Application.ScreenUpdating = True
End Sub
图片导出演示
‘伍’ 如何用vba做ppt
首先,新建一个PPT文档,并复制这段代码。点击“开发工具”→Visual Basic或查看代码
Sub一键EMF()
ActiveWindow.View.PasteSpecial (ppPasteEnhancedMetafile)
ActiveWindow.Selection.ShapeRange.Ungroup.Ungroup.Select
ActiveWindow.Selection.ShapeRange(msoAutoShape).Delete
ActiveWindow.Selection.ShapeRange.Regroup
End Sub
如果没有开发工具选项卡,请点击文件→选项→自定义功能区→主选项卡→勾选“开发工具”→确定。然后根据第一步继续。如果已经有开发工具选项卡,跳过此步。
进入VBA界面后,点击插入→模块→在新建的空白区域按Ctrl+V粘贴复制好的代码→关闭窗口,返回PPT界面。
我们也可以把宏放到快速访问工具栏中,方法是:文件→选项→“从下列位置选择命令”下面选择“宏”→将一键EMF添加到对话框右侧的快速访问工具栏里。此时宏就出现在了快速访问工具栏上。复制素材后点击此按钮,就做到了一键导入。经常从AI往PPT导素材的朋友,不妨试试。
PS:
1.建议将做好的宏处理文档单独保存为pptm格式,使用时打开导入素材,然后把处理后的素材再复制到需要的ppt里,此pptm只作为中转。
2.使用一键前,请注意先复制元素,否则VBA会报错。
3.代码在PPT2010、2013中测试无误。