- ベストアンサー
エクセルマクロで画像を貼り付け、表を作成する方法とは?
- エクセルマクロを使用して、画像をセルに合わせて貼り付け、表を作成する方法についての質問です。画像の保存先を移動させると画像が表示されなくなり、分類でフィルターをかけると異なる画像が表示されてしまう問題に困っています。
- 現在、エクセルマクロを使用して画像をセルに合わせて貼り付け、表を作成しています。しかし、画像の保存先を移動させると画像が表示されなくなってしまい、分類でフィルターをかけると異なる画像が表示されてしまうという問題が発生しています。
- エクセルマクロを使用して、画像をセルに合わせて貼り付け、表を作成する方法についてのご意見を募集しています。画像の保存先を移動させると画像が表示されなくなったり、分類でフィルターをかけると異なる画像が表示されてしまうといった問題に直面していますので、解決策を教えていただけると助かります。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
図をリンク オブジェクトではなく図として挿入するには、Pictures.Insert メソッドではなく、Shapes.Add メソッドを使用してください。 とのことです。 こちらを参考にしてください。 https://support.microsoft.com/ja-jp/kb/2396509
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
質問の趣旨がどこかよくわからない。コードだけコピペして判るものか? 小生が、見当違いならスルーしてください。 >A.だと画像の保存先を移動させると 挿入する写真の保存先を移動する(他人や自分か?)というばいい場合のことか? 移動したら、自動でプログラムの必要な部分が書き変わったり、その他の仕組みで今までと変わらず表示する方法はないだろう。そういうしくみが普通では、システムに備わってないと思う。 変更の履歴でもたどれるようになっていないとね。 WEBの記事の在りかでも、プログラムのあり場所でも同じではないか。 もしあるのならその回答で、ぜひ勉強したいくらい。 >B。分類でフィルターをかけるとバラバラの違う画像が表示 の意味はもう少しなんのことか説明が要るだろう。 ーー 質問で、コードをコピペしているが、こちらでやってみても、質問の疑問点Aとは直接関係がないのではないか。 写真は複数個(複数セルに)持ってくるのではないのか?1つずつ実行するのは普通しないでしょう。 質問を小生が理解するためやってみて、改良せざるを得なかった。 しかし質問点Aを解決するものでは全くない。 やってみると (1)あるピクチャ・ホルダに、セルに表示する写真が複数枚あるとする。 (2)セルの幅と行高を適当に実行前にしておく (3)実行して、ファイル選択の画面でSHIFTキーを押しながら複数の写真ファイルをクリックして選択する。 Sub test01() 'Sub PictFit() Dim PicFile As Variant Dim Pic As Picture ActiveSheet.DrawingObjects.Delete Worksheets("Sheet1").Cells(1, 1).Select PicFile = Application.GetOpenFilename(MultiSelect:=True) '画像のパスを取得 ' If PicFile = "False" Then Exit Sub 'MsgBox Pictile If IsArray(PicFile) Then For Each f In PicFile MsgBox f Set Pic = ActiveSheet.Pictures.Insert(f) '画像を貼り付ける With Pic .Height = ActiveCell.Height '画像の高さ .Top = ActiveCell.Top '画像の上位置を変更 .Left = ActiveCell.Left '画像の横位置を変更 .Width = ActiveCell.Width End With ActiveCell.Offset(1, 0).Select Next Else MsgBox PicFile End If End Sub
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
追記。 =SUBTOTAL(102,範囲) の範囲は、フィルタがC列に対してかけられているなら =SUBTOTAL(102,C:C) のようにして下さい。 また、SUBTOTALの結果をシート上に表示したくないなら、どこかの空白セルに入力して、文字を白に設定して下さい。
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
>このコードだと画像の保存先を移動させると画像が表示されなくなり ActiveSheet.Pictures.Insertメソッドは「画像のリンクを挿入するだけ」であり、画像そのものは挿入しないので「元画像を移動させてはいけない」です。 従って「Shapeを新規作成して、Shapeに画像を流し込む」など、他の方法を使用せねばなりません。 >分類でフィルターをかけるとバラバラの違う画像が表示されてしまったりして フィルタでセルが非表示になった場合、追従して、そのセルに貼られたPictureを非表示にするには、以下のようにして下さい。 1.シートの何処かのセルに、ワークシート関数で「=SUBTOTAL(102,フィルタ範囲)」と言う式を入れます。このワークシート関数があると「フィルタを実行した時」に「該当シートのCalculateイベント」が呼ばれるようになります。 2.シートのイベントプロシージャに、以下のイベントを挿入します。 Private Sub Worksheet_Calculate() Dim Pic As Picture For Each Pic In ActiveSheet.Pictures Pic.Visible = Not ActiveSheet.Cells(Pic.TopLeftCell.Row, Pic.TopLeftCell.Column).EntireRow.Hidden Next End Sub シート状で「フィルタ」を変更すると、このイベントプロシージャが呼ばれ「Pictuteが貼りついているセルがフィルタで非表示状態になってたら該当Pictuteを非表示状態にする、セルがフィルタで表示状態になってたら該当Pictureを表示状態にする」という処理が行なわれます。
- kkkkkm
- ベストアンサー率66% (1719/2589)
No1です こちらの最後の方法でも https://www.moug.net/tech/exvba/0120020.html