VB6名前を指定して保存する際のコードと注意点

このQ&Aのポイント
  • VB6のコードを使用してファイルを保存する方法について説明します。保存する際には、CommonDialog1を使用してファイル名を指定します。また、保存ボタンを押した後、ファイルの拡張子を指定するためのダイアログも表示されます。
  • 特定のエラーに対応するために、エラーハンドリングも行われています。保存をキャンセルした場合は、キャンセルメッセージが表示されます。
  • ファイルの保存に関する注意点として、保存ボタンを2回押す必要がある点が挙げられます。1回目の保存ボタンでは、ファイル名を指定するダイアログが表示されますが、実際のファイルの保存は2回目の保存ボタンを押した後に行われます。
回答を見る
  • ベストアンサー

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ファイルとして保存できるようにしたいので、どなたか分かる方アドバイスお願いします。

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

  • ベストアンサー
  • bouyapin
  • ベストアンサー率60% (6/10)
回答No.1

1>With CommonDialog1 2>.CancelError = True 3>.DialogTitle = "保存ファイル名指定" 4>.DefaultExt = ".txt" 5>.Filter = "テキストファイル(*.txt)|*.txt" 6>.FilterIndex = 1 7>.ShowSave 8>End With > 9>On Error GoTo aaa > 10>CommonDialog1.ShowSave 11>Open CommonDialog1.FileName For Binary As #1 …省略… 7行目と 10行目で2回CommonDialogをShowさせているからでしょう。 7行目は消して On Error GoTo の後の10行目を残してみるといいです。

mari1215
質問者

お礼

ありがとうございました。解決いたしました。 showsaveをあまり理解してなかったので、つかいかたがこれでいいのかな?と自身がありませんでした。 お世話になりました。

関連するQ&A

  • 拡張子を決めてから保存するには

    こんにちわ。 ここのサイトで参考にさせてもらったコードを使ってファイルを保存する際に拡張子をつけて保存したいのですがよく分からなかったので、教えてもらえるとたすかります。 以下はコードです。 CommonDialog1.ShowSave Open CommonDialog1.FileName For Binary As #1 Put #1, , Text2.Text Close #1 Exit Sub aaa: If Err.Number = 32755 Then MsgBox "キャンセル" End If これだとtext2.txtの内容をファイル名を決めて保存できるのですが、出来上がったファイルが拡張子のなにも無いファイルでした。 開く際にいちいちプログラム選択しなきゃならないので、どこを変えればいいか教えてください。 例を挙げるとすべてテキストファイルとして保存したいので、"text1"と言う名前で保存した場合にtext1.txtとなって、そのファイルをすぐに開けるようにしたいです。 初心者ですがよろしくおねがいします。

  • 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

  • テキストボックスの中身をリセット(クリア)したい

    ファイル(*.txtのみ)を読み込んで、テキストボックスに中身を表示させておりますが、2回以上ファイルを読み込んだ時、テキストボックスに書かれた内容を消した上で、読み込んだファイルの中身を表示させるように変更できないでしょうか。また、テキストボックスに書かれた内容をクリアするボタンの作り方も知りたいです。 例、1.ABCと書かれたテキストの読み込み→ABC   とテキストボックスに表示される    2.XYZと書かれたテキストの読み込み→ABC XYZ とテキストボックスに表示される これを2.を読み込んだ時、ABCを表示せずにXYZと表示したい コードの一部 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

  • 10MB位のテキスト保存時の効率的な方法はありませんか?

    よろしくお願いします! 計10MB位の容量のテキストをリッチテキストボックスに表示し、それをコモンダイアログボックスで任意のファイル名を付けて任意のフォルダに保存するというソフトを作っています。 テキストの表示はOKなのですが、まず「保存」ボタンを押してコモンダイアログボックスが表示されるまでに数分かかり、なおかつ名前を付けて保存するのにまた数分かかってしまい、困っています。何か効率的な方法(テンプを使用する?)はありませんでしょうか? 「保存」ボタンでコモンダイアログボックスを開いて、実際に保存する部分のコードは次の通りです。 バイナリで保存してるので、本当はもっと速いのではないかと思うのですが、実際にはとても遅いです。 最初にリッチテキストボックスに10MBのテキストを表示するのに、かなりメモリを消費してるためなのでしょうか? Private Sub Command1_Click() Dim errr As Integer Dim fil As String Dim filenumb As Integer filenumb = FreeFile With CommonDialog1 .CancelError = True .Flags = cdlOfilenumbPathMustExist .ShowSave End With errr = Err.Number On Error GoTo 0 If errr <> cdlCancel Then fil = CommonDialog1.FileName Open fil For Binary Access Write As #filenumb Put #filenumb, , rich1.Text Close #filenumb End If 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

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

  • CommonDialogの、細かい使い方。

    コモンダイアログで、「ShowSave」を、やり、 保存画面を開いて、セーブさせようと思うのですが、 なぜか、保存押しても、キャンセル押しても、保存してしまいます。 学校で、MSDNをみたときには、 CommonDialog.CancelError = True On Error GoTo ErrHandler ~中身・・保存の、コーディング~ ErrHandler:   End sub こういう風にやると、キャンセル押したときに、 下の、ErrHandler: この部分に、飛んで、終わるはずなんですが、うまくいきません。 誰か、 CommonDialog.ShowSave で、開いたときのちゃんとした、保存方法おしえてください。お願いします。

  • VB2010 txtファイルとして保存をする方法

    度々、VBの質問をしています。学習中ですみません。 TextBoxに入力されている文字をテキストファイルとして保存したいのですが、 参考にしているテキストが、Imageファイルだったので途中から分からなくて… どのようにしたら良いのでしょうか? ’OKボタンがクリックされたときに 入力するコードをどなたか教えてください。 フォームにメニューを追加し、その下に名前を付けて保存を入力しています。 Private Sub 名前を付けて保存ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 名前を付けて保存ToolStripMenuItem.Click Dim sfd As New SaveFileDialog 'はじめに表示されるフォルダを指定する sfd.InitialDirectory = "C:\Users\○○\Desktop" '「ファイルの種類」に表示される選択肢を指定する sfd.Filter = "すべてのファイル(*.*)|*.*|テキストファイル(*.txt)|*.txt" '「テキストファイル」が選択されているようにする sfd.FilterIndex = 2 sfd.Title = "保存先のフォルダを選択してください。" sfd.RestoreDirectory = True 'ダイアログボックスを表示する If sfd.ShowDialog() = DialogResult.OK Then 'OKボタンがクリックされたとき End If

  • VB 保存・読み込み2

    どもです。この間の質問の続きです。VB6.0 SP5 open の保存で文字の区切りに " , が使われるために text1 text2 text3 にそれぞれ文字を入れて保存してもその文字へ " ,等を使っている場合そこで区切られてしまい、text1に=あいう"えお と入力して保存⇒読み込みをするというtext1=あいう text2=えおと区切られてします問題でした。 そこでかなり考えてすこし良い案が浮かびました。 がコードが浮かびません^^; これをコードに変えられる方お願いします。 a = text1.text ←「あいうえお」と打ち込む。 b = text2.text ←「かきくけこ」と打ち込む。 c = text3.text ←「さしすせそ」と打ち込む。 open "test.txt" for output as #1 print #1,a & "<tes>" & b & " <tes> " & c で保存すると あいうえお<tes>かきくけこ<tes>さしすせそ と保存される訳です。 ※次に開きます。 open test.txt" for input as #1 この読み込みが判らないんですが、<tes>の 場所でそれぞれa b cに分けるようにすればいいと 思ったんです。 出来ますか@@???  

  • 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

専門家に質問してみよう