ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

如何实现每一页中的所有图文框设定在指定的位置???

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-1-19 11:05 | 显示全部楼层 |阅读模式

小弟最近因工作需要需将合同扫描到电脑上,用扫描仪将合同扫描后输出到WORD后,需手工地将拖动每一页中的图文框的位置,但每一页的图文框相对于该页的位置来讲,每页中的图文框的相对位置都是一样的。通过录制宏是无法得到相关的代码的。

请大家帮忙编写一个程序,实现一次性统一将文档中每一页中的所有图文框设定在指定的位置对文档中的每一页中的图文框的位置均是相对于该面的水平位置相对于页面2厘米,垂直位置相对于页面2厘米

谢谢大家!!!

6T1XlXjs.rar (63.57 KB, 下载次数: 22)


[此贴子已经被作者于2007-1-19 11:12:25编辑过]

9pdhlg4e.rar

63.57 KB, 下载次数: 14

如何实现每一页中的所有图文框设定在指定的位置???

TA的精华主题

TA的得分主题

发表于 2007-1-19 12:49 | 显示全部楼层

请foshan兄在此基础上修改:

Sub Example()
    Dim i As Frame
    For Each i In Me.Frames
        i.RelativeHorizontalPosition = wdRelativeHorizontalPositionMargin
        i.HorizontalPosition = Word.CentimetersToPoints(2)
        i.RelativeVerticalPosition = wdRelativeVerticalPositionMargin
        i.VerticalPosition = Word.CentimetersToPoints(2)
    Next
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-1-19 14:18 | 显示全部楼层

谢谢守柔斑竹!

还有问题请教:如何用代码设置图片的大小缩放比例???以及将文档中所有的图片的大小比例一次性设置为100%,并且将设置
  
图片的版式中的环绕方式为“紧密型”????

谢谢大家帮忙!

   zFu6w3M0.rar (33.1 KB, 下载次数: 23)


[此贴子已经被作者于2007-1-19 14:28:37编辑过]

TA的精华主题

TA的得分主题

发表于 2007-1-19 16:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

佛山兄,时间关系,我无法更多时间测试,你看一下:

Sub Example()
    Dim oShape As InlineShape, aShape As Shape
    For Each oShape In Me.InlineShapes
        With oShape
            If .Type = wdInlineShapePicture Then
                Set aShape = .ConvertToShape
                With aShape
                    .WrapFormat.Type = 1
                    .ScaleHeight 1, True, msoScaleFromMiddle
                    .ScaleWidth 1, True, msoScaleFromMiddle
                End With
            End If
        End With
    Next
End Sub

附件中图片2出错,我一时也没整明白。

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-1-19 16:52 | 显示全部楼层

Sub 设置A4页面()
'

    Selection.WholeStory
    With ActiveDocument.Styles(wdStyleNormal).Font
        If .NameFarEast = .NameAscii Then
            .NameAscii = ""
        End If
        .NameFarEast = ""
    End With
    With ActiveDocument.PageSetup
        .PageWidth = CentimetersToPoints(21)
        .PageHeight = CentimetersToPoints(29.7)
    End With
    Dim i As Frame
    For Each i In Me.Frames
        i.RelativeHorizontalPosition = wdRelativeHorizontalPositionMargin
        i.HorizontalPosition = Word.CentimetersToPoints(2)
        i.RelativeVerticalPosition = wdRelativeVerticalPositionMargin
        i.VerticalPosition = Word.CentimetersToPoints(2)
    Next
    Dim a As InlineShape
    For Each a In ActiveDocument.InlineShapes   '(在其中循环)
        a.ScaleHeight = 37
        a.ScaleWidth = 37
        'a.WrapFormat.Type = wdWrapThrough '紧密型
    Next

    Dim b As Shape
    For Each b In ActiveDocument.Shapes   '(在其中循环)
        b.ScaleHeight 1, True
        b.ScaleWidth 1, True

        'a.Height = 100
        '    a.Width = 100
        'a.WrapFormat.Type = wdWrapThrough '紧密型
         MsgBox "InlineShape = 2"
    Next
    Set doc = ActiveDocument
    MsgBox "InlineShape = " & doc.InlineShapes.Count & _
           vbCr & "Shapes = " & doc.Shapes.Count

    '    ActiveDocument.Shapes.SelectAll


End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-1-19 16:59 | 显示全部楼层
发现一个奇怪的问题,我在第五楼的代码,如果把第二个图片先手动设置环绕版式为“紧密型”,然后再执行我在第五楼的代码,就可正常将第二个图片还原为原来的大小。[em06][em06][em06][em06][em06][em06][em06]

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-1-27 16:36 | 显示全部楼层

经 守柔版主的多番指教,完整的代码如下:

Sub 设置A4页面()
'
    Dim myShape As Variant
    Application.ScreenUpdating = False    With ActiveDocument.PageSetup
        .PageWidth = CentimetersToPoints(21)
        .PageHeight = CentimetersToPoints(29.7)
    End With
    Dim i As Frame

    With ActiveDocument
        For Each myShape In .Shapes
            With myShape
                .ScaleHeight 1, True
                .ScaleWidth 1, True
                .Left = wdShapeCenter
            End With
        Next
        For Each myShape In .InlineShapes
            myShape.Select
            Set myShape = .InlineShapes(1).ConvertToShape
            With myShape
                .ScaleHeight 1, True, msoScaleFromMiddle
                .ScaleWidth 1, True, msoScaleFromMiddle
                .Left = wdShapeCenter
            End With
        Next
    End With
   
        For Each i In Me.Frames
        i.RelativeHorizontalPosition = wdRelativeHorizontalPositionMargin
        i.HorizontalPosition = Word.CentimetersToPoints(2)
        i.RelativeVerticalPosition = wdRelativeVerticalPositionMargin
'        i.VerticalPosition = Word.CentimetersToPoints(2)
    Next

    Application.ScreenUpdating = True

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 11:51 , Processed in 0.043820 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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