
添付CODE1で、ユーザーフォームのAutoOpenのImage1(空白)に、open.jpgを貼り付けました。
この段階では、PC画面に、Image1のopen.jpgは写っています。
CODE2で動作終了後、visual basicに戻り、Image1を確認しても空白です。
CODE2をどう直せば保存されるのか、アドバイスを頂ければありがたいです(10年ぶりのVBAです)。
'/// CODE1 標準モジュールに記述
Sub Auto_Open()
AutoOpen.Image1.Picture = LoadPicture("C:\Users\open.jpg")
AutoOpen.Show
End Sub
'/// CODE2 ユーザーフォーム AutoOpen に記述
Sub CommandButton1_Click()
ActiveWorkbook.Save
Unload Me
Application.Quit
End '/// エクスプローラーに戻る
End Sub

No.4ベストアンサー
- 回答日時:
#3です。
コードについては、分かりませんが、おそらくプロパティで設定する初期.jpgの情報は、Excelのルートファイル?レジストリなどに保存されつのでは無いかと、、
LoadPictureは、読み込んでいるだけなので、UnLoadするとデフォルトになるのかな、、などと想像します。レジストリなのかルートデータなのか想像の範疇ですが、直接書き込めば(書き替えれば)、実現できると考えます。
プロパティウインドウでフルパスを直接入力出来ないので想像しました。
(直接入力できるものは、書き換えできるような気がします)
今まで考えた事もない事柄なので、知識はありませんが、辿って調べれば情報があるかも知れません。。
Qchan1962さん
重ねてのコメント、有難う御座いました。
頂いたコメントも参考に、C:\Usersに、使いたい写真を、open.jpgの名で、保存して置けば、望みの年のオープニング画像の組み込みはできました。
このアルバムSOFTは、参考図書をベースに、加えて、
沢山のGooの皆様のアドバイスも得て、画像の更新日時ではなく、
デジカメの画像の撮影日を、直接読み取るプログラムも加工して組み込み、
数年がかりで、完成したものです。誕生日以来のプリントしたアルバムは、
全てスキャナーでPCに取り込みBackUpし、プリントは全て焼却しました。
10年振りに、一行のCodeを加えようとして、10日程、悪戦苦闘しましたが、
一行のCode とCoding のタイミング・書く場所で、
本質は、いまだ未解明です。
こんな、へんてこりんな愚問?にこたえる、一行のCODEを期待して、
もう少しアドバイスの書き込みをお待ちしてみます。
(なぜ、手で書き込んだ、初期.jpgが、幽霊の様に現れるのか??)
No.3
- 回答日時:
こんばんは、
#2お礼を拝見し、なるほどと思うところがありました。
すでに出来ているプログラムに汎用性を持たせたいと言う事と解釈いたしました。 すでにフローが出来ていると思いますしどのようなロジックが組まれているか分かりませんが、画像の抽出部分を考えた場合、下記のようなロジックはいかがでしょう。
オープニング画像の名前を 例えば、2020_open.jpg、、2021_open.jpg,,
2022_open.jpg などとして、XXXX_open.jpgのxxxx部分を
シートセル(インプットボックスなどでもOK)から取得する。
アルバム画像ファイルもフォルダ名別にまとめ同階層に保存、フォルダ名を例えば 2020_Picture として場合。
仮に シートインデックス1のA1セルに年数を入力して保存ののち
Sub Auto_Open() (開く)と sheet(1).Range("A1").Value値を参照してLoadPictureが実行される形。そうすれば、VBAを編集しなくともA1セルの値を変えるだけで(画像の振り分け保存は必要)該当年数のPictureが表示されるのでは、と思います。
Sub Auto_Open()
AutoOpen.Show
End Sub
AutoOpen UserFormモジュール
Private Sub UserForm_Initialize()
AutoOpen.Image1.Picture = _
LoadPicture("C:\Users\" & Sheets(1).Range("A1") & "_open.jpg")
End Sub
アルバムの画像をどのように取得しているか分かりませんが、
フォルダパスは、こんな感じ、、
path = "C:\Users\" _
& Sheets(1).Range("A1") & "_Picture"
ちょっとしつこかったですね。参考になれば幸いです。
Qchan1962さん
三度目の、ご丁寧なコメント、有難う御座いました。
UserForm_Initialize() やセルからの年度の読み込みは、
改めてトライしてみて、よく理解できました。
***まだ残っている疑問点は、
① 自分で作成したユーザーオーム:AutoOpen.Image1に、
手動で、デフォルト画像:初期.jpgを埋め込みました。
② VBAの、Auto_Open() や、UserForm_Initialize() で、
AutoOpen.Image1に、"C:\Users\open.jpg"を、Loadしました。
run結果:アルバムのオープニング画面は、希望通り、open.jpg表示で〇。
終了ボタンのクリック:
Unload Me Application.Quit End '/// エクスプローラーに戻り〇。
混乱している疑問点:
終了ボタン: いたずらで書き直し
**ボタンクリックの段階では、"C:\Users"にある画像は、open.jpgのみ!
Unload Me
AutoOpen.Show '///Application.Quit End を書き直し
結果:初期.jpgが表示される ???????
AutoOpen.Image1を、初期.jpgから、上書きして、open.jpgに変更したが、
その結果がSaveされていない。どこかのタイミングで、この変更結果を、
SaveするCodingが必要な様ですが、このCode が分からなくて混乱中です。
No.2
- 回答日時:
>open.jpgが残る
ごめんなさい、初期.jpgと入れ替わると言う意味でしょうか、、
UserFormにLoadPictureでイメージを設定する場合、
デフォルト(エディタ上)設定は、設定できないようです。
通常?かは、分かりませんが、
標準モジュール
Sub Auto_Open()
AutoOpen.Show
End Sub
UserFormモジュール
Private Sub UserForm_Initialize()
Image1.Picture = LoadPicture("C:\Users\open.jpg")
End Sub
UserFormが表示される度、 Image1.Pictureが設定される
LoadPictureで更新する場合、
Image1.Picture = LoadPicture("C:\Users\hoge.jpg")
Me.Repaint '念のため
シートモジュールなどからの
Sub CommandButton1_Click() でフォームを閉じる場合
エラー対策として、loadされているかのチェックが必要になります。
ちょっと、私にはハードルが高いようですね。;;
Qchan1962さん 再度のコメント 有難う御座いました。
作業の目的は、年別のアルバム閲覧プログラムの作成です。
2020年、2021年。年ごとにオープニング画像を変えています。
2022年用は、手作業でオープニング画像を差し替えるのではなく、
C:\Users\open.jpgを2022年用に変更するだけで、
2022年用のプログラムが完成し、少し手作業が軽減されるかなが、
目的です。
No.1
- 回答日時:
こんばんは、
ご質問の意味が良く理解していないかもですが、
実行終了後、VBEのフォーム上(イメージ)で画像を確認したいと言う事でしょうか?
VBA実行によるイメージプロパティ設定の場合、
LoadPictureなので、Unload Meで破棄されるのだと思います。
エディタでプロパティのPicture をフルパス(ダイアログから)を指定すればVBE編集時でも画像が表示されると思います。
CODE2側と言うよりCODE1側かも知れません。
詳しくは無いのですが、仕様では無いかと思います。
LoadPicture以外の設定方法があるかも知れませんし、記憶の範疇で確度の高い情報とは言えませんが、、参考まで。
Qchan1962さん
設問が上手く表現でき無かった問に、コメントを頂き、有難う御座いました。
手動で、開発→Visual Basic→Pictureで、初期.jpgを、AutoOpen.Image1に埋め込みました。
CODE2は、Private Sub CommandButton1_Click() End End Sub に書き換えました。
これでRunすると、PC画面に、open.jpgが表示されます。
終了後に確認すると、AutoOpen.Image1には、初期.jpgが埋め込まれています。
終了後に、AutoOpen.Image1に、open.jpgが残るCodingが分からなくて悩んでいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) フレームワーク「4.8.1」で、[Sub Main]が動かない。助けて下さい 3 2022/11/14 15:40
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel ユーザーフォームで表示させた画像をユーザーフォーム上で保存したい
Visual Basic(VBA)
-
【エクセル】シート内の表をUserFormに画像として表示させる方法
Excel(エクセル)
-
エクセルで貼り付けたオブジェクトの画像をユーザーフォームのイメージコントロールで表示する方法
Excel(エクセル)
-
-
4
EXCEL VBA 複数のImageコントロールにクリップボードに保存されている画像を表示したい
Visual Basic(VBA)
-
5
エクセル ユーザーフォームにオートシェープ(図形)を貼り付けるこは可能なのでしょうか?
Excel(エクセル)
-
6
コマンドボタンやイメージにマウスをのせるとボタン名を表示したい
Excel(エクセル)
-
7
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
8
エクセルVBAでマルチページの切り替え方法の件で
Excel(エクセル)
-
9
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
10
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
11
Excel VBAでセル内の画像を選択したい
Excel(エクセル)
-
12
手作業で埋め込んだ、UserForm1.Image1の画像を、VBAコードで書き換えたい
Visual Basic(VBA)
-
13
Vba テキストボックス文字を右端から配置していく方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでシートモジュール...
-
VBのフォームモジュールと標準...
-
VBAのコードを書くところ(初心...
-
Excel VBAで、ユーザーフォーム...
-
vba userFormのSubを標準モジュ...
-
VBAで別モジュールへの変数の受...
-
Apache2 静的・動的モジュール...
-
共通な定数の宣言について
-
標準モジュールとイベントの質問
-
Excel VBA 『Call』で呼び出す...
-
シャープ製品JH-WB1821 と BCG...
-
モジュールとクラスの違いって...
-
BASP21 のようなコンポーネント
-
Excel VBA 定義されたプロージ...
-
Apache再起動でエラー。mysql.h...
-
perlで可逆な暗号化
-
シートモジュールで使う変数を...
-
VBでグローバル変数を宣言するには
-
VBAで「メモリが不足しています」
-
違うモジュールでも同じ変数を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで別モジュールへの変数の受...
-
ユーザー定義関数に#NAME?が返...
-
エクセルVBAでシートモジュール...
-
Excel VBAでリンク切れをチェッ...
-
Excel VBAで、ユーザーフォーム...
-
Excel VBA 定義されたプロージ...
-
VBでグローバル変数を宣言するには
-
vba userFormのSubを標準モジュ...
-
モジュールの最大数はいくつな...
-
【vba】フォームに書いてあ...
-
Excel VBA 『Call』で呼び出す...
-
VBAで旧字体を異字体に一括で変...
-
モジュールとクラスの違いって...
-
モジュールからフォームのボタ...
-
大量の標準モジュールを解放す...
-
acwzlibとは?
-
SendKeysの使い方について
-
標準モジュールを削除したい。(...
-
VBA This Workbookモジュール...
-
VBA モジュールで共通に使う変...
おすすめ情報