
(2021/01/27 同様のお尋ねをしましたが未解決。タイトルを変えての再度のお尋ねです)
エクセル→開発→Visual Basic→挿入→UserForm1→Image1と進み、
プロパティウインドウで、(”C:\Users\デフォルトOpening画像.jpg")を埋め込みました。
この「デフォルトOpening画像.jpg」を、(”C:\Users\変更希望画像.jpg")に、
書き換えるVBAコードを教えて下さい。
『UserForm1.Image1.Picture=LoadPicture(”C:\Users\変更希望画像.jpg")では、
プログラムRun中は、「変更希望画像.jpg」が表示されますが、終了後に確認すると、
UserForm1.Image1.Pictureは、「デフォルトOpening画像.jpg」のままです。』
No.6ベストアンサー
- 回答日時:
#4です
#4のコード、fujillin氏の#5のコード共に検証環境を作りテストしましたが問題なく期待通りになりました。
何が原因なんでしょう? 実施内容を記します。
#4のテスト環境
Windows10 64bit
office home & business Excel2013 15.0.5267.1000
新規ブック VBEで UserForm1 UserForm2 を挿入
UserForm1 上でオブジェクト
Image1
CommandButton1 及び CommandButton2 を作成
UserForm2 上で CommandButton1 作成
’--
UserForm1のImage1のプロパティをダイアログから設定(初期設定)
他は、デフォルト
作成コード
Private Sub CommandButton1_Click()
Unload Me
UserForm2.Show vbModeless
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
UserForm2
作成コード
Private Sub CommandButton1_Click()
Dim obj
Const imgPath = "C:\Users\xxx\Desktop\XX.jpg"
Set obj = ThisWorkbook.VBProject.vbcomponents("UserForm1")
obj.designer.Image1.Picture = LoadPicture(imgPath)
Unload Me
UserForm1.Show vbModeless '繰り返し呼ばれる時の対策
End Sub
トリガー Alt+F8からtestを実行
標準モジュール
Sub test()
UserForm1.Show
End Sub
Application.Visible などの設定も行ってみましたが、問題ありませんでした。
fujillin氏の内容は#5の手順で実施しました。
詳細は割愛させていただきます。が、UserForm2で画像を指定するなどしないのならば、UserForm2を作成実行する必要がなく良いと思います。
セキュリティセンター設定は添付図で。

No.7
- 回答日時:
No5です
こちらの環境では、UserFormを表示した状態から実行できています。
まず、VBAが動作しておらず、UserFormも表示していない状態で、直接test()を実行して、画像が変わることを確かめてみてください。
これでもエラーが出るようであれば、基本的に環境が異なるものと考えられます。
(こちらは、Excel 2019でテストしています。)
もしも、変えることができているなら・・・
Sub DispForm()
UserForm1.Show
End Sub
を、標準モジュールに追加し、こちらを直接実行してください。
(実行したら、VBEウィンドウは閉じておきます)
表示されている、Formのボタンをクリックしても画像は変わりませんか?
あるいは、エラーが出るでしょうか?
No5のコードは、このような状態を想定しています。
異なる状態でテストしている場合は、エラーが出る可能性があります。
(想像の内容ではありますが、説明はNo5を参照ください)
No.5
- 回答日時:
No2です。
「テストなさっている環境」(FormとButtonの関係)がよくわからないのと、実際になさりたいことがよくわかりませんけれど、「表示したForm上の画像」を変更したいのなら、No2にも書きましたように、前回回答による方法が妥当です。
簡単に調べてみましたが、一旦、Formを表示すると、(多分)メモリ上に展開されてそちらを参照して表示している状態になっているものと想像します。
この状態になると、編集モードであるdesignerにはアクセスできなくなります。
Unloadすれば解放されるかもとも思いましたが、一度展開されてしまうとダメなようですね。
一方で、質問者様はFormを表示した状態で、オリジナルを編集したいということでしょうか?
先にも書きましたように、表示中の画像を変えるのが目的なら、前出の方法が妥当と思います。
それでもなおオリジナルを編集したいのであるのなら、一旦、VBAの実行を停止して、無理矢理に編集状態にして実行させるしかないと思います。
例えば、以下の方法であれば、オリジナルを変更可能ですが、一時的(瞬間的ですが)にForm1の表示を消すことになります。
※ なお、下記の実行時には、VBEの画面を閉じておかないと、画面のチラつきの原因になりますのでご注意。
' UserForm1のコードモジュールに記述
Private Sub CommandButton1_Click()
UserForm1.Hide
Unload UserForm1
Application.OnTime Now, "test"
End Sub
' VBEの標準モジュールに記述
Sub test()
Dim obj
Const imgPath = "C:\Users\変更希望画像.jpg"
Set obj = ThisWorkbook.VBProject.vbcomponents("UserForm1")
obj.designer.Controls("Image1").Picture = LoadPicture(imgPath)
UserForm1.Show
End Sub
※ LoadPicture(imgPath) を別に処理しておけば、若干は早くなるかも知れませんが、画像が重たくない限りは大差ないように思います。
補足で、No.5で頂いたCodeの実行結果報告。
Sub test()のdesigner行でエラーがでてしまい、
叉困惑です。難しいです!!!
No.4
- 回答日時:
こんばんは、
出かけますので、即レスできませんが、
UserFormモジュール間なので
UserForm2.Show vbModeless
ではどうでしょう。。
あと
Dim obj
Const imgPath = "C:\Users\XX.jpg"
Set obj = ThisWorkbook.VBProject.vbcomponents("UserForm1")
obj.designer.Image1.Picture = LoadPicture(imgPath)
UserForm1.Show
End Sub
No.3
- 回答日時:
こんばんは、
私の名前がありましたので、横から失礼します。
エラー№でなるほどと合点がいくところがありました。
エラー91
designerなので実行中のUserFormから自身を操作できないかと
なので他のモジュールから実行する必要があると思います。
実行中は、ご質問にあるとおり。
ご質問のコードを見た感じ、#1様のコードを拝借すると
obj.designer.Image1.Picture = LoadPicture(imgPath)
となり、#1様の回答で実現できると言う事では無いでしょうか。。
No.2
- 回答日時:
No1です
いったい、どのような状態で実行しているのでしょうか?
ご提示の画像では、Auto Openで自動的にフォームを表示しているようにも見受けられますけれど・・・???
表示中に画像を変更したいのなら、前回ご質問への回答で十分と思いますけれど。
No1の回答は、通常の状態でVBE画面のフォームに設定されている画像を変更するものです。
ですので、そのような状態でしかテストはしていません。
あと、画像のパスは正しく設定されているのですか?
fujillinさん 再度のコメント、有難う御座いました。
"C:\Users\デフォルトOpening画像.jpg"
"C:\Users\変更希望画像.jpg" 、でPathは同一です。
次のCODE:
obj.designer.Controls("Image1").Picture = _
LoadPicture(imgPath)がどうしてもクリアーできませ。
私のレベルでは、Project、を操作するのはハードル高!
今まで通り、手動で、\変更希望画像.jpg に書き直します。
fujillinさん、Qchan1962さん、色々、有難う御座いました。
No.1
- 回答日時:
こんにちは
>UserForm1.Image1.Pictureは、「デフォルトOpening画像.jpg」のままです
理由はお分かりとは思いますが、ご提示の方法は表示時に画像を変えているだけなので、オリジナルのFormの画像はそのままだということです。
元の画像を変更なさりたければ、オリジナルのUserFormにアクセスする必要があります。
「UserForm1」の「Image1」に決め打ちで良いのなら・・・
Dim obj
Const imgPath = "C:\Users\変更希望画像.jpg"
Set obj = ThisWorkbook.VBProject.vbcomponents("UserForm1")
obj.designer.Controls("Image1").Picture = LoadPicture(imgPath)
※ VBAからのVBProjectへのアクセスは、デフォルト設定だと拒否されると思います。
事前に、「マクロのセキュリティ」でVBAからのアクセスを許可しておく必要があります。
※ 以前の回答(?)と同じ内容にならないためには、以前の質問を見る必要がありますが、質問履歴を公開しておいていただくか、あるいは、前質問へのリンクを質問文内に入れておいたいただかないとわかりませんね。
(前質問&回答を見ていませんので、同じ回答内容になっていたら失礼)
fujillinさん
参考Codeを貼って頂き、大変有難う御座いました。
>前質問へのリンクを質問文内に入れること
https://oshiete.goo.ne.jp/qa/12171713.html
頂いたCODEを厳密COPYし、試行錯誤した結果は、
添付画像の、RUN結果01とRUN結果02、の通りです。
(なお、マクロの設定変更は、実施、無防備状態です)
基礎素養なしで、エラー結果をフォローできません。
なにかアドバイスを頂きたく、お願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Excel(エクセル) Excel 毎日手作業で時間がかかって、泣きたいです、、、VBAのプロの方、助けてください。。。 3 2022/10/25 04:26
- その他(ソフトウェア) 画像のファイル形式、拡張子が変わると、性能が変わると思うのですが、ファイル名の「jpg、png、do 8 2022/08/10 13:37
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- その他(OS) Windowsで大量の画像サイズを半自動で変更する方法 6 2023/02/17 08:45
- フリーソフト 倍率自動調整して全画面表示できるフリーの画像ビューアー 1 2023/08/24 10:55
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel ユーザーフォームで表示させた画像をユーザーフォーム上で保存したい
Visual Basic(VBA)
-
【エクセル】シート内の表をUserFormに画像として表示させる方法
Excel(エクセル)
-
EXCEL VBA 複数のImageコントロールにクリップボードに保存されている画像を表示したい
Visual Basic(VBA)
-
-
4
エクセルで貼り付けたオブジェクトの画像をユーザーフォームのイメージコントロールで表示する方法
Excel(エクセル)
-
5
【エクセルのマクロ】クリップボードのbitmapをフォームに表示させたい
Visual Basic(VBA)
-
6
エクセル ユーザーフォームにオートシェープ(図形)を貼り付けるこは可能なのでしょうか?
Excel(エクセル)
-
7
VBA ユーザーフォーム Image1 貼り付け画像の保存?
Visual Basic(VBA)
-
8
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
9
エクセルのVBAでクリップボードにコピーした画像をpng(or jpg or bmp)保存したい
Visual Basic(VBA)
-
10
【VBA】Excelの特定範囲のセルを画像で保存したい
Visual Basic(VBA)
-
11
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
12
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
13
Excel VBA:フォーム←→セルのアクティブ切り替え
Excel(エクセル)
-
14
【VBA】ワークシート上に画像ファイルを表示する
その他(Microsoft Office)
-
15
任意で選択したセルをテキストボックスに表示
Excel(エクセル)
-
16
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Illustratorで文字と画像を流し...
-
FTP サーバーにある画像を表示...
-
VBSの「MsgBox」について
-
<ASP.NET+C#+MSDE> JPEG画像の...
-
php,mysqlにて画像パス保存/表...
-
PHPによる画像の生成による色の...
-
PHP MySQLに画像を直接保存
-
拡張子php画像をjpg画像等に変...
-
透過PNGが透過されない!!
-
画像の張りかたについて
-
C# Excelファイルへの画像挿入。
-
PHP echo バックスラッシュの使...
-
youtubeに音声のみのmp4ファイ...
-
FTPコマンドでディレクトリごと...
-
PHPのif文でその処理を途中で抜...
-
ob_end_clean と ob_clean の違...
-
PHPの拡張子を見せない方法
-
【file_exists】ファイルが存在...
-
Subversionのリポジトリの削除
-
session_start();について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの「MsgBox」について
-
iphoneで虫眼鏡の作り方
-
Illustratorで文字と画像を流し...
-
pictureboxに表示した画像のフ...
-
透過PNGが透過されない!!
-
GDI+を使ったビット数とDPIの扱い
-
VBAでJPGサイズ変更
-
PHPで吐き出した画像にリンクを...
-
ListViewコントロールでサムネ...
-
拡張子php画像をjpg画像等に変...
-
ビットマップ画像を読み込むプ...
-
C#とJavaで、MP3タグの画像を表...
-
SQLiteに画像を格納したい
-
手作業で埋め込んだ、UserForm1...
-
【PHP】サーバー上で TIFFをJPE...
-
BLOBデーターの画像の表示方法...
-
jar化すると画像が消える
-
「imagejpeg」(GD)で作成した...
-
PythonのTkinter詳しい方へ。画...
-
php,mysqlにて画像パス保存/表...
おすすめ情報
RUN結果01
RUN結果02
Qchan1962さん、fujillinさん、 01/31 18:15
ご指摘のエラーCode 91 の回避策として、
UserForm2を新設! ここに、
UserForm1の画像差し替えCodeを書き足してみました。
**結果は、前回と同じCodeで、エラー発生**
RUN結果は、追加添付の画像の通りです。
Qchan1962さん No.4のアドバイスCodeでの実施結果報告 2021/02/01
変更Code1 : UserForm2.Show vbModeless
変更Code2 : obj.designer.Image1.Picture = LoadPicture(imgPath)
**Run結果 変更Code2で、エラーが発生しました。
ujillinさん No.5のCodeでの実施結果報告
>実際になさりたいことがよくわかりません
*UserForm1の初期画像を希望が画像に変更。
VBE_Codeで行いたい。
>FormとButtonの関係が?
**UserForm1に、Button1とButton2を設けました。
Button1には、初期画像を希望画像に変更するCode。
(No.1で頂いたCodeを貼り付け、designer行でエラー)
Button2には、VBAを終了してExcelに戻るCodeです。
No,5で頂いた、UserForm1に書くCodeを記述しました。
VBEの標準モジュールにも、No.5で頂いたCode記述。
**Run結果は、
VBEの標準モジュールのSub test()の、designer行で、
エラー:<指定されたオブジェクトが見つかりません>
fujillinさん,Qchan1962さん、
お陰様で、最低限、designer行でのエラーが出ない
CODEが書けました(添付写真)。
長時間の辛抱強いサポート。本当に有難う御座いました。
(10年振りのVBA 苦戦しました (#^^#)。)
**どこ行のCodeが間違っていたのか、まだ見つけられません。
UserHorm2を使わないCODEや、実用写真SOFTへの組み込みはこらからです**