• 締切済み

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

  • ka_tu
  • お礼率32% (20/61)

みんなの回答

回答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

  • コモンダイアログエラー

    エクセルのマクロについて質問です。 今エクセルでCommonDialog1を実行しようとしています。 やりたいことは”ファイルを選択するウィンドウを表示”させて”ファイルを開く”です。 マクロを作成しているエクセルは2007で実際に動作させるときに使用するのは2002です。 下記マクロ参照ください。 Private Sub CommandButton1_click() Dim strfilename As String commondialog1.Filename = "" commondialog1.Filter = "CSV Files(*.csv)|*.csv" commondialog1.showopen strfilename = commondialog1.Filename End Sub 実行しようとすると実行エラー424 オブジェクトが必要です とエラーメッセージがでます。(2007で作成、デバック時) common dialog controlの挿入等試してみましたがうまくいきません。 解決策がありましたらご教示願います。 ちなみに、既存のマクロの都合でcommondialogのコマンドを使用して作りたいです。 他にも方法はあるかと思いますが、宜しくお願い致します。

  • VBでファイル読み込み

    VBであるところにあるCSVファイルのデータを読み込みエクセルへ変換出力したいのですが教えてください。コモンダイアログボックス(?)と言うものを使って作成したいのです。よろしくお願いします。 がんばってやってみたのですがわかりません。教えてください。 Private Sub Command1_Click() Dim gnum(25), tensuu(32, 99) Dim sougouten(99), heikin(99), gouhi$(99) 'ファイルを開く On Error GoTo ErrHandler 'コモンダイアログボックス CommonDialog1.CancelError = True CommonDialog1.Filter = "すべてのファイル (*.*)|*.*|" _ & "テキスト ファイル (*.txt)|*.txt|バッチ ファイル (*.bat)|*.bat" CommonDialog1.FilterIndex = 2 CommonDialog1.ShowOpen With CommonDialog1 .FileName = "" .ShowOpen End With Exit Sub ErrHandler: ' ユーザーが [キャンセル] ボタンをクリックしました。 End Sub

  • 実行時エラー '32755' [キャンセル] ボタンが選択されました。 について

    ファイルを保存する時、キャンセルをするとタイトルどおりのエラーメッセージが出ます。当方、初心者でデバッグの仕方がわからず困ってます。どなたか教えてください。 コードの一部 Dim myFile As String Private Sub Command2_Click() CommonDialog1.Filter = "テキスト(*.txt)|*.txt|すべて(*.*)|*.*" CommonDialog1.FilterIndex = 1 CommonDialog1.Flags = cdlOFNOverwritePrompt '上書き確認する CommonDialog1.ShowSave '!!!デバッグの際はこの行が反転表示されます!!! If CommonDialog1.FileName = "" Then Exit Sub myFile = CommonDialog1.FileName FileWrite Form1.Caption = "Form1" & myFile End Sub Private Sub FileWrite() Dim buf As String Open myFile For Output As #1 Print #1, RichTextBox1.Text; '最後の';'は余計な複改を入れないため Close #1 Exit Sub End Sub

  • テキストの読込について

    あいうえお かきくけこ さしすせそ ↑のような中身のテキストファイルを読み込んで、 あいうえおかきくけこさしすせそ ↑のように、改行をなくして新規テキストに出力する プログラムを作成中なのですが、上手くいかず 困っています。 改行を無視した取り込みは出来るのでしょうか? もしくは、LineInput等で読み込んだ後、 改行を取り除くような処理をするのでしょうか? 下記は、現在まで作ったプログラムなのですが、 これだと、改行も同時に取り込んでしまっています。 Private Sub Command1_Click() Dim sData As String Dim FileName As String CommonDialog1.Filter = "テキスト|*.txt|全てのファイル|*.*" CommonDialog1.ShowOpen FileName = CommonDialog1.FileName Open FileName For Input As #1 Do Until EOF(1) Line Input #1, sData Loop Close #1 環境は、WindowsXP、VB6.0エンタープライズです。 以上、宜しくお願い致します<(_ _)>

  • ファイルを読み込んだらVBがフリーズする

    ↓のコードだと、ファイルを読み込んだ時点でVBがフリーズします(平気なファイルも一部ある)。原因と解決法を教えてください。 Private Sub Command1_Click() CommonDialog1.Filter = "テキスト(*.txt)|*.txt|すべて(*.*)|*.*" CommonDialog1.FilterIndex = 1 CommonDialog1.Flags = cdlONFileMustExist CommonDialog1.CancelError = True On Error Resume Next CommonDialog1.ShowOpen If (Err = 0) Then FileRead CommonDialog1.FileName End If On Error GoTo 0 End Sub Private Sub FileRead(FL As String) Dim FileNo As Integer Dim strDAT As String Dim strELM As String Dim pot1 As Integer, pot2 As Integer Dim pDB1 As Integer, pDB2 As Integer FileNo = FreeFile() Open FL For Input As #FileNo While Not EOF(FileNo) Line Input #FileNo, strDAT strDAT = strDAT & ":" pot1 = InStr(strDAT, ":") While pot1 > 0 strELM = Left(strDAT, pot1) pot2 = InStr(strELM, "OPEN") While pot2 > 0 pDB1 = InStr(strELM, Chr(&H22)) If pDB1 > 0 Then '前の『"』の位置 pDB2 = InStr(pDB1 + 1, strELM, Chr(&H22)) If pDB2 > 0 Then RichTextBox1.Text = RichTextBox1.Text & _ Mid(strELM, pDB1 + 1, pDB2 - pDB1 - 1) & vbCrLf End If End If pot2 = InStr(pDB2 + 1, strELM, "OPEN") Wend strDAT = Mid(strDAT, pot1 + 1) pot1 = InStr(strDAT, ":") Wend Wend Close #FileNo End Sub

  • 同じマクロ名でも、違うモジュールならエラーにならな

    同じマクロ名でも、違うモジュールならエラーにならない? エクセルVBAについてご教授ください。 標準モジュールに ――――――――― Option Explicit Sub CommandButton1_Click() MsgBox "" End Sub Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― と同じマクロ名を2つ作ったら、コンパイルエラーになりますが、 上記のコードは一度消して、フォームモジュールに ――――――――― Private Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― を一つ作り、 標準モジュールに ――――――――― Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― を一つ作った場合は、エラーにならずにマクロを実行できました。 これは、フォームモジュールがPrivate Subだからでしょうか? フォームモジュールに1つ、 標準モジュールに1つ なら同じマクロ名を使っても、エラーにならないという事でしょうか? よろしくお願いします。

  • 値渡しについて

    UserForm1で以下のように求めた値「R」を UserForm2に渡すにはどのようにすればよいのでしょうか。 **************************************** <UserForm1(コード)> Public R As Integer ----------------------------------- Private Sub CommandButton1_Click()    Dim N As Integer        :    N = TextBox1.Text    R= N * 2 + 3        : End Sub **************************************** <UserForm2(コード)> Private Sub CommandButton1_Click()   Dim i As Integer       :   For i = 4 To R       :   Next i       : End Sub **************************************** どなたか教えて下さい。

  • VBAで縦一列に数字を入力したい

    Private Sub CommandButton1_Click() Dim n As Integer Dim i As Integer Dim x As Integer For i = 1 To n x = i + 3 n = InputBox("層数の値を入力してください") Cells(3, 1).Value = ("基板") Cells(x, 1).Value = i x = x + 1 Next End Sub 上記のようなマクロを組んだのですが、4行目に1が入ってとまってしまいました。 これを完成させるにはどうしたらいいでしょうか?

  • ある文字列を検索するボタンのつくりかた

    あるテキストファイル(*.txt)の内容をテキストボックスに表示するボタンを作りました。さらに、このテキストファイルの内容の中から、決まった文字列のみを表示できるようにしたい(例.abcdefgと書かれたテキストに対してbcdのみ抜き出す)のですが、どうすれば良いのでしょうか。初心者なので、簡単にできる方法があれば教えてください。 <現在のコード> Dim myFile As String Private Sub Command1_Click() CommonDialog1.Filter = "テキスト(*.txt)|*.txt|すべて(*.*)|*.*" CommonDialog1.FilterIndex = 1 CommonDialog1.Flags = cdlONFileMustExist '既存ファイルのみ読み込み CommonDialog1.ShowOpen If CommonDialog1.FileName = "" Then Exit Sub myFile = CommonDialog1.FileName FileRead Form1.Caption = "Form1 " & myFile End Sub Private Sub Form_Load() Form1.Height = 3510 End Sub Private Sub FileRead() Dim buf As String On Error GoTo ErrTrap1 Open myFile For Input As #1 RichTextBox1.Text = "" While Not EOF(1) Line Input #1, buf RichTextBox1.Text = RichTextBox1.Text & buf & Chr(13) & Chr(10) Wend Close #1 Exit Sub ErrTrap1: MsgBox Err.Description Err.Clear End Sub

  • ファイルの読み込み

    CSVファイルを読み込んでAccessへ格納したいのですがどうしたら良いのでしょうか? ここまではできたのですが・・・・。 Private Sub Command1_Click() CommonDialog1.Flags = cdlOFNFileMustExist Or cdlOFNHideReadOnly CommonDialog1.ShowOpen End Sub

専門家に質問してみよう