我做的vb界面上有21个文本框,当我点击“开始测量”按钮后文本框中产生了数据,并且能判断产品数据是否合格,如果合格就把数据存入arrdatagood()这个数组,然后点击“保存(合格)”按钮把这个数组中的元素存入到我指定路径的excel表中;如果不合格就把数据存入arrdatabad()这个数组,然后点击“保存(不合格)按钮把这个数组的元素存入我指定的另一路径的excel中。
现在的问题是:运行时当我先点击“保存(合格)”按钮保存数据后,后来有不合格品时点击“保存(不合格)”按钮,excel表会提示“是否保存对book1的更改”。同理我先点“保存(不合格)”按钮保存数据后,后来有合格品时点击“保存(合格)”按钮,excel表也会提示“是否保存对book1的更改”。
我明明是把两个数组中的元素存入不同路径下的excel中,怎么还会出现这样的问题,好几天都没想明白,着急啊,希望高手帮帮小弟,不要让它出现这样的提示。Private Sub Command2_Click() '保存(合格)
If icountgood > 5000 Then Exit Sub
Dim Ex As Object
Dim ExBook As Object
Dim ExSheet As Object
Dim m As Integer, n As IntegerSet Ex = CreateObject("Excel.Application")
Set ExBook = Ex.Workbooks.Add
Set ExSheet = ExBook.Worksheets("Sheet1")  '打开
ExSheet.Activate '激活工作表
Ex.Visible = TrueExSheet.Cells(1, 1).Value = "产品型号"
ExSheet.Cells(1, 2).Value = "测试日期"
ExSheet.Cells(1, 3).Value = "测试时间"
ExSheet.Cells(1, 4).Value = "峰峰值"
ExSheet.Cells(1, 5).Value = "均方根值"
ExSheet.Cells(1, 6).Value = "频率"
ExSheet.Cells(1, 7).Value = "周期"
ExSheet.Cells(1, 8).Value = "上升时间"
ExSheet.Cells(1, 9).Value = "下降时间"
ExSheet.Cells(1, 10).Value = "正脉宽"
ExSheet.Cells(1, 11).Value = "负脉宽"
ExSheet.Cells(1, 12).Value = "正占空比"
ExSheet.Cells(1, 13).Value = "负占空比"
ExSheet.Cells(1, 14).Value = "最大值"
ExSheet.Cells(1, 15).Value = "最小值"
ExSheet.Cells(1, 16).Value = "平均值"
ExSheet.Cells(1, 17).Value = "幅度"
ExSheet.Cells(1, 18).Value = "顶端值"
ExSheet.Cells(1, 19).Value = "底端值"
ExSheet.Cells(1, 20).Value = "过冲"
ExSheet.Cells(1, 21).Value = "预冲"
Dim i As Integer, j As Integer
For i = 0 To icountgood - 1
   For j = 0 To 20
   ExSheet.Cells(i + 2, j + 1) = arrdatagood(i, j)
   Next j
Next i
   
On Error Resume NextIf Dir("Z:\工作区-技术部\测试台测试数据保存(合格).xls") <> "" Then
Kill "Z:\工作区-技术部\测试台\测试数据保存(合格).xls"ActiveWorkbook.SaveAs ("Z:\工作区-技术部\测试台\测试数据保存(合格).xls")
Else
   ActiveWorkbook.SaveAs ("Z:\工作区-技术部\测试台\测试数据保存(合格).xls")
End If
Set ExSheet = Nothing
Set ExBook = Nothing
Ex.Quit
Set Ex = NothingList1.ClearEnd SubPrivate Sub Command3_Click() '保存(不合格)
If icountbad > 5000 Then Exit Sub
Dim Ex As Object
Dim ExBook As Object
Dim ExSheet As ObjectSet Ex = CreateObject("Excel.Application")
Set ExBook = Ex.Workbooks.Add
Set ExSheet = ExBook.Worksheets("Sheet1")  '打开
ExSheet.Activate '激活工作表
Ex.Visible = True
ExSheet.Range("A1:U1").Value = Array("产品型号", "测试日期", "测试时间", "峰峰值", "均方根值", "频率", "周期", "上升时间", "下降时间", "正脉宽", "负脉宽", "正占空比", "负占空比", "最大值", "最小值", "平均值", "幅度", "顶端值", "底端值", "过冲", "预冲")Dim i As Long
Dim j As Long
     
For i = 0 To icountbad - 1
  For j = 1 To 21
  ExSheet.Cells(i + 2, j) = arrdatabad(i, j - 1)
  Next j
Next i
On Error Resume NextActiveWorkbook.SaveAs ("Z:\工作区-技术部\测试数据保存(不合格).xls")Set ExSheet = Nothing
Set ExBook = Nothing
Ex.Quit
Set Ex = NothingList1.Clear
End Sub

解决方案 »

  1.   

    Set Ex = CreateObject("Excel.Application")
    Set ExBook = Ex.Workbooks.Add
    Set ExSheet = ExBook.Worksheets("Sheet1") '打开
    ExSheet.Activate '激活工作表
    Ex.Visible = True你有这些,应该可以看到你操作excel的过程,看看你打开了多少个文档,如果你新建了book1,并且操作修改了,也是会问你保存的.先修改成下面的,看看你开了几个...
    所以Set Ex = CreateObject("Excel.Application")
    Ex.Visible = TrueSet ExBook = Ex.Workbooks.Add
    Set ExSheet = ExBook.Worksheets("Sheet1") '打开
    ExSheet.Activate '激活工作表
      

  2.   

    Ex.DisplayAlerts = False
    加进去试试
      

  3.   

    我试了,还是不行。
    加了这句之后,当我运行程序后,第二次点击“保存(合格)”按钮或者“保存(不合格)”按钮,貌似写入excel保存了,但是在我设定的路径下并没有重新生成的excel。
    究竟怎么回事啊,望高手帮忙。
      

  4.   

    ActiveWorkbook.SaveAs 改为 Ex.ActiveWorkbook.SaveAs