vfp ActiveWorkbook.SaveAs 保存excel,怎么才能不自动打开。
vfp ActiveWorkbook.SaveAs 保存excel,怎么才能不自动打开。我有2个sheet要写入,是总表和分表,数据不同。我打算先用vfp打开模板,在名为“总表”的sheet写入数据后保存在C盘,然后再次打开C盘刚保存的文件,在名为“分表”的sheet中写入文件,然后在保存。这样同一个excel的2个sheet都写入数据。
数据可以写人,excel可以保存。现在的问题是,第一个保存在c盘的文件会被自动打开。如何让这个文件不开,在第二个excel保存后,这个文件自动删除。
程序代码:
mc=ALLTRIM(thisform.text1.Value)+"配电柜估价表" LOCAL lsWJM,OleApp,YXGZS,H m.lsWJM=PUTFILE("文件名:","&mc.XLS","XLS") IF EMPTY(m.lsWJM) RETURN ENDIF IF !FILE("模板文件.XLS") =MessageBox("请先创建Excel模板文件!",64,"系统提示") RETURN ENDIF sele cundao COPY TO SYS(2023)+"\TMPR.DBF" FIELDS 配电柜序号,产品名称,规格型号,单位,数量,单价,合计,品牌 FOR alltrim(项目名称)=ALLTRIM(thisform.text1.Value) FOX2X &&选择所需要的字段 count for 项目名称=ALLTRIM(thisform.text1.Value) to n &&统计符合条件的条数,用于下面画边框 OleApp=CREATEOBJECT("Excel.Application") WITH OleApp .DisplayAlerts=.F.&&屏蔽要保存excel的提示。 .Application.WorkBooks.Open(SYS(2023)+"\TMPR.DBF") .ActiveSheet.UsedRange.Select .Selection.Copy .Application.WorkBooks.Open(SYS(5)+SYS(2003)+"\模板文件.XLS") && 模板文件需要路径 OleApp.WORKSHEETS("分表").ACTIVATE &&修改后代码,选excel下面的sheet OleApp.ActiveSheet.Cells(12,1).value="工程名称:"+ALLTRIM(thisform.text1.Value) OleApp.ActiveSheet.Cells(10,7).value="日期:"+DTOC(thisform.text63.Value) .Range("A1").Select m.YXGZS=.Cells.Find("开始记录",.ActiveCell,-4123) IF VARTYPE(m.YXGZS)="O" m.YXGZS.Activate Release YXGZS m.H=.ActiveCell.Row .Selection.PasteSpecial(-4163,-4142,.F.,.F.) &&仅粘贴数值 .Rows(m.H).Select .Selection.Delete ELSE .Selection.PasteSpecial() .Selection.Columns.AutoFit ENDIF .Range("A1").Select _CLIPTEXT="" *---------------------以下用来画边框------------------------ k=17 FW='H16:H'+alltr(str(k+n)) &&H1可调为HX X=总表头行减2 OleApp.ActiveSheet.Range("&fw.").BorderS(2).LineStyle=1 OleApp.ActiveSheet.Range("&fw.").BorderS(2).Weight=3 FW='A'+alltr(str(k+n))+':H'+alltr(str(k+n)) OleApp.ActiveSheet.Range("&fw.").BorderS(4).LineStyle=1 OleApp.ActiveSheet.Range("&fw.").BorderS(4).Weight=3 FW='A16:A'+alltr(str(k+n)) &&H1可调为HX X=总表头行减2 OleApp.ActiveSheet.Range("&fw.").BorderS(1).LineStyle=1 OleApp.ActiveSheet.Range("&fw.").BorderS(1).Weight=3 FW='A16:H'+alltr(str(k+n)) &&画内边框 OleApp.ActiveSheet.Range("&fw.").BorderS(1).LineStyle=1 OleApp.ActiveSheet.Range("&fw.").BorderS(4).LineStyle=1 &&OleApp.ActiveSheet.Range("&fw.").BorderS(3).LineStyle=9 *---------------------以上用来画边框------------------------ OleApp.ActiveWindow.DisplayZeros=.F. &&当前屏不显示零值 .Application.Windows("TMPR.DBF").Activate .ActiveWindow.Close DELETE FILE SYS(2023)+"\TMPR.*" .ActiveWorkbook.SaveAs("C:\配电柜.XLS") .Application.Visible=.T. .DisplayAlerts=.T. *-----------------导出后的提示------------ * messagebox("导出完成!",16,"提示!") thisform.container4.Visible= .F. Thisform.container4.Timer2.Enabled = .F. *-----------------导出后的提示------------ ENDWITH RELEASE OleApp OleApp = Null sele cundao COPY TO SYS(2023)+"\TMPR.DBF" FIELDS 配电柜序号,配电柜编号,规格型号,电箱单位,电箱数量,电箱单价,合计,品牌 FOR alltrim(项目名称)=ALLTRIM(thisform.text1.Value) AND alltrim(产品名称)=thisform.label7.caption FOX2X &&选择所需要的字段 count for 项目名称=ALLTRIM(thisform.text1.Value) to n &&统计符合条件的条数,用于下面画边框 OleApp=CREATEOBJECT("Excel.Application") WITH OleApp .DisplayAlerts=.F. .Application.WorkBooks.Open(SYS(2023)+"\TMPR.DBF") .ActiveSheet.UsedRange.Select .Selection.Copy .Application.WorkBooks.Open("C:\配电柜.XLS") && 模板文件需要路径 OleApp.WORKSHEETS("总表").ACTIVATE &&修改后代码,选excel下面的sheet OleApp.ActiveSheet.Cells(12,1).value="工程名称:"+ALLTRIM(thisform.text1.Value) OleApp.ActiveSheet.Cells(10,7).value="日期:"+DTOC(thisform.text63.Value) .Range("A1").Select m.YXGZS=.Cells.Find("开始记录",.ActiveCell,-4123) IF VARTYPE(m.YXGZS)="O" m.YXGZS.Activate Release YXGZS m.H=.ActiveCell.Row .Selection.PasteSpecial(-4163,-4142,.F.,.F.) &&仅粘贴数值 .Rows(m.H).Select .Selection.Delete ELSE .Selection.PasteSpecial() .Selection.Columns.AutoFit ENDIF .Range("A1").Select _CLIPTEXT="" *---------------------以下用来画边框------------------------ k=17 FW='H16:H'+alltr(str(k+n)) &&H1可调为HX X=总表头行减2 OleApp.ActiveSheet.Range("&fw.").BorderS(2).LineStyle=1 OleApp.ActiveSheet.Range("&fw.").BorderS(2).Weight=3 FW='A'+alltr(str(k+n))+':H'+alltr(str(k+n)) OleApp.ActiveSheet.Range("&fw.").BorderS(4).LineStyle=1 OleApp.ActiveSheet.Range("&fw.").BorderS(4).Weight=3 FW='A16:A'+alltr(str(k+n)) &&H1可调为HX X=总表头行减2 OleApp.ActiveSheet.Range("&fw.").BorderS(1).LineStyle=1 OleApp.ActiveSheet.Range("&fw.").BorderS(1).Weight=3 FW='A16:H'+alltr(str(k+n)) &&画内边框 OleApp.ActiveSheet.Range("&fw.").BorderS(1).LineStyle=1 OleApp.ActiveSheet.Range("&fw.").BorderS(4).LineStyle=1 &&OleApp.ActiveSheet.Range("&fw.").BorderS(3).LineStyle=9 *---------------------以上用来画边框------------------------ .Application.Windows("TMPR.DBF").Activate .ActiveWindow.Close DELETE FILE SYS(2023)+"\TMPR.*" .ActiveWorkbook.SaveAs(m.lsWJM) .Application.Visible=.T. .DisplayAlerts=.T. ENDWITH RELEASE OleApp OleApp = Null
[此贴子已经被作者于2020-3-6 21:59编辑过]