• 締切済み

CommonDialog でエラー

OSとExcelを再インストールしたところ、下記のところでエラーが出ました。 なぜでしょうか。解決策はあるでしょうか。 以前は、使用できておりました。 Excelのマクロは、ほとんど理解しておりません。 他人が作成したマクロになります。 OS:WindowsXp Excel:2003 よろしくお願いします。 Private Sub CommandButton3_Click() Dim strArg() As String Dim i As Integer CommonDialog1.filename = ""   ←ここでエラーがでてとまります。 CommonDialog1.ShowOpen strArg = Split(CommonDialog1.filename, "\")  ごにょごにょ演算など。 End Sub

みんなの回答

回答No.3

#2の回答者です。 ところで、 strArg = Split(CommonDialog1.filename, "\") で、変数に、i があるのですが、もしかしたら、ただのファイル名だけを取るものではないでしょうか? もしそうだったら、Dir(FName)で、フォルダ名がない、ファイル名だけが取得できます。

回答No.2

こんばんは。 こちらでも、試しに、そのコードそのものはExcel2003で通りましたが、問題は、Excelの種類にも依存するかもしれないということです。 解決策の前に、少し、能書きを書かせていただきます。 仮に、Excel2003は、Personal Versionでも、VB6 RunTime を含んでいたとは思いますが、私の場合は、VB6自体を持っていたし、Access では、使う時はあっても、Excelでは、Developer Versionしか、コモンダイアログは使いませんでしたね。つまり、ランタイムをインストールしただけでは、ライセンスを持っていないはずなので、コモンダイアログは使えないのではないかと思いました。 それと、.filename  とすべてが、小文字になっている所が気になります。何か別に使っているのではないでしょうか?ここの掲示板では、無頓着な人もいるようですが、やはり、これは、何かサインとして受け取ったほうがよいです。 それで、解決策としては、コモンダイアログを使うのをやめて、Excel VBAのネイティブ・コマンドを使ったらどうかと思います。Excelというものは、他のOffice に比較して、コマンドが多く存在しています。 '// Private Sub CommandButton3_Click()  Dim Fname As Variant  Dim strArg As Variant '念の為に、Variant型にしました。  Const FSEP As String = "\" 'ファイルセパレータ  Fname = Application.GetOpenFilename() '←ここがポイント  If VarType(Fname) = vbBoolean Or Fname = "" Then Exit Sub  strArg = Split(Fname, FSEP) End Sub '//

回答No.1

Common Dialog Control が入っていないのでは? http://okwave.jp/qa/q1185926.html なので取りあえず、VBEのツールから参照設定をクリックし 中の「参照(B)」ボタンをクリックし C:\Windows\System32\COMDLG32.OCX を探し出して「開く」 見つからなければ、 http://www.vector.co.jp/soft/dl/win95/util/se342080.html からランタイムをダウンロード。 vb6rt340.exe をダブルクリックすると解凍先フォルダを聞いてきますので 適宜入力。 フォルダ内の、「お読み下さい.chm」に目を通したら setup.exe をダブルクリック。 その後、参照設定に登録。 メニューのデバッグから○△のコンパイルを実行。 何も起こらなければOK。

関連するQ&A

専門家に質問してみよう