Word中用VBA插入一个文件夹里的所有.jpg图片
每四张图片放在一页,第一行为四张图片的文件名
插入图片调整尺寸参考
Sub final()
Dim FN As String, N%, W#, H#, PW#, PH#
With ActiveDocument.PageSetup '以下设置纸型及页边距(A4,页边距2cm),并计算出图片应有的宽高
.Orientation = wdOrientPortrait
.TopMargin = CentimetersToPoints(2)
.BottomMargin = CentimetersToPoints(2)
.LeftMargin = CentimetersToPoints(2)
.RightMargin = CentimetersToPoints(2)
.Gutter = CentimetersToPoints(0)
.PageWidth = CentimetersToPoints(21)
.PageHeight = CentimetersToPoints(29.7)
PW = (.PageWidth - .LeftMargin - .RightMargin) / 2
PH = .PageHeight - .TopMargin - .LeftMargin
End With
FN = Dir("F:\*.jpg") '循环当前文件目录下各个jpg文件
Dim f(3) As String
b = 0
Do While FN <> "" '当文件名不为空时持续循环
Selection.InlineShapes.AddPicture "F:\" & FN '插入当前循环到的jpg文件
a = b Mod 4
f(a) = FN
With ActiveDocument.InlineShapes(b + 1)
W = .Width '取得宽与高
H = .Height
.LockAspectRatio = msoTrue
If W / H >= PW / PH Then '如果图片的宽高比大于应设置的宽高比,则
.Width = PW * 0.99 '调整宽度为应设置的宽度,高度按调整前后的宽度比进行缩放
'.Height = H * PW / W
Else '如果图片的宽高比小于应设置的宽高比,则
.Height = PH * 0.99 '调整高度为应设置的高度,宽度按调整前后的高度比进行缩放
'.Width = W * PH / H
End If
End With
FN = Dir '循环到下一个文件
If a = 3 Then
Selection.InsertBreak Type:=wdPageBreak
Selection.GoTo What:=wdGoToLine, Which:=wdGoToPrevious, Count:=3
With Selection.Range
.Text = f(0) & "、" & f(1) & "、" & f(2) & "、" & f(3) & vbCrLf
.Font.Name = "times new roman"
.Font.Size = 12
.ParagraphFormat.Alignment = wdAlignParagraphCenter
End With
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1
End If
b = b + 1
Loop
If a <> 3 Then
Select Case a
Case 0
Selection.GoTo What:=wdGoToLine, Which:=wdGoToPrevious, Count:=1
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1
With Selection.Range
.Text = f(0) & vbCrLf
.Font.Name = "times new roman"
.Font.Size = 12
.ParagraphFormat.Alignment = wdAlignParagraphCenter
End With
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1
Case 1
Selection.GoTo What:=wdGoToLine, Which:=wdGoToPrevious, Count:=1
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1
With Selection.Range
.Text = f(0) & "、" & f(1) & vbCrLf
.Font.Name = "times new roman"
.Font.Size = 12
.ParagraphFormat.Alignment = wdAlignParagraphCenter
End With
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1
Case 2
Selection.GoTo What:=wdGoToLine, Which:=wdGoToPrevious, Count:=2
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1
With Selection.Range
.Text = f(0) & "、" & f(1) & "、" & f(2) & vbCrLf
.Font.Name = "times new roman"
.Font.Size = 12
.ParagraphFormat.Alignment = wdAlignParagraphCenter
End With
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1
End Select
End If
End Sub
Word中用VBA插入一个文件夹里的所有.jpg图片的更多相关文章
- OpenCV玩耍(一)批量resize一个文件夹里的所有图像
鉴于用caffe做实验的时候,里面牵扯到一个问题是必须将训练集和测试集都转成256*256的图像,而官网给出的代码又不会用,所以我用opencv转了.其实opencv只转一幅图会很简单,关键在于“批量 ...
- 使用everything把一个文件夹里(包含子目录)的所有图片拷贝到另一个文件夹
最近在找数据集,想要预览数据集里面的全部图片,而因为一些数据集的数据存储方式使得图片都分布在若干层后的子文件里,所以就需要一个如题所示的功能. 找了一堆XCOPY命令的使用方法,差点要撸起袖子写代码干 ...
- matlab批量读取一个文件夹里类似命名的mat文件
参考网址: Matlab读取同一路径下多个txt或mat文件总结 matlab 批量读取数据文件.mat .dat 整理:matlab批量读入数据文件的方法 首先命名方式体现在只是名字里数字有变化,其 ...
- 教你IO流来便利电脑磁盘所有文件,把图片放到一个文件夹里(会发现什么不可告人的密码)
一.需求 我要把C盘下面的所有图片都拿出来,放到一个新文件夹中.今天小编一身正气,看看有没有什么意外发现!!学会看看自己的盘,悄悄的哦!!! 二.代码展示(运行时间可能有点长) import java ...
- java 把一个文件夹里图片复制到另一个文件夹里
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.ut ...
- eclipse中把多个项目放在一个文件夹里
1..Package Explorer 可以在这里打开 2.选择Working sets 3.新建java working set 4.把文件夹显示出来 5.可以把项目移动到文件夹里面了,鼠标左键拖就 ...
- 【文件】读取一个文件夹下所有的jpg图片
今天做视频处理的时候,发现给的视频是用jpg图片的形式给出的,名字的命名规律性不是很强.就想找一种通用的遍历文件夹下图片的方法. 开始在网上找到了下面这份代码,发现只能读取所有的文件夹,文件都被跳过了 ...
- C++实现:把一个文件夹里的冗余文件(.txt)删除
代码很简单,调用了MFC里的几个函数.这里的冗余判断,是要遍历文件内容,进行两两比较. 需要注意的地方有两点: 1.源文件里头文件<afx.h>必须放在最前面.这里是为了避免nafxcwd ...
- SQL扫描并执行文件夹里的sql脚本
场景:项目数据库操作全部使用存储过程实现.每天都会有很多存储过程更新/增加,人工对测试环境中存储过程更新,会有一定概率出现遗漏,也麻烦!所以,需要一个工具将文件夹中所有存 储过程执行一 ...
随机推荐
- LNMP-day3-php扩展缓存插件
perl的编译问题 [root@localhost php5.6.33]# echo 'export LC_ALL=C' >> /etc/profile #设置环境变量,解决后面perl ...
- 二进制安装mariaDB
1.获取二进制安装包 获取二进制格式MariaDB安装包,可去官网下载. 因为是实验环境,所以选择了最新版. mariadb-10.2.12-linux-x86_64.tar.gz 2.解压 解压到 ...
- 51nod 1437 迈克步
题目链接 先利用单调栈or其他方法找到一个元素g[i]作为最小值的区间,设为[L, R]. 那么长度为R-L+1的组的最大值ans=max(ans,g[i]).但是有一个问题: 比如6这个元素是长度为 ...
- 只用最适合的! 全面对比主流 .NET 报表控件:水晶报表、FastReport、ActiveReports 和 Stimulsoft
前言 随着 .NET 平台的出现,报表相关的开发控件随之出现,目前已经有若干成熟的产品可供开发人员使用,本文旨在通过从不同维度对比目前最流行的4款 .NET报表控件,给所有报表开发人员在做产品选型时一 ...
- fzu_oop_east 第一次作业
第一题 题目: 代码: #include<iostream> #include<cstdio> using namespace std; class Date { public ...
- css属性之flex属性
flex属性 规定了弹性元素如何伸长或缩短以适应flex容器中的可用空间.是一个简写属性,可以同时设置flex-grow, flex-shrink, flex-basis三个子属性. /* Basic ...
- 【OpenCV】三种方式操作图像像素
OpenCV中,有3种访问每个像素的方法:使用at方法.使用迭代器方法.使用指针 运行如下程序后可以发现使用at方法速度最快. 代码如下: //操作图像像素 #include <opencv2/ ...
- URAL-1018 Binary Apple Tree---树形DP
题目链接: https://cn.vjudge.net/problem/URAL-1018 题目大意: 给你一棵树,每条边有一个边权,求以1为根节点,q条边的子数(q+1个点),边权和至最大. 解题思 ...
- [Python 网络编程] makefile (三)
socket.makefile(mode ='r',buffering = None,*,encoding = None,errors = None,newline = None )返回一个与套接字相 ...
- 基于mysql的基准测试
常用的基准测试工具介绍: mysql基准测试工具: mysqlslap,mysql自带的工具,对于性能测试不建议使用 特点: 可以模拟服务器负载,并输出相关统计信息 可以指定也可以自动生成查询语句 常 ...