『トリミング(切り出し)part2』(joy)
改めて、質問し直します。
コード中の下記コードエラーが出ます。
With ActiveSheet.Pictures.Insert(file.Name)
実行エラー:1004 「pictures クラスの Insert プロパティを取得できません。」
ローカルウィンドウでチェックすると
file.Name の値が正確に 「C:\Users\TAC_\test\2test.jpg」と表示されていました。
コードの修正をしたいのですが、なぜエラーが出て修正はどうすべきですか ?
Sub TrimAndSaveImages()
Dim folderPath As String Dim NewWidth As Long Dim NewHeight As Long Dim fso As Object Dim folder As Object Dim file As Object Dim img As Object Dim NewFilePath As String Dim LeftOffset As Long Dim flag As Long
' フォルダパス folderPath = "C:\Users\TAC_\test\"
' フォルダ内のファイルを取得 Set fso = CreateObject("Scripting.FileSystemObject") Set folder = fso.GetFolder(folderPath)
' 各ファイルに対してトリミングを実行 For Each file In folder.Files If LCase(Right(file.Name, 4)) = ".jpg" Or LCase(Right(file.Name, 5)) = ".jpeg" Then
'ファイルの先頭にどんな処理をすべきかのFLAGマーク有り flag = Left(file.Name, 1)
Set img = CreateObject("WIA.ImageFile") img.LoadFile file.Path
Select Case flag Case 1 ' ----- 省略 ----- Case 2
' トリミング後のサイズを指定 (ピクセル単位) NewWidth = (img.height + img.Width) / 2 NewHeight = (img.height + img.Width) / 2
' 新しいファイル名を指定 NewFilePath = folderPath & fso.GetBaseName(file.Name) & "(new)." & fso.GetExtensionName(file.Name)
' 画像をトリミング With ActiveSheet.Pictures.Insert(file.Name) .ShapeRange.LockAspectRatio = msoFalse .ShapeRange.Width = NewWidth .ShapeRange.height = NewHeight End With
' 画像を新しいファイル名で保存 ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Copy With New Workbook .Sheets(1).Paste .SaveAs NewFilePath .Close SaveChanges:=False End With
End Select End If Next file
MsgBox "トリミングが完了しました。" End Sub
< 使用 Excel:Excel2021、使用 OS:Windows11 >
>ローカルウィンドウでチェックすると >file.Name の値が正確に 「C:\Users\TAC_\test\2test.jpg」と表示されていました。 いいえ、Nameプロパティはファイル名のみです。 Pictures.Insertはフルパスで指定する必要があるので、File.Pathを使う必要があります。 (´・ω・`) 2024/04/09(火) 13:24:05
>いいえ、Nameプロパティはファイル名のみです。 >Pictures.Insertはフルパスで指定する必要があるので、File.Pathを使う必要があります。
すいません。 見てるつもりで.Nameと.pathを間違えて認識していました。 助言でエラーは無くなったのですが毎回画像をシートに書き出すのは違うかなと思って case1のコードをトレースする形式に変更しました。
エラーなく処理されているようです。 お騒がせしました。
Case 2 ' 新しい画像サイズ NewWidth = (img.height + img.Width) / 2 NewHeight = (img.height + img.Width) / 2 NewFilePath = folderPath & fso.GetBaseName(file.Name) & "(new)." & fso.GetExtensionName(file.Name) ' 画像サイズを指定して新規に画像を作成 With CreateObject("WIA.ImageProcess") .Filters.Add .FilterInfos("Scale").FilterID .Filters(1).Properties("MaximumWidth") = NewWidth .Filters(1).Properties("MaximumHeight") = NewHeight .Filters(1).Properties("PreserveAspectRatio") = False 'false : アスペクト比は維持しない '画像保存 .Apply(img).SaveFile NewFilePath End With End Select (joy) 2024/04/09(火) 15:15:07
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.