主题:vb导出Excel,覆盖原文件时出错。怎解决?
kocher
[专家分:0] 发布于 2008-04-24 19:06:00
我在vb导出Excel,无论有没有原文件也会显示如图:
这个窗口询问要不要覆盖原文件。我选择“是”就程序正常,选择“否”或“取消”,则程序出错。
出错的位置是我存储的命令:
MyBook.SaveAs FileName:=Input_Path, FileFormat:=xlNormal, Password:=""
其中input_path 是存储的文件名字、
可以解决出错问题吗?
回复列表 (共8个回复)
沙发
老大徒伤悲 [专家分:29120] 发布于 2008-04-24 19:16:00
还以为你附件是代码呢!
板凳
kocher [专家分:0] 发布于 2008-04-24 19:57:00
Dim i As Long '行
Dim sXLSPath As String
Dim MyExcel As New Excel.Application
Dim MyBook As Excel.Workbook
Dim MySheet As Excel.Worksheet
Dim Input_Path As String '存储文件名字
Dim fs As New Scripting.FileSystemObject
Input_Path = App.Path & "\统计资料" & Date & ".xls"
If fs.FileExists(Input_Path) = True Then '判断该文件是否存在,若存在,则删除该文件
Kill (Input_Path) '这个判断出问题了。测试再修改。
End If
temp = MsgBox("确定要导出为Excel文件?", vbYesNo, "导出")
If temp = vbYes Then
Screen.MousePointer = 11
Open Input_Path For Output As #1
Close #1
Set MyExcel = CreateObject("excel.application")
Set MyBook = MyExcel.Workbooks.Open(Input_Path)
Set MySheet = MyExcel.ActiveSheet
MySheet.Range("A1:O1").Select
' With MyExcel.Selection.Interior
' .ColorIndex = 15
' .Pattern = xlSolid
' End With
For i = 1 To 15
MySheet.Columns(i).ColumnWidth = 15 '设置Excel的列宽
Next i
For i = 0 To MSHFG1.Rows - 1
For j = 0 To MSHFG1.Cols - 1
MySheet.Cells(i + 1, j + 1) = MSHFG1.TextMatrix(i, j)
Next j
Next i
MyBook.SaveAs FileName:=Input_Path, FileFormat:=xlNormal, Password:=""
MyBook.Application.Quit
MyExcel.Application.Quit
Set MySheet = Nothing
Set MyBook = Nothing
Set MyExcel = Nothing
Screen.MousePointer = 0
MsgBox "文件导出成功。文件的位置是: " & Input_Path
End If
3 楼
kocher [专家分:0] 发布于 2008-04-24 19:58:00
上面是原代码。
MSHFG1是列表控件
4 楼
老大徒伤悲 [专家分:29120] 发布于 2008-04-24 20:44:00
能说说,这时候执行到那行了吗?
5 楼
老大徒伤悲 [专家分:29120] 发布于 2008-04-24 20:45:00
我目前这台机器没有安装vb所以不能运行代码,只能凭人工看。
6 楼
老大徒伤悲 [专家分:29120] 发布于 2008-04-24 20:49:00
你在“另存为”(SaveAs)的时候出错!
因为该文件在前面“创建”(CreateObject)时就存在了。
不一定对,仅供参考。
7 楼
kocher [专家分:0] 发布于 2008-04-25 16:42:00
我试过了,必须要CreateObject
kill命令好像没执行一样。真不知道怎么弄。
8 楼
老大徒伤悲 [专家分:29120] 发布于 2008-04-25 18:25:00
天!我真不知道,你为什么要另存?
我更不知道我什么地方说不要创建?
我来回复