好きな和訳タイトルを教えてください

いつもお世話になります

人の古いプログラムで標準モジュールから、ユーザフォームの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

以上、よろしくお願い申し上げます

質問者からの補足コメント

  • どう思う?

    いつもお世話様です

    CommonDialog1が追加されていないからですかね
    その他のコントロール追加で探しても見つからないですね
    もう無いのかも?

    そこだけ教えてもらっても良いですか?
    以上、よろしくお願いいたします

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/10/19 18:32

A 回答 (2件)

こんにちは



どのような仕組みになっているのか、ご提示の内容だけでは不明ですが・・

普通のプロシージャであれば、ご提示の方法で呼ぶことは可能と思います。
試しに、現状の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
として再定義すれば、現状の機能はそのまま維持できるはずです。

その上で、呼び出し側の呼び出し名を「新しく作成したプロシージャ」とすれば実行できるはずですが、多分、原因は別のところにあるのでしょうから、やはりエラーになるのではないかと推測しますけれど・・
こちらの場合であれば、エラー表示の行位置が変わると思いますので、多少は前進になるのではと思います。
この回答への補足あり
    • good
    • 0
この回答へのお礼

いつもお世話様です
中途半端な質問で申し訳ございませんでした

会社の同僚から動かないと言われ
ちょっと見てあげたのですが、別のプログラムを紹介しました
ただし動かない理由を説明したかったので助かりました
ありがとうございました
これからもよろしくお願いいたします

お礼日時:2023/10/23 09:55

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 …
    • good
    • 0
この回答へのお礼

やはりそうですか
すっきりしました

ありがとうございました
これからもよろしくお願い申し上げます

お礼日時:2023/10/23 09:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A