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没啥直接关系了。