|
色々考えた結果できました!!
ありがとうございました(_ _)
Sub 画像Jpeg保存余白無し()
Dim AcSh As Worksheet, NwBk As Workbook
Dim Obj As Object, Crt As Chart, CrtNm As String
Dim Rgh As Double, Rgw As Double
Dim LT As String, BR As String, 図形右上セル As String
Dim 画像名 As String
Dim 遠近 As String
'現在のシートを省略して使う用にセット
Set AcSh = ActiveSheet
Set NwBk = Workbooks.Add
Set Crt = NwBk.Sheets(1).ChartObjects.Add(0, 0, Rgw, Rgh).Chart
CrtNm = Mid(Crt.Name, InStr(1, Crt.Name, " ") + 1)
For Each Obj In AcSh.DrawingObjects.ShapeRange
'グループ化については無視。
If Obj.Type = msoPicture Then
'左上
LT = Obj.TopLeftCell.Address
'右下
BR = Obj.BottomRightCell.Address
図形右上セル = AcSh.Range(LT, BR).Rows(1).Cells(AcSh.Range(LT, BR).Rows(1).Cells.Count).Address
If AcSh.Range(図形右上セル).Row <> 1 Then
画像名 = AcSh.Range(図形右上セル).Offset(-3, -4).Value
If 画像名 <> "" Then
画像名 = AcSh.Range(図形右上セル).Offset(-3, -4).Value
Else
画像名 = AcSh.Range(図形右上セル).Offset(-14, -4).Value
End If
遠近 = AcSh.Range(図形右上セル).Offset(-2, -7).Value
Else
画像名 = AcSh.Range(図形右上セル).Offset(, 1).Value
End If
Rgh = Obj.Height - 0.5
Rgw = Obj.Width - 0.5
NwBk.Sheets(1).ChartObjects(CrtNm).Height = Rgh
NwBk.Sheets(1).ChartObjects(CrtNm).Width = Rgw
Obj.CopyPicture Format:=xlBitmap
With Crt
.Paste
.ChartArea.Border.LineStyle = 0
NwBk.Sheets(1).ChartObjects(CrtNm).Chart.Shapes(1).IncrementLeft -4
NwBk.Sheets(1).ChartObjects(CrtNm).Chart.Shapes(1).IncrementTop -4
.Export CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & "R-" & 画像名 & "_" & 遠近 & ".jpg"
DoEvents
End With
NwBk.Sheets(1).ChartObjects(CrtNm).Chart.Shapes(1).Delete
End If
Next
NwBk.Sheets(1).ChartObjects(CrtNm).Delete
NwBk.Close (False)
Set AcSh = Nothing
Set NwBk = Nothing
Set Crt = Nothing
End Sub
|
|