|
|
このプログラムはかなりややこしいです。説明を見ることをオススメします。 プログラム例
Dim Full As String 'fullpathを受け取るフラグ
Dim second As String 'さらにFullを内容を受け取るフラグ(同じファイルの二度の読込を防ぐ)
'書込み専用
Private Sub Command1_Click()
Dim fnum As Integer
fnum = FreeFile
'Fullのなかもテキストボックス2も空じゃない場合
'= 上書きと新規作成を同時に行おうとしている時
If Full <> "" And Text2.Text <> "" Then
MsgBox ("上書きか、新規作成かどちらかにしてください。")
Full = ""
Exit Sub 'このプロシージャを抜け出す
End If
'なにも指定していない時
If Full = "" And Text2.Text = "" Then
MsgBox ("ちゃんと指定してください。")
Exit Sub 'このプロシージャを抜け出す
End If
'Fullの中身が存在し、かつテキスト2が空の場合
If Full <> "" And Text2.Text = "" Then
'すでに存在するファイルのみ限定し上書きする時
If MsgBox("ファイルを上書きしますか?", vbYesNo) = vbNo Then
Exit Sub 'このプロシージャを抜け出す
End If
'yesの処理
Open Full For Output As #fnum
Print #fnum, Text1.Text
Close #fnum
End If
'Fullの中身が空でかつテキスト2のファイルが指定してある場合
' = 新規作成
If Full = "" And Text2.Text <> "" Then
'ファイル名を右端から4文字見て、".txt"じゃなかったらエラー
If Right(Text2.Text, 4) = ".txt" Then
If MsgBox(File1.Path & "\" & Text2.Text & "で新規作成します、よろしいですか?", vbYesNo) = vbNo Then
Full = ""
Exit Sub 'このプロシージャを抜け出す
Else '作成するファイルがすでに存在していたら
If Dir(File1.Path & "\" & Text2.Text) <> "" Then
If MsgBox("それと同じ名のファイルがすでに存在します、上書きしますか?", vbYesNo) = vbNo Then
Full = ""
Exit Sub 'このプロシージャを抜け出す
Else
Open File1.Path & "\" & Text2.Text For Output As #fnum
Print #fnum, Text1.Text
Close #fnum
End If
End If
Open File1.Path & "\" & Text2.Text For Output As #fnum
Print #fnum, Text1.Text
Close #fnum
End If
Else 'Right関数のエラー
MsgBox ("拡張子は *.txtで指定してください。")
Exit Sub
End If
End If
End Sub
'読込
Private Sub Command2_Click()
'Pathが未指定の時またはファイルがすでに
'開かれている時のエラー
If Full = "" Then
MsgBox ("ちゃんと指定していません。")
Exit Sub
End If
If second = Full Then
MsgBox ("そのファイルはすでに読み込まれています。")
Full = ""
Exit Sub
End If
Text1.Text = ""
Dim mystr As String
Dim fnum As Integer
fnum = FreeFile
Open Full For Input As #fnum
Do While Not EOF(fnum)
Line Input #fnum, mystr
Text1.Text = Text1.Text & mystr & vbCrLf
Loop
MsgBox ("ちゃんと読み込まれました。")
Close #fnum
second = Full
End Sub
'テキストボックス1の内容をプリントアウトする
Private Sub Command3_Click()
Printer.Print Text1.Text
Printer.EndDoc
End Sub
'以下の内容をクリア
Private Sub Command4_Click()
Text1.Text = ""
Text2.Text = ""
Full = ""
second = ""
Text1.SetFocus
End Sub
'終了
Private Sub Command5_Click()
End
End Sub
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
Private Sub File1_Click()
Dim fnum As Integer
If Right(File1.Path, 1) = "\" Then
fullpath = File1.Path & File1.FileName
Else
fullpath = File1.Path & "\" & File1.FileName
End If
Full = fullpath 'fullpathをFullへ渡す
End Sub
|