请教VB做的文件另存功能!!
答案:2 悬赏:50 手机版
解决时间 2021-11-10 19:40
- 提问者网友:暮烟疏雨之际
- 2021-11-10 05:54
请教VB做的文件另存功能!!
最佳答案
- 五星知识达人网友:污到你湿
- 2021-11-10 06:38
Dim oLdfilename As String
Private Sub Command1_Click()
Text1.Text = ""
CommonDialog1.Filter = "All File"
CommonDialog1.FileName = ""
CommonDialog1.ShowOpen
Text1.Text = CommonDialog1.FileName
oLdfilename = CommonDialog1.FileTitle '取得文件名
End Sub
Private Sub Command2_Click()
Dim sfilE As String '后缀名
If Text1.Text = "" Then Exit Sub '没有资源,不复制
oLdfilename = Mid(Text1.Text, InStrRev(Text1.Text, "\") + 1) '取得原文件名,用于保存时提示文件名
'以下为取得后缀名
If InStr(StrReverse(oLdfilename), ".") > 0 Then
sfilE = StrReverse(Left(StrReverse(oLdfilename), InStr(StrReverse(oLdfilename), ".") - 1))
Else
sfilE = "" '后缀名
End If
Dim p As String
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
' 设置标志
CommonDialog1.Flags = cdlOFNHideReadOnly
' 设置过滤器
If sfilE = "" Then
CommonDialog1.Filter = "All Files (*.*)|*.*|"
CommonDialog1.FilterIndex = 1 ' 指定缺省的过滤器
Else
CommonDialog1.Filter = "All Files (*.*)|*.*|" & sfilE & " Files (*." & sfilE & ")|*." & sfilE & ""
CommonDialog1.FilterIndex = 2 ' 指定缺省的过滤器
End If
CommonDialog1.FileName = oLdfilename '提示文件名
CommonDialog1.ShowSave ' 显示“另存为”对话框
If Dir(CommonDialog1.FileName) = "" Then
Call FileCopy("" & Text1.Text & "", CommonDialog1.FileName)
MsgBox "直接保存成功"
Else
p = MsgBox("文件已经存在,是否覆盖?", vbYesNo)
If p = vbYes Then
Call FileCopy("" & Text1.Text & "", CommonDialog1.FileName)
MsgBox "覆盖保存成功,"
End If
End If
ErrHandler:
' 用户按了“取消”按钮
Exit Sub
End Sub参考资料:我自问自答好了,多谢vbgood网友点拨!
Private Sub Command1_Click()
Text1.Text = ""
CommonDialog1.Filter = "All File"
CommonDialog1.FileName = ""
CommonDialog1.ShowOpen
Text1.Text = CommonDialog1.FileName
oLdfilename = CommonDialog1.FileTitle '取得文件名
End Sub
Private Sub Command2_Click()
Dim sfilE As String '后缀名
If Text1.Text = "" Then Exit Sub '没有资源,不复制
oLdfilename = Mid(Text1.Text, InStrRev(Text1.Text, "\") + 1) '取得原文件名,用于保存时提示文件名
'以下为取得后缀名
If InStr(StrReverse(oLdfilename), ".") > 0 Then
sfilE = StrReverse(Left(StrReverse(oLdfilename), InStr(StrReverse(oLdfilename), ".") - 1))
Else
sfilE = "" '后缀名
End If
Dim p As String
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
' 设置标志
CommonDialog1.Flags = cdlOFNHideReadOnly
' 设置过滤器
If sfilE = "" Then
CommonDialog1.Filter = "All Files (*.*)|*.*|"
CommonDialog1.FilterIndex = 1 ' 指定缺省的过滤器
Else
CommonDialog1.Filter = "All Files (*.*)|*.*|" & sfilE & " Files (*." & sfilE & ")|*." & sfilE & ""
CommonDialog1.FilterIndex = 2 ' 指定缺省的过滤器
End If
CommonDialog1.FileName = oLdfilename '提示文件名
CommonDialog1.ShowSave ' 显示“另存为”对话框
If Dir(CommonDialog1.FileName) = "" Then
Call FileCopy("" & Text1.Text & "", CommonDialog1.FileName)
MsgBox "直接保存成功"
Else
p = MsgBox("文件已经存在,是否覆盖?", vbYesNo)
If p = vbYes Then
Call FileCopy("" & Text1.Text & "", CommonDialog1.FileName)
MsgBox "覆盖保存成功,"
End If
End If
ErrHandler:
' 用户按了“取消”按钮
Exit Sub
End Sub参考资料:我自问自答好了,多谢vbgood网友点拨!
全部回答
- 1楼网友:人间朝暮
- 2021-11-10 07:47
1.保存时,我换名保存的文件,没有了后缀名。//估计是因为CommonDialog1.Filter = "ALL File" 的原因吧应该要自己+上后啜
2.如果保存一次,再次保存,发现已有这个文件,按“取消”,结果程序还是给保存了。
If Dir(CommonDialog1.FileName) <> vbNullString Then '同文件夹有同名文件
If MsgBox("" & CommonDialog1.FileName & "已存在," & Chr(13) & "要替换它吗?", vbYesNo + 48, "另存为") = vbYes Then '提示是否替换
Kill CommonDialog1.FileName '替换:先kill
FileCopy "" & Text1.Text & "", CommonDialog1.FileName '替换:后保存
MsgBox "替换保存OK"
else
Exit Sub
end if //这里换一下 改成 esle exit sub
Else '没有同文件名,直接保存
FileCopy "" & Text1.Text & "", CommonDialog1.FileName
MsgBox "直接保存OK"
End If
3.因为是可复制任意类型文件,在CommonDialog1的CommonDialog1.Filter指定文件的类型?不明白你说什麼
2.如果保存一次,再次保存,发现已有这个文件,按“取消”,结果程序还是给保存了。
If Dir(CommonDialog1.FileName) <> vbNullString Then '同文件夹有同名文件
If MsgBox("" & CommonDialog1.FileName & "已存在," & Chr(13) & "要替换它吗?", vbYesNo + 48, "另存为") = vbYes Then '提示是否替换
Kill CommonDialog1.FileName '替换:先kill
FileCopy "" & Text1.Text & "", CommonDialog1.FileName '替换:后保存
MsgBox "替换保存OK"
else
Exit Sub
end if //这里换一下 改成 esle exit sub
Else '没有同文件名,直接保存
FileCopy "" & Text1.Text & "", CommonDialog1.FileName
MsgBox "直接保存OK"
End If
3.因为是可复制任意类型文件,在CommonDialog1的CommonDialog1.Filter指定文件的类型?不明白你说什麼
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯