• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAで特定の文字が含まれている画像ファイル)

VBAで特定の文字が含まれている画像ファイル

このQ&Aのポイント
  • VBAを使用して特定の文字が含まれている画像ファイルを処理する方法について学びます。
  • 下記のコードを使用して、画像を適切な位置に貼り付ける方法を説明します。
  • また、セルの内容に応じて画像を貼り付ける位置を制御する方法も紹介します。

質問者が選んだベストアンサー

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.1

こんな感じでしょうか。 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

yyrd0421
質問者

お礼

まさに望み通りのことができました。 ありがとうございました。

その他の回答 (1)

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.2

'//----------------------先ほど提示したコード  'この次へ追加すべき行   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

関連するQ&A