ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 18919|回复: 14

[求助] word如何自动调整插入图片的大小?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-11-10 15:04 | 显示全部楼层 |阅读模式
各位好!
想问个问题,在向word中插入图片时,能否使用vba做到不论插入任何尺寸的图片,在插入后都自动调整为宽度为6,长度为5.5,因为有好多图片,每次都要手动调整大小,很费事...
如果可以的话,能否提供下vba代码,非常感谢!!!

TA的精华主题

TA的得分主题

发表于 2012-11-10 18:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
干嘛要把word不擅长的任务交给它做啊。用图像软件批量处理后,插入应该更好。word vba应该可以,但是没必要吧。不好意思,我对vba不是太通透。

TA的精华主题

TA的得分主题

发表于 2012-11-10 19:58 | 显示全部楼层
本帖最后由 白月清风 于 2012-11-10 20:01 编辑

Sub 插入图片()
Dim myfile As FileDialog
    Set myfile = Application.FileDialog(msoFileDialogFilePicker)
    With myfile
         .InitialFileName = "C:\"
            If .Show = -1 Then
            For Each fn In .SelectedItems   
          Set mypic = Selection.InlineShapes.AddPicture(FileName:=fn, SaveWithDocument:=True)
           mypic.Width = 400 '根据需要设置,不知道楼主6、5.5用的什么单位
           mypic.Height = 300
     Next fn
          End If
    End With
    Set myfile = Nothing
End Sub

此代码可以实现选择一张或多张图片插入

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-10 22:11 来自手机 | 显示全部楼层
白月清风 发表于 2012-11-10 19:58  Sub 插入图片()  Dim myfile As FileDialog  Set myfile = Application.FileDialog(msoFileDialogFileP ...

学习了,非常感谢!

TA的精华主题

TA的得分主题

发表于 2012-11-18 23:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
好好研究一下

TA的精华主题

TA的得分主题

发表于 2015-1-6 22:59 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-1-7 15:06 | 显示全部楼层
修改了一下“白月清风”的代码,可以随意指定宽度和高度。
  1. Sub 插入图片()
  2.     Dim myfile As FileDialog
  3.     Dim myW As Single, myH As Single
  4.    
  5.     myW = InputBox("请输入图片宽度,单位:厘米", , 6)
  6.     myH = InputBox("请输入图片高度,单位:厘米", , 5.5)
  7.    
  8.     Set myfile = Application.FileDialog(msoFileDialogFilePicker)
  9.     With myfile
  10.          .InitialFileName = "C:"
  11.             If .Show = -1 Then
  12.             For Each fn In .SelectedItems
  13.           Set mypic = Selection.InlineShapes.AddPicture(FileName:=fn, SaveWithDocument:=True)
  14.            mypic.Width = CentimetersToPoints(myW)
  15.            mypic.Height = CentimetersToPoints(myH)
  16.      Next fn
  17.           End If
  18.     End With
  19.     Set myfile = Nothing
  20. End Sub
复制代码


评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-7 15:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
现在再来看这个本人初学vba时的问题,简直是简单的没法再简单了……

TA的精华主题

TA的得分主题

发表于 2015-1-7 17:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zhanglei1371 发表于 2015-1-7 15:51
现在再来看这个本人初学vba时的问题,简直是简单的没法再简单了……

祝贺你,VBA水平得到了大幅度提高!!

TA的精华主题

TA的得分主题

发表于 2015-7-13 22:08 | 显示全部楼层
白月清风 发表于 2012-11-10 19:58
Sub 插入图片()
Dim myfile As FileDialog
    Set myfile = Application.FileDialog(msoFileDialogFileP ...

帮忙看看我这个代码怎么用ActiveSheet.Shapes.AddPicture来写,谢谢

Private Sub CommandButton1_Click()
On Error Resume Next
Dim filefilter1, filennames As String
filefilter1 = ("所有图片文件 (*.jpg;*.bmp;*.png;*.gif),*.jpg;*.bmp;*.png;*.gif")
filennames = Application.GetOpenFilename(filefilter1, , "请选一个图片文件", , MultiSelect:=False)
With ActiveSheet.Pictures.Insert(filennames)

    .ShapeRange.LockAspectRatio = msoFalse

     .Left = ActiveCell.Left
    .Top = ActiveCell.Top

    .Width = Selection.Width

    .Height = Selection.Height
End With
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-5 16:54 , Processed in 0.043896 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表