以下のコードを使用して、Excelシートに「.jpg」ファイルを追加しています。
'Add picture to Excel
xlApp.Cells(i, 20).Select
xlApp.ActiveSheet.Pictures.Insert(picPath).Select
'Calgulate new picture size
With xlApp.Selection.ShapeRange
.LockAspectRatio = msoTrue
.Width = 75
.Height = 100
End With
'Resize and make printable
With xlApp.Selection
.Placement = 1 'xlMoveAndSize
'.Placement = 2 'xlMove
'.Placement = 3 'xlFreeFloating
.PrintObject = True
End With
何が間違っているのかわかりませんが、正しいセルに挿入されないので、この画像をExcelの指定されたセルに入れるにはどうすればよいですか?
これを試して:
With xlApp.ActiveSheet.Pictures.Insert(PicPath)
With .ShapeRange
.LockAspectRatio = msoTrue
.Width = 75
.Height = 100
End With
.Left = xlApp.ActiveSheet.Cells(i, 20).Left
.Top = xlApp.ActiveSheet.Cells(i, 20).Top
.Placement = 1
.PrintObject = True
End With
Excelでは何も選択しないことをお勧めします。通常は必要ではなく、コードの速度が低下します。
単に画像を挿入してサイズ変更するだけの場合は、以下のコードを試してください。
特定の質問に対して、プロパティTopLeftCellは、左上隅が駐車されているセルに関連する範囲オブジェクトを返します。特定の場所に新しい画像を配置するには、「右側」の場所に画像を作成し、ダミーの上部と左側のプロパティ値をdouble変数に登録することをお勧めします。
名前を簡単に変更するには、変数に割り当てられたPicを挿入します。 Shapeオブジェクトには、Picture Objectと同じ名前が付けられます。
Sub Insert_Pic_From_File(PicPath as string, wsDestination as worksheet)
Dim Pic As Picture, Shp as Shape
Set Pic = wsDestination.Pictures.Insert(FilePath)
Pic.Name = "myPicture"
'Strongly recommend using a FileSystemObject.FileExists method to check if the path is good before executing the previous command
Set Shp = wsDestination.Shapes("myPicture")
With Shp
.Height = 100
.Width = 75
.LockAspectRatio = msoTrue 'Put this later so that changing height doesn't change width and vice-versa)
.Placement = 1
.Top = 100
.Left = 100
End with
End Sub
幸運を!
私はPCとMacで動作するシステムに取り組んでおり、PCとMacの両方に画像を挿入するために機能するコードを見つけるために戦っていました。これは私のために働いたので、うまくいけば他の誰かがそれを利用することができます!
注:strPictureFilePathおよびstrPictureFileName変数は、有効なPCおよびMacパスに設定する必要があります。
PCの場合:strPictureFilePath = "E:\ Dropbox \"およびstrPictureFileName = "TestImage.jpg"およびMacの場合:strPictureFilePath = "Macintosh HD:Dropbox:"およびstrPictureFileName = "TestImage.jpg"
次のようなコード:
On Error GoTo ErrorOccured
shtRecipeBrowser.Cells(intDestinationRecipeRowCount, 1).Select
ActiveSheet.Pictures.Insert(Trim(strPictureFilePath & strPictureFileName)).Select
Selection.ShapeRange.Left = shtRecipeBrowser.Cells(intDestinationRecipeRowCount, 1).Left
Selection.ShapeRange.Top = shtRecipeBrowser.Cells(intDestinationRecipeRowCount, 1).Top + 10
Selection.ShapeRange.LockAspectRatio = msoTrue
Selection.ShapeRange.Height = 130