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编辑过]

