- ベストアンサー
VBAで特定の文字が含まれている画像ファイル
- VBAを使用して特定の文字が含まれている画像ファイルを処理する方法について学びます。
- 下記のコードを使用して、画像を適切な位置に貼り付ける方法を説明します。
- また、セルの内容に応じて画像を貼り付ける位置を制御する方法も紹介します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでしょうか。 Option Explicit Declare Function SetCurrentDirectory Lib "kernel32" Alias _ "SetCurrentDirectoryA" (ByVal CurrentDir As String) As Long Sub ShapeLoadtest1() Dim Fname As Variant, fe As Variant Dim Fn As Variant, Pic As Shape Dim pno As Long Dim myFileName As String Dim strFileName As String Dim PutCell As Range SetCurrentDirectory "D:\Test\" Fname = Application.GetOpenFilename _ (",*", MultiSelect:=True) If Not IsArray(Fname) Then MsgBox "取り消されました。", vbInformation Exit Sub End If Application.ScreenUpdating = False pno = 0 For Each Fn In Fname 'この次へ追加すべき行 With ThisWorkbook.Sheets(1) If InStr(Fn, "あいう") > 0 Then Set PutCell = ThisWorkbook.Sheets(1).Cells(2, 10) ElseIf InStr(Fn, "123") > 0 Then Set PutCell = ThisWorkbook.Sheets(1).Cells(2, 16) End If End With PutCell.Offset(-1, 0) = Mid(Fn, InStrRev(Fn, "\") + 1, Len(Fn) - InStrRev(Fn, "\")) Set Pic = ActiveSheet.Shapes.AddPicture(Filename:=Fn, _ LinkToFile:=False, _ SaveWithDocument:=True, _ Left:=0, Top:=0, Width:=0, Height:=0) With Pic .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue .Top = PutCell.Top ' 位置:アクティブセルの上側に重ねる .Left = PutCell.Left ' 位置:アクティブセルの左側に重ねる .Placement = xlMove ' 移動するがサイズ変更しない End With Set Pic = Nothing pno = pno + 1 Next Application.ScreenUpdating = True Range("A1").Select MsgBox pno & "枚の画像を挿入しました", vbInformation End Sub
その他の回答 (1)
- HohoPapa
- ベストアンサー率65% (455/693)
'//----------------------先ほど提示したコード 'この次へ追加すべき行 With ThisWorkbook.Sheets(1) If InStr(Fn, "あいう") > 0 Then Set PutCell = ThisWorkbook.Sheets(1).Cells(2, 10) ElseIf InStr(Fn, "123") > 0 Then Set PutCell = ThisWorkbook.Sheets(1).Cells(2, 16) End If End With '//----------------------↑を以下、ちょっと修正します。 m(_ _)m 'この次へ追加すべき行 With ThisWorkbook.Sheets(1) If InStr(Fn, "あいう") > 0 Then Set PutCell = .Cells(2, 10) ElseIf InStr(Fn, "123") > 0 Then Set PutCell = .Cells(2, 18) Else Set PutCell = .Cells(2, 4) End If End With
お礼
まさに望み通りのことができました。 ありがとうございました。