如何在vba中测量形状裕度

如何在vba中测量形状裕度,vba,shape,powerpoint,margins,Vba,Shape,Powerpoint,Margins,在powerpoint中将形状导出为图像时,有时会生成空白。如图所示(此网页的白色字体无法显示,但如果下载并打开,您将看到)。我需要将这张图片放在一个准确的位置,但有了这个边距,我无法很好地控制它。我需要一种方法来衡量这些利润率,以计算它们的数量,或者如果我有办法消除它们,那就更好了 现在,我正在使用以下代码行测量它的大小: #If VBA7 Then Declare PtrSafe Function GetDC Lib "user32" (ByVal hwnd As Long) As

在powerpoint中将形状导出为图像时,有时会生成空白。如图所示(此网页的白色字体无法显示,但如果下载并打开,您将看到)。我需要将这张图片放在一个准确的位置,但有了这个边距,我无法很好地控制它。我需要一种方法来衡量这些利润率,以计算它们的数量,或者如果我有办法消除它们,那就更好了

现在,我正在使用以下代码行测量它的大小:

#If VBA7 Then
    Declare PtrSafe Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
    Declare PtrSafe Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
#Else
    Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, _
          ByVal hdc As Long) As Long
    Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, _
          ByVal nIndex As Long) As Long
#End If

 'here I store the height and width
 Hght = GetImageDimensions("c:\dink_template\dinkFile\sizeimage.jpg")(0)
 wdt = GetImageDimensions("c:\dink_template\dinkFile\sizeimage.jpg")(1)

Public Function GetImageDimensions(filePath As String) As Variant
'Function returns an array of (Height, Width) from a specific image file path
Dim ImgSize(0 To 1) As Long
'returning picture.width in OLE_YSIZE_HIMETRIC/OLE_XSIZE_HIMETRIC
' these are representing 0.01 mm
With LoadPicture(filePath)
    ImgSize(0) = .height / 2540 * (1440 / TwipsPerPixelY())
    ImgSize(1) = .width / 2540 * (1440 / TwipsPerPixelX())
End With
GetImageDimensions = ImgSize
End Function




Const HWND_DESKTOP As Long = 0
Const LOGPIXELSX As Long = 88
Const LOGPIXELSY As Long = 90

'--------------------------------------------------
Public Function TwipsPerPixelX() As Single
'--------------------------------------------------
'Returns the width of a pixel, in twips.
'--------------------------------------------------
  Dim lngDC As Long
  lngDC = GetDC(HWND_DESKTOP)
  TwipsPerPixelX = 1440& / GetDeviceCaps(lngDC, LOGPIXELSX)
  ReleaseDC HWND_DESKTOP, lngDC
End Function

'--------------------------------------------------
Public Function TwipsPerPixelY() As Single
'--------------------------------------------------
'Returns the height of a pixel, in twips.
'--------------------------------------------------
  Dim lngDC As Long
  lngDC = GetDC(HWND_DESKTOP)
  TwipsPerPixelY = 1440& / GetDeviceCaps(lngDC, LOGPIXELSY)
  ReleaseDC HWND_DESKTOP, lngDC
End Function
我将从这个值中得到的高度和宽度与通过shape.height和shape.width得到的高度和宽度进行比较,然后得出边距有多大。但我需要知道左边和右边,顶部和底部的边距


以何种方式导出形状?使用
导出方法
?您是否尝试过
shapes().TextFrame2.MarginBottom
和其他类似的边距属性?是的,我已经尝试过了。我将全部设置为0,但白色边距仍然出现