• ベストアンサー

実行時エラー '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

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

エラー処理を入れました。そのほかに便宜上 command2--->1, RichTextBox1.Text; -->"aaa"に変えましたが 私の場合上手くいきました。ご参考に。 Dim myFile As String Private Sub Command1_Click() CommonDialog1.Filter = "テキスト(*.txt)|*.txt|すべて(*.*)|*.*" CommonDialog1.FilterIndex = 1 CommonDialog1.Flags = cdlOFNOverwritePrompt '上書き確認する On Error GoTo error1 CommonDialog1.ShowSave '!!!デバッグの際はこの行が反転表示されます!!! If CommonDialog1.FileName = "" Then Exit Sub myFile = CommonDialog1.FileName MsgBox myFile FileWrite Form1.Caption = "Form1" & myFile Exit Sub error1: MsgBox Err.Description Err.Clear End Sub Private Sub FileWrite() Dim buf As String Open myFile For Output As #1 Print #1, "aaa" 'RichTextBox1.Text; '最後の';'は余計な複改を入れないため Close #1 Exit Sub End Sub

ahoojpn
質問者

お礼

ありがとうございます。助かりました。

ahoojpn
質問者

補足

エラーが出ずに処理できたのは良いのですが、出来れば、メッセージボックスを出さずに、そのまま今のプログラムを続けたいのですが、どうすればよいか教えていただけないでしょうか。

その他の回答 (3)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

こんにちは。maruru01です。 No.2の人が挙げているので、付けたし程度ですが。 コモンダイアログでは一般的には、CanselErrorプロパティにTrueを入れる方法を使用します。 Private Sub Command2_Click()   With CommonDialog1     .CancelError = True     .Filter = "テキスト(*.txt)|*.txt|すべて(*.*)|*.*"     .FilterIndex = 1     .Flags = cdlOFNOverwritePrompt     On Error Goto ErrHandler     .ShowSave     myFile = .FileName   End With   FileWrite   Form1.Caption = "Form1" & myFile   Exit Sub ErrHandler:   '[キャンセル]ボタンクリック時(何もしない) End Sub なおキャンセルボタンクリック時に、myFileをクリアする処理を書いてもいいでしょう。(Form1のキャプションも変更しなくてはいけないでしょうが。)

  • Khazad
  • ベストアンサー率30% (17/56)
回答No.3

エラー番号は、err.numberで取得できます。(ERRオブジェクトのヘルプを参照) 今回はエラー番号がわかるのだから、1のサンプルの最後の方を error1: if err.number=32755 then  '何もしない else  MsgBox Err.Description  '(ここは本当のエラーなので処理を中断するような記述が必要かも) end if Err.Clear End Sub とすればいいのでは?

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

On Error Resume とか On Error Resume Nextというのもあります。 CommonDialog1.CancelError=trueダイアログキャンセルをエラーとする、などもあります。 http://www-user.interq.or.jp/~komurak/err/

関連するQ&A

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

    あるテキストファイル(*.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

  • 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

  • ファイルを読み込んだら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

  • VBでエディタ

    こんにちは。Kakugariです。  今、VBでエディタを作っていますがファイル操作でつまずいてしまいました。Commondialogからファイル名を取得して、そのファイルをMaintxtに表示するプログラムですがMaintxtに表示されるとき、Tabを使用してスペースを空けた部分が、無視されて文字が前に詰めて表示されます。それ以外は正常です。下にコードを載せましたので、お分かりになられる方は、間違いを指摘していただけたらありがたいです。ちなみにVB6です。Commondialogのプロパティは、デザイン時に設定されています。 Private Sub mnuOpen_Click()   On Error GoTo ErrCode   With CommonDialog1     .DialogTitle = "開く"     .ShowOpen   End With   Dim txt As String, Work As String   Open CommonDialog1.FileName For Input As #1   Do While Not EOF(1)     Input #1, Work     txt = txt & Work & vbCrLf   Loop   Close #1   Maintxt = txt   Exit Sub ErrCode:   Close #1   MsgBox "ファイルは開けませんでした。", vbCritical End Sub

  • 実行時エラー 5 ファイル名の書き出し

    これはどういう意味のエラーなのでしょう? Const FolderName As String = "C:\Users" Sub ファイル名を書き出す() Dim myFile As String myFile = Dir(FolderName & "\*.*", vbDirectory) Do While myFile <> "" Debug.Print myFile myFile = Dir Loop End Sub このようにしてフォルダの中のファイル名を書き出していますが ある特定のファイル名になると、myFile = Dirの部分で、 実行時エラー 5 プロシージャーの呼び出し、または引数が不正 が発生します。 ファイル名をただ読み込んでるだけなのに、どうしてエラーが発生するのでしょうか?

  • 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

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

    エクセルのマクロについて質問です。 今エクセルで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のコマンドを使用して作りたいです。 他にも方法はあるかと思いますが、宜しくお願い致します。

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

    あいうえお かきくけこ さしすせそ ↑のような中身のテキストファイルを読み込んで、 あいうえおかきくけこさしすせそ ↑のように、改行をなくして新規テキストに出力する プログラムを作成中なのですが、上手くいかず 困っています。 改行を無視した取り込みは出来るのでしょうか? もしくは、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エンタープライズです。 以上、宜しくお願い致します<(_ _)>

  • EXCELにテキストファイルを読込むマクロ作成

    EXCELにテキストファイルを「カンマ区切り」で読み込みしたいのですが、 下記マクロの内容ではカンマ区切りで正しくインポートされないのですが 作成方法ご伝授お願いいたします。 sub macro1()  dim myFile as string  myfile = application.getopenfilename(filefilter:="テキストファイル(*.txt),*.txt")  if myfile = "False" then exit sub  workbooks.opentext _   filename:=myfile, _   datatype:=xldelimited, _   textqualifier:=xltextqualifierdoublequote, _   tab:=true, _   comma:=true, _   space:=true ’予備  activeworkbook.worksheets(1).move before:=thisworkbook.worksheets(1) end sub

  • VB6 名前を指定して保存する際に・・・

    こんにちわ。 ファイルを保存する際のコードを考えて作ったのですが、少し困ったので教えてください。 コードは・・・ With CommonDialog1 .CancelError = True .DialogTitle = "保存ファイル名指定" .DefaultExt = ".txt" .Filter = "テキストファイル(*.txt)|*.txt" .FilterIndex = 1 .ShowSave End With On Error GoTo aaa CommonDialog1.ShowSave Open CommonDialog1.FileName For Binary As #1 Put #1, , Text2.Text Close #1 Text2.Text = "" Exit Sub aaa: If Err.Number = 32755 Then MsgBox "キャンセル" End If これなんですが、text2の内容を保存する際に保存名を入れますが、一度保存OKを押すと「ファイル名.txt」となるのはいいんですが本当は1回OKを押した時点でtxtファイルとして保存できるようにしたいので、どなたか分かる方アドバイスお願いします。

専門家に質問してみよう