
Excelのシートに以下のマクロを組みましたが、空白でダブルクリックして、写真選択。
写真をダブルクリックで貼付けまではいいのですが、画像にリンクが設定されてしまい、
元データを削除すると、貼り付けた画像まで消えてしまいます。
マクロは、詳しくないので、貼り付ければいいようにお願いいしたいです。
よろしくお願い致します。
<下記に構文を添付>
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
' ターゲットセルが指定したセル(A2, C2, A4, C4, A6, C6)のいずれでもない場合、CancelをTrueに設定します。
Cancel = True
' ターゲットセルが指定したセル(A2, C2, A4, C4, A6, C6)のいずれかであれば、処理を実行します。
If Not Intersect(Target, Union(Range("ar2:ar20"), Range("at2:at20"), Range("av2:av20"), Range("ax2:ax20"), Range("az2:az20"), Range("bb2:bb20"), Range("bd2:bd20"), Range("bf2:bf20"), Range("bh2:bh20"), Range("bj2:bj20"), Range("bl2:bl20"))) Is Nothing Then
' ファイル選択ダイアログを作成します。
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.Title = "Select an Image File" ' ダイアログのタイトルを設定します。
.Filters.Clear ' 既存のフィルターをクリアします。
.Filters.Add "Image Files", "*.GIF; *.JPG; *.JPEG; *.BMP; *.PNG; *.TIF", 1 ' 画像ファイルのフィルターを追加します。
' ダイアログで画像が選択されたら、その画像をダブルクリックされたセルに挿入します。
If .Show = -1 Then
Dim Picture As Picture
Set Picture = ActiveSheet.Pictures.Insert(.SelectedItems(1))
' 挿入した画像のサイズと位置をダブルクリックされたセルに合わせます。
With Picture
With .ShapeRange
.LockAspectRatio = msoFalse
.Width = Target.Width * 0.85
.Height = Target.Height * 0.9
'セルの中央(横方向/縦方向の中央)に配置
.Left = Target.Left + (Target.Width - .Width) / 2
.Top = Target.Top + (Target.Height - .Height) / 1.5
End With
Application.ScreenUpdating = True
Cancel = True
.Placement = xlMoveAndSize
End With
End If
End With
End If
変更箇所をお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
No1です。
御質問文に
>以下のマクロを組みましたが~~
とありましたので、(詳しい/詳しくないかは関係なく)組んだのであればわかるであろう回答をしました。
>本文の修正箇所をご教授お願いします。
No1に記した通り、「Pictures.Insert」メソッドを「Shapes.AddPicture」メソッドに置き換えれば、リンクのコントロールは可能になります。
とは言え、コードを作成する気はないらしいので・・・
ご提示のコード中のコメントと実際の処理が異なっている部分があちこちありますが、コードの方を正と解釈しました。
特に、
>'セルの中央(横方向/縦方向の中央)に配置
とありますが、コード通りに中央ではなくずらした位置にしてあります。
無駄や重複もあるので処理方法や記述は変えましたが、処理内容は「画像のリンク」以外は同じになるようにしたつもりです。
(画像の縦横比を変えてしまうのにも違和感を覚えますがそのままです)
Private Sub Worksheet_BeforeDoubleClick( _
ByVal T As Range, Cancel As Boolean)
Dim P As String
Cancel = True
If Intersect(T, Range("AR2:BL20")) Is Nothing Or T.Column Mod 2 = 1 _
Then Exit Sub
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Select an Image File"
.Filters.Clear
.Filters.add "Image Files", "*.GIF; *.JPG; *.JPEG; *.BMP; *.PNG; *.TIF", 1
If .Show = 0 Then Exit Sub
P = .SelectedItems(1)
End With
With ActiveSheet.Shapes.AddPicture(P, 0, -1, T.Left + T.Width * 0.075, _
T.Top + T.Height / 15, T.Width * 0.85, T.Height * 0.9)
.LockAspectRatio = msoFalse
.Placement = xlMoveAndSize
End With
End Sub
早速の対応ありがとうございます。
大変助かりました。
役所対応で写真提出(2000枚位)しなければいけなかったのたすかりました。
No.1
- 回答日時:
こんにちは
Pictures.Insertでも可能なのかも知れませんが仕様の説明が読み切れません。
第二引数に「object:Converter」とありますが、Converterにどのような指定をすればよいのかわかりませんでした。
https://learn.microsoft.com/ja-jp/dotnet/api/mic …
一方で、Shapes.AddPictureメソッドを利用すれば、第二引数にLinkToFileがあり、msoFalseを指定すればリンクをせずに画像貼り付けが可能になりますので、こちらを利用して貼り付けるようにすればよいでしょう。
https://learn.microsoft.com/ja-jp/office/vba/api …
早々の返答ありがとうございます。
本文の書いてる通り、マクロ超初心者のためやり方がわかりません。
本文の修正箇所をご教授お願いします。
*構文もネットよりコピペしております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
質問58753 このコードでうまく動作しません。どうしたら良いですか Private Sub Wor
Visual Basic(VBA)
-
エクセルの改行について
Visual Basic(VBA)
-
不要項目の行削除方法について
Visual Basic(VBA)
-
-
4
vbaマクロについて
Visual Basic(VBA)
-
5
以下のプログラムの実行結果はどうなると思いますか? その理由も教えてください。
Visual Basic(VBA)
-
6
VBAでFOR NEXT分を Application.OnTimeを使って
Visual Basic(VBA)
-
7
算術演算子「¥」の意味について
Visual Basic(VBA)
-
8
Excelマクロで使うVBAコードをスプレッドシートのGoogle Apps Scriptに変換
Visual Basic(VBA)
-
9
【マクロ】変数を使った、文字の種類の変更にて、エラーとなる。
Visual Basic(VBA)
-
10
VBA 入力箇所指定方法
Visual Basic(VBA)
-
11
エクセル タブの下のメニューを選択 実行するコード
Visual Basic(VBA)
-
12
【ExcelVBA】dictionaryの重複判断の基準(セル結合だと違う値として認識される)
Visual Basic(VBA)
-
13
VBAでセルの書式を変えずに文字列を置換する方法をご教示ください
Visual Basic(VBA)
-
14
エクセル数式に問題があります
Excel(エクセル)
-
15
修正依頼:【VBA】 結合セルに複数画像とファイル名一括挿入する方法
Visual Basic(VBA)
-
16
Excel マクロについて詳しい方、ご教示ください。 『行数が毎回変わる元データの、A列に「1」と入
Visual Basic(VBA)
-
17
VB.net 文字列から日付型へ変更したい
Visual Basic(VBA)
-
18
VBAでユーザーフォームを指定回数繰り返して入力を行う方法
Visual Basic(VBA)
-
19
エクスプローラーで見ることはできますか
Excel(エクセル)
-
20
エクセルのマクロについて教えてください。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA ユーザーフォーム ボタンク...
-
Vba 型が一致しません(エラー1...
-
【ExcelVBA】5万行以上のデー...
-
VBAでCOPYを繰り返すと、処理が...
-
Excel VBA 選択範囲の罫線色の...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
testファイル内にある複数のpng...
-
算術演算子「¥」の意味について
-
Excelのマクロについて教えてく...
-
【VBA】 結合セルに複数画像と...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードについて教...
-
ワードの図形にマクロを登録で...
-
改行文字「vbCrLf」とは
-
エクセルのVBAコードと数式につ...
-
【マクロ】変数を使った、文字...
-
Excelマクロで使うVBAコードを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロVBAについて、コードを教...
-
testファイル内にある複数のpng...
-
改行文字「vbCrLf」とは
-
エクセルVBA 検索結果を隣のシ...
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
【マクロ】切取りの場合、形式...
-
【ExcelVBA】5万行以上のデー...
-
ExcelVBAでパワポを操作したい
-
(EXCEL超初心者)EXCELの関数(ま...
-
エクセルの改行について
-
Excelマクロで使うVBAコードを...
-
ワードの図形にマクロを登録で...
-
【マクロ】変数を使った、文字...
-
VBAでFOR NEXT分を Application...
-
VBAの質問(Msgboxについて)です
-
エクセルのVBAコードについて教...
-
Excelマクロで使うVBAコードを...
-
Excelのマクロについて教えてく...
-
VBAの「To」という語句について
おすすめ情報