Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


50626 / 76732 ←次へ | 前へ→

【30991】Re:ユーザーフォームのインポート 訂正
発言  ichinose  - 05/11/8(火) 20:27 -

引用なし
パスワード
   ▼HOSHI さん:
こんばんは。


>ichinoseさんが記述していただいたコードにて無事に動きました。
>ありがとうございます。申し訳ありませんが、もうすこしご教授していただけたら幸いです。
>
>現在のコードは、解放・インポートを行えるのは、ひとつのみとなるのでしょうか?もしそうであるならば、複数のフォームを解放・インポートするには
>
>Sub main()
> Dim ret As Long
> ret = import_fmcomp(ThisWorkbook, ThisWorkbook.Path & "\frm1.frm")
>
>この部分の『"\frm1.frm")』をそれぞれのフォームの名前に変更したマクロを、フォームの個数分だけ作ればいいということになるのでしょうか?
そういうことです。ループ処理で可能だと思いますよ!!


>それと、フォームを開き、右上の×で閉じた後に、マクロを実行すると、
>「読み込み中にエラーが発生しました」となり、ログを見ると、
>「行 8: プロパティ OleObjectBlob(UserForm1) のファイル参照が不正です。」
>と、なります。
>これは、アンロードしていないから、ということになるのでしょうか?(実はよくわかっていません。すいません。)

このエラーが再現できるコードを提示してください。
これは、最低限、提示しなければならない情報ですよ!!
本当は、コードだけではなく、再現手順書を記述するんですけど・・・。


私が試した限りでは、上記のエラーは再現できませんでした。

但し、前回提示したプロシジャーmainを以下のように
変更すると、

'================================================================
Sub main()
  Dim ret As Long
  UserForm1.Show
  ret = import_fmcomp(ThisWorkbook, ThisWorkbook.Path & "\userform1.frm")
  If ret = 0 Then
   MsgBox "good"
  Else
   MsgBox Error(ret)
   End If
End Sub

「行 2: フォーム名または MDI フォーム名 UserForm1 は既に使われています。」

なんてエラーログが作成されていました。
結果、Userform1の入れ替えは正常に処理されませんでした。
但し、既存のUserform1は削除まではされていました。


困ったときのOntimeメソッドで、
'=======================================
Sub test()
  UserForm1.Show
  Application.OnTime Now(), "main"
End Sub
'========================================================================
Sub main()
  Dim ret As Long
  ret = import_fmcomp(ThisWorkbook, ThisWorkbook.Path & "\userform1.frm")
  If ret = 0 Then
   MsgBox "good"
  Else
   MsgBox Error(ret)
   End If
End Sub

というようにしてtestを実行すると
正しく入れ替えができました。

これは、確認してください。


ところで・・・・。
私のほうから、気になった点です。
HOSHI さんは、このフォームの入れ替えをどんな目的でなさろうとしているのですか?
私は、VBA開発者用のツールなのかなあと思っていたのですが・・・。

業務用の自動実行処理あるいは、事務処理の簡略化などのプログラムに
この処理を導入しようと考えているのですか?
だとしたら、私は心配です。

その大きな理由は、Excel2002からは、セキュリティの設定を行わないと
Vbprojectの操作が出来ないこと。

もうひとつは、プログラムを作動させながら、当該プロジェクトを操作する
という処理を私もこのサイトは長く見ていますが、これまで殆ど見たことが
ありません。私もそのようなコードは書いたことがないです。
正直、危なっかしくて・・・。

今回のようなエラーは私も初めてです。
つまり、未知数が多いと言うことです。
予期せぬエラーはこれ以外のもあるかもしれませんよ
まっ、それを洗い出すのが目的ならそれはそれで意味はあります。
ここは、VBA研究所ですから・・・。

0 hits

【30940】ユーザーフォームのインポート HOSHI 05/11/7(月) 16:22 質問
【30941】Re:ユーザーフォームのインポート Jaka 05/11/7(月) 16:44 発言
【30958】Re:ユーザーフォームのインポート ichinose 05/11/7(月) 23:16 発言
【30959】Re:ユーザーフォームのインポート 訂正 ichinose 05/11/8(火) 7:57 発言
【30988】Re:ユーザーフォームのインポート 訂正 HOSHI 05/11/8(火) 17:50 質問
【30991】Re:ユーザーフォームのインポート 訂正 ichinose 05/11/8(火) 20:27 発言
【31014】Re:ユーザーフォームのインポート 訂正 HOSHI 05/11/9(水) 10:22 お礼
【31024】Re:ユーザーフォームのインポート 訂正 HOSHI 05/11/9(水) 14:33 お礼
【31043】Re:ユーザーフォームのインポート 訂正 ichinose 05/11/9(水) 20:55 発言
【31058】Re:ユーザーフォームのインポート 訂正 HOSHI 05/11/10(木) 11:49 お礼

50626 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free