kk_lee69 发表于 2017-8-3 10:15:20

回复 29# oceanwind

怪事我測試的結果 還是依樣到底是哪邊的環境有問題

oceanwind 发表于 2017-8-3 13:28:28

回复 30# kk_lee69
昨天下载你的图片显示像素是400,今天下载又显示是96了。如图为ps图像调整大小时的对话框。
你还是对不准,是不是shaps的属性RelativeHorizontalPosition 要多试一下
用法:With ActiveDocument.Shapes("split#=" & ii)
            .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
            .Left = pgwd - mywidth - temp_edge '靠右边
            .RelativeVerticalPosition = wdRelativeVerticalPositionPage
            .Top = temp_topwz
            
      End WithWdRelativeHorizontalPosition 。
枚举
指定图文框、形状或一组行的水平位置所相对的对象。
版本信息
已添加版本:

名称 值 说明
wdRelativeHorizontalPositionCharacter 3 相对于字符。
wdRelativeHorizontalPositionColumn 2 相对于列。
wdRelativeHorizontalPositionMargin 0 相对于边距。
wdRelativeHorizontalPositionPage 1 相对于页面。
wdRelativeHorizontalPositionInnerMarginArea 6 相对于内空白区。
wdRelativeHorizontalPositionLeftMarginArea 4 相对于左边距。
wdRelativeHorizontalPositionOuterMarginArea 7 相对于外空白区。
wdRelativeHorizontalPositionRightMarginArea 5 相对于右边距。
另外由于改成1.6宽,txt宽度要适当调宽一些,我又改微调了一下,我在公司的电脑2010也可行:Sub insertpic()
    '
    ' 筿?彻?ボ虫ノ
    '
   
    PLeft = Selection.Information(wdHorizontalPositionRelativeToPage)
    PTop = Selection.Information(wdVerticalPositionRelativeToPage)
    PLPOS = Selection.Information(wdHorizontalPositionRelativeToTextBoundary)
   
    Dim Sh1, Sh2 As Object, PS As Object
    Set PS = ThisDocument.PageSetup
   
    'MsgBox (PLeft & "" & PTop)
   
    Dim arr(0 To 1) As Variant
   
    Set myDocument = ActiveDocument
    With myDocument.Shapes
      
      With .AddPicture(FileName:="E:\SW\Studydoc\office\word\Au3_KK_lee69 problem\2\999_2.jpg", LinkToFile:=False, SaveWithDocument:=True, Left:=PS.LeftMargin, Top:=PS.TopMargin)
            .Name = "shp1"
            arr(0) = .Name
            
      End With
      
      
      
      Set Sh1 = ThisDocument.Shapes("shp1")
      
      Sh1.Select
      
      With ThisDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, PS.LeftMargin, PS.TopMargin, Sh1.Width * 2, Sh1.Height)
            .Name = "shp2"
            .Line.Visible = msoFalse
            .Fill.Transparency = 1
            With .TextFrame
                .VerticalAnchor = msoAnchorMiddle
                With .TextRange
                  .ParagraphFormat.Alignment = wdAlignParagraphCenter
                  .Font.Size = 7.5
                  '.Font.Name = "夹发砰"
                  .Font.ColorIndex = wdBlue
                  .Text = Format(Date, "yyyy.mm.dd")
                End With
            End With
      End With
      
         Set Sh2 = ThisDocument.Shapes("shp2")
         
      Dim target_left, target_top As Single
      
      
      With Sh1
            target_left = .Left
            target_top = .Top
      End With
      
      
      
      With Sh2
            
            .Left = target_left - (Sh1.Width / 2)
         
            .Top = target_top
      End With
      
      
      
      ' With .Range(Array("shp1", "shp2")).Group
      '.Fill.PresetTextured msoTextureBlueTissuePaper
      '.Rotation = 45
      ' .ZOrder msoSendToBack
      ' End With
      
      
    End With
   
End Sub

oceanwind 发表于 2017-8-3 13:32:00

本帖最后由 oceanwind 于 2017-8-3 13:35 编辑


这些公司电脑中运行行代码后截图。小蓝图我已在ps中去掉了白边。

kk_lee69 发表于 2017-8-3 13:49:59

回复 32# oceanwind


    我試看看另外請教 你貼的圖片 是哪套 圖形處理軟體   可以看到 釐米的 我想找來用看看

oceanwind 发表于 2017-8-3 13:57:28

回复 34# kk_lee69
photoshop cc 2015

kk_lee69 发表于 2017-8-3 14:02:58

回复 35# oceanwind


    果然是專業繪圖軟體呵呵了解 感謝

kk_lee69 发表于 2017-8-3 14:30:42

回复 32# oceanwind


    能夠請教一下嗎
SaveWithDocument:=True, Left:=PS.LeftMargin, Top:=PS.TopMargin)

PS.LeftMargin 代表甚麼位置 我看上面語法 沒有先把值 賦給 PS.LeftMargin 這個變數阿

oceanwind 发表于 2017-8-3 19:31:48

回复 37# kk_lee69
第一次遇到这个表达式。对vba也是不求甚解,刚好工作中也有遇到与你类似问题怎样去控制图片的位置。
应该是看了你的代码还是高手kevinch的后查了msdn.

Returns a PageSetup object that is associated with the specified document.

Syntax

expression . PageSetup

expression A variable that represents a Document object.

Example

This example sets the right margin of the active document to 72 points (1 inch).

ActiveDocument.PageSetup.RightMargin = InchesToPoints(1)
This example displays the left margin setting, in inches.

MsgBox PointsToInches(ActiveDocument.PageSetup.LeftMargin) _
&; " inches"

oceanwind 发表于 2017-8-3 19:35:28

不过因为后面又重设置了left与top,所以最终结果与ps.leftmargin没啥直接关系了。
页: 1 2 [3]
查看完整版本: WORD VBA 语法相关定位问题 求高手帮我看一下少了甚么步骤