
いつもお世話になります
人の古いプログラムで標準モジュールから、ユーザフォームのSubroutineを
呼び出しているのですが(Dialog Open)
「オブジェクトが必要です」というエラーが出ます
自分はこんな使い方をしたことがないのでよく分からないので
教えてもらいたく投稿しました。
(標準モジュール)
'**********************************
' ファイルデータ入力
'**********************************
Public Sub ①データ読込み(Optional IsMsg)
With Application
.SheetsInNewWorkbook = 3
End With
'
UserForm1.cmdGetTabFile_Click ' Dialog Open
If IsGetCancel = False Then
Call GetPaste
End If
End Sub
(UserForm1)
Public Sub cmdGetTabFile_Click()
Dim filename As String
IsGetCancel = True
With CommonDialog1
If strInTextDIR = "" Then
strInTextDIR = CurDir
End If
Application.DefaultFilePath = strInTextDIR
.InitDir = strInTextDIR
.CancelError = False
.filename = ""
.Filter = "断面照査データ(*.TXT)|*.TXT|全て|*.*"
.ShowOpen
If .filename = "" Then
Exit Sub
End If
If Dir(.filename) = "" Then
MsgBox "No FIle " & .filename
Exit Sub
End If
TabFileNAME = .filename
IsGetCancel = False
End With
strInTextDIR = getFilePath(TabFileNAME)
End Sub
以上、よろしくお願い申し上げます
No.1ベストアンサー
- 回答日時:
こんにちは
どのような仕組みになっているのか、ご提示の内容だけでは不明ですが・・
普通のプロシージャであれば、ご提示の方法で呼ぶことは可能と思います。
試しに、現状のPublic Sub cmdGetTabFile_Click()を別名にしておいて、
Public Sub cmdGetTabFile_Click()
MsgBox "Test OK"
End Sub
のようなものを追加して、実行してみると実行できませんか?
※ 想像するところ、cmdGetTabFile_Clickはカスタム定義のイベントではないかと思いますが、そちらの定義が関係しているのかも知れません。
上記で実行できない場合は、一旦、イベント設定を外して実行してみれば、とりあえず呼び出せるのではないかと推測します。
(対象のモジュール名が「UserForm1」ではない、というオチでなければ・・)
もし実行できるようなら、呼び出し側の問題ではなく、実行条件等の問題ではないかと推測しますが、内容が不明なのでこれ以上はわかりかねます。
もしも、ご提示のcmdGetTabFile_Clickの内容が、単独実行可能な内容であるなら、現状の内容を別名のプロシージャとして、標準モジュールに新たに設定し、現状のプロシージャを
Public Sub cmdGetTabFile_Click()
Call 新しく作成したプロシージャ
End Sub
として再定義すれば、現状の機能はそのまま維持できるはずです。
その上で、呼び出し側の呼び出し名を「新しく作成したプロシージャ」とすれば実行できるはずですが、多分、原因は別のところにあるのでしょうから、やはりエラーになるのではないかと推測しますけれど・・
こちらの場合であれば、エラー表示の行位置が変わると思いますので、多少は前進になるのではと思います。
いつもお世話様です
中途半端な質問で申し訳ございませんでした
会社の同僚から動かないと言われ
ちょっと見てあげたのですが、別のプログラムを紹介しました
ただし動かない理由を説明したかったので助かりました
ありがとうございました
これからもよろしくお願いいたします
No.2
- 回答日時:
CommonDialog は Microsoft Common Dialog Control 6.0 がインストールされていなければなりません。
https://www.microsoft.com/ja-jp/download/details …
また、CommonDialog は64bitのOfficeでは動作しません。
Application.GetOpenFilename() を利用するよう変更してください。
https://learn.microsoft.com/ja-jp/office/vba/api …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) excel VBAでメールを送る方法について 2 2021/11/03 15:34
- Visual Basic(VBA) Excel VBAでフォルダ内の全テキストファイルの任意データを取得について 7 2021/12/18 16:00
- Word(ワード) word_VBA_フォームからダイアログそこからの復帰について 2 2021/12/13 23:44
- Visual Basic(VBA) 空のシートに関数を入れたい 2 2021/12/03 15:08
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) シート名でファイル検索する 2 2021/11/30 17:05
- Visual Basic(VBA) VBA excelからメールを送る方法について 1 2021/11/03 11:30
- Visual Basic(VBA) サブフォルダ含むすべてのフォルダの Excel 検索 4 2021/12/13 09:33
- Visual Basic(VBA) シート名をフォルダ名に変更 1 2021/12/01 15:59
- Visual Basic(VBA) EXCLE VBA シートクリックしたら該当シートコピー 1 2021/11/11 16:37
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
VBAです。ユーザーフォームの表示させ、標準モジュールを読み込ませる方法について
Visual Basic(VBA)
-
UserForm1.Showでエラーになります。
工学
-
-
4
Excel VBAで、ユーザーフォームの値を、モジュールで使用したい。
Visual Basic(VBA)
-
5
標準モジュールからフォームをコントロールしたい
Visual Basic(VBA)
-
6
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
7
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
8
private subモジュールを他のモジュールから呼び出して使う方法を教えてください(-.-)
Visual Basic(VBA)
-
9
他のフォームから別のフォームのサブルーチンを呼び出す
Visual Basic(VBA)
-
10
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
11
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
12
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
13
モジュールからフォームのボタンをクリックするには?
Access(アクセス)
-
14
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
15
エクセルVBAでフォームのListboxをスクロールするには?
その他(Microsoft Office)
-
16
ユーザーフォームのテキストボックスに前回入力した値を表示する Excel
Visual Basic(VBA)
-
17
別のユーザーフォームのコマンドボタンを押す
Visual Basic(VBA)
-
18
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
19
Application.Runエラー(1004)
Excel(エクセル)
-
20
モードレスでユーザーフォームが開け(表示)ません。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
-
ピンとくる人とこない人の違いは?直感を鍛える方法を心理コンサルタントに聞いた!
根拠はないがなんとなくそう感じる……。そんな「直感がした」という経験がある人は少なくないだろう。ただ直感は目には見えず、具体的な説明が難しいこともあるため、その正体は理解しにくい。「教えて!goo」にも「...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでシートモジュール...
-
Excel VBAでリンク切れをチェッ...
-
関数の引数にクラスを使いたい
-
モジュールからフォームのボタ...
-
Excel VBAで、ユーザーフォーム...
-
非常に恥ずかしいレベルの質問...
-
クラスモジュールについて
-
A88M-G/3.1(ASRock)のマザボに...
-
vba 標準モジュールインポート...
-
VBA ユーザーフォーム Image1 ...
-
Sub Workbook_Open()でユーザー...
-
クラスモジュールについて
-
EXECEL VBA コマンドボタンか...
-
perlを使って音(sound.wav)を...
-
perlでのFTPミラーリングについて
-
strict.pmはどこにありますか?
-
ExcelVBA:パブリック オブジェ...
-
C#のアプリケを64bit版のOSで起...
-
ActivePerlでモジュールのアッ...
-
VBのフォームモジュールと標準...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
Excel VBAで、ユーザーフォーム...
-
ユーザー定義関数に#NAME?が返...
-
vba userFormのSubを標準モジュ...
-
Excel VBA 定義されたプロージ...
-
モジュールとクラスの違いって...
-
モジュールの最大数はいくつな...
-
VBAで別モジュールへの変数の受...
-
Excel VBA 『Call』で呼び出す...
-
エクセルVBAでシートモジュール...
-
VBでグローバル変数を宣言するには
-
【vba】フォームに書いてあ...
-
SendKeysの使い方について
-
モジュールからフォームのボタ...
-
VBAで旧字体を異字体に一括で変...
-
モジュールとは何ですか
-
ExcelでTelnetを動かしたい
-
標準モジュールを削除したい。(...
-
VBA This Workbookモジュール...
-
Access VBA標準モジュールにつ...
おすすめ情報
いつもお世話様です
CommonDialog1が追加されていないからですかね
その他のコントロール追加で探しても見つからないですね
もう無いのかも?
そこだけ教えてもらっても良いですか?
以上、よろしくお願いいたします