Excel VBA 質問スレッド №2138 (解決済)
写真画像を貼り付ける
投稿者 : KOJI 投稿日時 : 2025/07/25(Fri) 18:59:35 OS : Windows 10 EXCEL : Excel 2003
大変古いですが、
excel2003で「写真貼り付けのマクロ」を作りたいです。
ツールタブからマクロ実行ボタンを押し、
写真貼り付けはできました。
コマンドボタンにマクロを登録し、
コマンドボタンを押してからマクロを実行したいのですが、
コマンドボタン自体が画像として選択され、
写真画像と一緒にセルに貼り付けされてしまいます(笑)。
コマンドボタンを、画像として選択できないようにするVBA、
はありますか?回答をよろしくお願いいたします。
大変古いですが、
excel2003で「写真貼り付けのマクロ」を作りたいです。
ツールタブからマクロ実行ボタンを押し、
写真貼り付けはできました。
コマンドボタンにマクロを登録し、
コマンドボタンを押してからマクロを実行したいのですが、
コマンドボタン自体が画像として選択され、
写真画像と一緒にセルに貼り付けされてしまいます(笑)。
コマンドボタンを、画像として選択できないようにするVBA、
はありますか?回答をよろしくお願いいたします。
スポンサーリンク
[返信 1] Re : 写真画像を貼り付ける
投稿者 : higeru 投稿日時 : 2025/07/25(Fri) 20:39:21
まずはどういうコードを書いたのか、それを教えてくれないことには正確なことは書けませんが、ボタンの名前とかオートシェイプなのかフォームコントロールなのかとかで判断して除外するんでしょうね。
まずはどういうコードを書いたのか、それを教えてくれないことには正確なことは書けませんが、ボタンの名前とかオートシェイプなのかフォームコントロールなのかとかで判断して除外するんでしょうね。
[返信 2] Re : 写真画像を貼り付ける
投稿者 : KOJI 投稿日時 : 2025/07/25(Fri) 21:21:51
■[返信 1] higeruさん(2025-07-25 20:39:21)の記事
> まずはどういうコードを書いたのか、それを教えてくれないことには正確なことは書けませんが、
コードを貼り忘れました。大変失礼しました。
このコードは、ネットで公開されているサンプルコードを、
一部修正したものです。
■[返信 1] higeruさん(2025-07-25 20:39:21)の記事
> まずはどういうコードを書いたのか、それを教えてくれないことには正確なことは書けませんが、
コードを貼り忘れました。大変失礼しました。
このコードは、ネットで公開されているサンプルコードを、
一部修正したものです。
Sub 写真自動配置() Dim targetRange As Range Dim i As Variant Dim abc As Long abc = ActiveSheet.Shapes.Count ActiveSheet.Pictures.Select Selection.ShapeRange.LockAspectRatio = msoFalse Selection.Width = 234 Selection.Height = 170 For i = 1 To abc Set targetRange = Cells(i, 2) ActiveSheet.Shapes(i).Select Selection.ShapeRange.Left = targetRange.Left Selection.ShapeRange.Top = targetRange.Top Next i End Sub
[返信 3] Re : 写真画像を貼り付ける
投稿者 : ピロリ 投稿日時 : 2025/07/26(Sat) 00:22:03
その図形(Shape)の種類(Type)が、ボタンなのか、画像なのかを判別して、画像(Picture)だけを
処理すれば宜しいのでは。 <vba Shape.Type> で検索すると良いでしょう。
ちなみに、i は Long型で良いのでは。 abc が Long型ですし・・・
その図形(Shape)の種類(Type)が、ボタンなのか、画像なのかを判別して、画像(Picture)だけを
処理すれば宜しいのでは。 <vba Shape.Type> で検索すると良いでしょう。
ちなみに、i は Long型で良いのでは。 abc が Long型ですし・・・
[返信 4] Re : 写真画像を貼り付ける
投稿者 : KOJI 投稿日時 : 2025/07/26(Sat) 08:42:08
> その図形(Shape)の種類(Type)が、ボタンなのか、画像なのかを判別して、画像(Picture)だけを
> 処理すれば宜しいのでは。 <vba Shape.Type> で検索すると良いでしょう。
すぐに実行してみます。
> ちなみに、i は Long型で良いのでは。 abc が Long型ですし・・・
ありがとうございます。すぐに修正します。
> その図形(Shape)の種類(Type)が、ボタンなのか、画像なのかを判別して、画像(Picture)だけを
> 処理すれば宜しいのでは。 <vba Shape.Type> で検索すると良いでしょう。
すぐに実行してみます。
> ちなみに、i は Long型で良いのでは。 abc が Long型ですし・・・
ありがとうございます。すぐに修正します。
[返信 5] Re : 写真画像を貼り付ける
投稿者 : KOJI 投稿日時 : 2025/07/26(Sat) 11:02:09
■[返信 3] ピロリさん(2025-07-26 00:22:03)の記事
他の掲示板でも、全く同じ内容を質問していました。
回答者の方にサンプルコードを作っていただき、
「ボタンを押す・写真貼り付け」が無事に成功しました。
サンプルコードを貼らせていただきます。
こちらの回答者の皆様、お世話になりました。
本当にどうもありがとうございました。
■[返信 3] ピロリさん(2025-07-26 00:22:03)の記事
他の掲示板でも、全く同じ内容を質問していました。
回答者の方にサンプルコードを作っていただき、
「ボタンを押す・写真貼り付け」が無事に成功しました。
サンプルコードを貼らせていただきます。
こちらの回答者の皆様、お世話になりました。
本当にどうもありがとうございました。
Sub 写真自動配置() Dim targetRange As Range Dim i As Long Dim shp As Shape With ActiveSheet.Pictures .ShapeRange.LockAspectRatio = msoFalse .Width = 234 .Height = 170 End With i = 0 For Each shp In ActiveSheet.Shapes If shp.Type = msoPicture Then i = i + 1 Set targetRange = Cells(i, 2) With shp .Left = targetRange.Left .Top = targetRange.Top End With End If Next End Sub
[返信 6] Re : 写真画像を貼り付ける
投稿者 : ピロリ 投稿日時 : 2025/07/26(Sat) 11:47:54
解決済できて良かったですが 1件だけ。 もう見ていただけないかも ですが。
掲示いただいたサンプルコードだと、ActiveXコントロールを使用した場合に 幅:234,高さ:170になってしまうような気が・・・
今後も ActiveXコントロールは使用しないってことならば、問題はないでしょうけど。
個人的には With shp ~ End With の中で下の処理(サイズ変更)した方が良いのかなぁって思いました。
.LockAspectRatio = msoFalse
.Width = 234
.Height = 170
解決済できて良かったですが 1件だけ。 もう見ていただけないかも ですが。
掲示いただいたサンプルコードだと、ActiveXコントロールを使用した場合に 幅:234,高さ:170になってしまうような気が・・・
今後も ActiveXコントロールは使用しないってことならば、問題はないでしょうけど。
個人的には With shp ~ End With の中で下の処理(サイズ変更)した方が良いのかなぁって思いました。
.LockAspectRatio = msoFalse
.Width = 234
.Height = 170
[返信 7] Re : 写真画像を貼り付ける
投稿者 : KOJI 投稿日時 : 2025/07/26(Sat) 18:19:39
■[返信 6] ピロリさん(2025-07-26 11:47:54)の記事
ありがとうございました。たまたま見に来ました。
> 掲示いただいたサンプルコードだと、ActiveXコントロールを使用した場合に 幅:234,高さ:170になってしまうような気が・・・
コードを修正しましたが、全く同じ結果を得られました!
以下でよろしいでしょうか。
ActiveXコントロールについては、全・・・く理解しておりません^^;
■[返信 6] ピロリさん(2025-07-26 11:47:54)の記事
ありがとうございました。たまたま見に来ました。
> 掲示いただいたサンプルコードだと、ActiveXコントロールを使用した場合に 幅:234,高さ:170になってしまうような気が・・・
コードを修正しましたが、全く同じ結果を得られました!
以下でよろしいでしょうか。
ActiveXコントロールについては、全・・・く理解しておりません^^;
Sub 写真自動配置() Dim targetRange As Range Dim i As Long Dim shp As Shape i = 0 For Each shp In ActiveSheet.Shapes If shp.Type = msoPicture Then i = i + 1 Set targetRange = Cells(i, 2) With shp .LockAspectRatio = msoFalse 'コードの切り取り・追加 .Width = 234 'コードの切り取り・追加 .Height = 170 'コードの切り取り・追加 .Left = targetRange.Left .Top = targetRange.Top End With End If Next End Sub
[返信 8] Re : 写真画像を貼り付ける
投稿者 : ピロリ 投稿日時 : 2025/07/26(Sat) 19:40:26
■[返信 7] KOJIさん(2025-07-26 18:19:39)の記事
> 以下でよろしいでしょうか。
良いと思います。 修正前のコードで上手くいっていたということは、KOJIさんが使用していたのは、
ActiveXコントロールの「コマンドボタン」ではなく、フォームコントロールの「ボタン」とかでは?
「何で、コマンドボタンが Pictures なんだよ? Shape.Type は msoPicture じゃないのに!」って
思うかも(私も思ってます)ですが・・・
■[返信 7] KOJIさん(2025-07-26 18:19:39)の記事
> 以下でよろしいでしょうか。
良いと思います。 修正前のコードで上手くいっていたということは、KOJIさんが使用していたのは、
ActiveXコントロールの「コマンドボタン」ではなく、フォームコントロールの「ボタン」とかでは?
「何で、コマンドボタンが Pictures なんだよ? Shape.Type は msoPicture じゃないのに!」って
思うかも(私も思ってます)ですが・・・
[返信 9] Re : 写真画像を貼り付ける
投稿者 : KOJI 投稿日時 : 2025/07/26(Sat) 20:25:40
■[返信 8] ピロリさん(2025-07-26 19:40:26)の記事
> ActiveXコントロールの「コマンドボタン」ではなく、フォームコントロールの「ボタン」とかでは?
補足していただいた意味が、やっとわかりました!!
「ActiveXコントロール=コマンドボタン」なのですね!
確かに、コマンドボタンではなくフォームボタンです。
excel2003では「表示タブ、ツールバー、フォーム」と
選んだ四角のボタンです。
勉強不足から、最後の最後までお騒がせ致しました^^;。
御親切に、本当にありがとうございました。
■[返信 8] ピロリさん(2025-07-26 19:40:26)の記事
> ActiveXコントロールの「コマンドボタン」ではなく、フォームコントロールの「ボタン」とかでは?
補足していただいた意味が、やっとわかりました!!
「ActiveXコントロール=コマンドボタン」なのですね!
確かに、コマンドボタンではなくフォームボタンです。
excel2003では「表示タブ、ツールバー、フォーム」と
選んだ四角のボタンです。
勉強不足から、最後の最後までお騒がせ致しました^^;。
御親切に、本当にありがとうございました。
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2025-08-27 00:37:35 )