VB中引用Excel属性

VB中引用Excel属性,第1张

概述1.创建Excel对象   eole=CREATEOBJECT(′Excel.application′)   2.添加新工作簿   eole.Workbooks.add   3.设置第3个工作表为激活工作表   eole.Worksheets(″sheet3″).Activate   4.打开指定工作簿   eole.Workbooks.Open(″c:\temp\ll.xls″)   5.显示E 1.创建Excel对象

  eole=CREATEOBJECT(′Excel.application′)

  2.添加新工作簿

  eole.Workbooks.add

  3.设置第3个工作表为激活工作表

  eole.Worksheets(″sheet3″).Activate

  4.打开指定工作簿

  eole.Workbooks.Open(″c:\temp\ll.xls″)

  5.显示Excel窗口

  eole.visible=.t.

  6.更改Excel标题栏

  eole.Caption=″VFP应用程序调用Microsoft Excel″

  7.给单元格赋值

  eole.cells(1,4).value=XM(XM为数据库字段名)

  8.设置指定列的宽度(单位:字符个数)

  eole.ActiveSheet.Columns(1).ColumnWIDth=5

  9.设置指定行的高度(单位:磅)

  eole.ActiveSheet.Rows(1).RowHeight=1/0.035

  (设定行高为1厘米,1磅=0.035厘米)

  10.在第18行之前插入分页符

  eole.Worksheets(″Sheet1″).Rows(18).PageBreak=1

  11.在第4列之前删除分页符

  eole.ActiveSheet.Columns(4).PageBreak=0

  12.指定边框线宽度(borders参数如下)

  ole.ActiveSheet.Range(″b3:d3″).borders(2).Weight=3

  13.设置四个边框线条的类型

  eole.ActiveSheet.Range(″b3:d3″).borders(2).linestyle=1

  (其中borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;linestyle值:1与7-细实、2-细虚、4-点虚、9-双细 实线)

  14.设置页眉

  eole.ActiveSheet.PageSetup.Centerheader=″报表1″

  15.设置页脚

  eole.ActiveSheet.PageSetup.CenterFooter=″第&P页″

  16.设置页眉到顶端边距为2厘米

  eole.ActiveSheet.PageSetup.headermargin=2/0.035

  17.设置页脚到底边距为3厘米

  eole.ActiveSheet.PageSetup.Footermargin=3/0.035

  18.设置顶边距为2厘米

  eole.ActiveSheet.PageSetup.topmargin=2/0.035

  19.设置底边距为4厘米

  eole.ActiveSheet.PageSetup.Bottommargin=4/0.035

  20.设置左边距为2厘米

  veole.ActiveSheet.PageSetup.leftmargin=2/0.035

  21.设置右边距为2厘米

  eole.ActiveSheet.PageSetup.Rightmargin=2/0.035

  22.设置页面水平居中

  eole.ActiveSheet.PageSetup.CenterHorizontally=.t.

  23.设置页面垂直居中

  eole.ActiveSheet.PageSetup.CenterVertically=.t.

  24.设置页面纸张大小(1-窄行8 5 11 39-宽行14 11)

  eole.ActiveSheet.PageSetup.PaperSize=1

  25.打印单元格网线

  eole.ActiveSheet.PageSetup.PrintGrIDlines=.t.

  26.拷贝整个工作表

  eole.ActiveSheet.UsedRange.copy

  27.拷贝指定区域

  eole.ActiveSheet.Range(″A1:E2″).copy

  28.粘贴

  eole.WorkSheet(″Sheet2″).Range(″A1″).PasteSpecial

  29.在第2行之前插入一行

  eole.ActiveSheet.Rows(2).Insert

  30.在第2列之前插入一列

  eole.ActiveSheet.Columns(2).Insert

  31.设置字体

  eole.ActiveSheet.Cells(2,1).Font.name=″黑体″

  32.设置字体大小

  eole.ActiveSheet.Cells(1,1).Font.Size=25

  33.设置字体为斜体

  eole.ActiveSheet.Cells(1,1).Font.Italic=.t.

  34.设置整列字体为粗体

  eole.ActiveSheet.Columns(1).Font.Bold=.t.

  35.清除单元格公式

  eole.ActiveSheet.Cells(1,4).ClearContents

  36.打印预览工作表

  eole.ActiveSheet.PrintPrevIEw

  37.打印输出工作表

  eole.ActiveSheet.PrintOut

  38.工作表另为

  eole.ActiveWorkbook.SaveAs(″c:\temp\22.xls″)

  39.放弃存盘

  eole.ActiveWorkbook.saved=.t.

  40.关闭工作簿

  eole.Workbooks.close

  41.退出Excel

  eole.quit
------------------------------------------------------------------------------------------------

◆访问EXCEL:ExcelSheet = Getobject('','Excel.Sheet')
返回结果为类,则成功。例:
ExcelSheet = Getobject('','Excel.Sheet')
If Type("ExcelSheet")#'O' THEN
=MessageBox( "访问Excel失败!请检查你的系统是否正确安装 Excel 软件!",48,"Excel不正常")
RETURN
ENDIF

◆创建EXCEL实例:oExcel=CreateObject("Excel.Application")
该实例创建后,任何对EXCEL的 *** 作都针对该实例进行,关闭EXCEL后应释放该实例变量:RELEASE oExcel

◆打开已存在的EXCEL文件:oExcel.WorkBooks.Open("&lcfilename") &&lcfilename为Excel文件名
打开带有读写密码的文 件:oExcel.WorkBooks.Open("&lcfilename",.F.,"&R_Pwd","&W_Pwd") &&lcfilename-文件名,R_Pwd-读密码,W_Pwd-写密码,第二个参数表示读写方式:.T.只读,.F.读写

◆设置新增工作薄的工作表数:oExcel.SheetsInNewWorkbook=1 &&新建工作表数量定为1个

◆新增EXCEL工作薄:oExcel.WorkBooks.Add

◆当前工作薄工作表总数:oExcel.WorkSheets.Count &&如:lnSheetCnt=oExcel.WorkSheets.count

◆新增EXCEL工作表:oExcel.Sheets.Add &&不带参数为增加至当前工作表之前
在指定工作表后新建工作表:oExcel.Sheets.Add(,oExcel.Sheets(lnSheet),1,-4167) &&lnSheet为指定表号
在最后工作表后新建工作表:oExcel.Sheets.Add(,lnSheetsCnt,-4167) &&lnSheetCnt为工作表总数

◆激活工作表:oExcel.WorkSheets("Sheet1").Activate &&激活工作表1
删除工作表:oExcel.WorkSheets("Sheet2").Delete &&删除工作表2
命名工作表:oExcel.WorkSheets("Sheet3").name="新表" &&重命名工作表3

◆使EXCEL可视:oExcel.Vsible=.T.

◆Excel的窗口控制:oExcel.windowstate = -4140 &&最小化=-4140,最大化=-4137,还原=-4143

◆后台 *** 作报警关闭:oExcel.displayAlerts=.F. &&关闭(.F.) 打开(.T.)

◆设置工作薄的标题:oExcel.Caption="Vfp控制Excel *** 作"

◆当前工作薄换名存盘:oExcel.ActiveWorkBook.SaveAs("&lcfilename")
换名存为文本文件:oExcel.ActiveWorkBook.Saveas("&lcfilename",-4158)

◆工作薄存盘:oExcel.WorkBooks.Save

◆关闭工作薄:oExcel.WorkBooks.Close

◆退出EXCEL:oExcel.Quit &&关闭EXCEL后通常应释放实例变量:Release oExcel

◆打印当前工作簿:oExcel.ActiveWorkBook.PrintOut(1,oExcel.WorkSheets.count,.T.)
*默认直接打印整个工作簿:oExcel.ActiveWorkBook.PrintOut()
*参数1-数值:当前工作簿中进行打印的起始工作表号(默认1)
*参数2-数值:当前工作簿中进行打印的结束工作表号(默认最末)
*参数3-数值:打印份数(默认1)
*参数4-是预览打印还是直接打印:.T.-预览打印,.F.-直接打印(默认.F.)

◆打印当前工作表:oExcel.ActiveSheet.PrintOut() &&共八个参数
*参数1-数值:起始页号,省略则默认为开始位置
*参数2-数值:终止页号,省略则默认为最后一页
*参数3-数值:打印份数,省略则默认为1份
*参数4-逻辑值:是否预览,省略则默认为直接打印(.F.)
*参数5-字符值:设置活动打印机名称,省略则为默认打印机
*参数6-逻辑值:是否输出到文件,省略则默认为否(.F.),若选.T.且参数8为空,则Excel提示输入要输出的文件名
*参数7-逻辑值:输出类型,省略则默认为(.T.)逐份打印,否则逐页打印
*参数8-字符值:当参数6为.T.时,设置要打印到的文件名

◆预览当前工作表:oExcel.ActiveSheet.PrintPrevIEw

◆当前工作表页面设置:oExcel.ActiveSheet.PageSetup &&如:
With oExcel.ActiveSheet.PageSetup
.CenterFooter="第"+"&P"+"页 共"+"&N"+"页" &&页脚中间
.leftFooter="制表人:"+AllTrim(lcUsername) &&页脚左边
.rightfooter="制表日期:"+Dtoc(Date()) &&页脚右边
.topmargin=2.5/0.035 &&顶边距
.Bottommargin=2.5/0.035 &&底边距
.leftmargin=1.4/0.035 &&左边距
.Rightmargin=0.5/0.035 &&右边距
.Footermargin=3.5/0.035 &&脚高距
.PrintTitleRows = "$1:$3" &&固定打印的顶端标题行(第1-3行)
.OrIEntation = 1 &&打印方向: 1为纵向,2为横向
.PaperSize=9 &&纸张类型: A4(注意:不同打印机与版本可能有不同)
.PrintQuality = 180 &&打印精度
EnDWith

◆从包含大量内含公式的EXCEL文件导至DBF中时,直接转换会出现致命错误,这时可选择将EXCEL另存为文本文件再导至DBF中可保数据不丢失:
oExcel.WorkBooks.Open('D:\123.xls')
oExcel.ActiveWorkBook.Saveas('D:\123.txt',-4158 ) &&注意参数-4158不能错

◆若判断EXCEL或某个XLS文件是否已经打开(避免不可预知的错误发生):
LOCAL loldSetopt,mChanNum
loldSetopt = DDESetoption("SAFETY")
= DDESetoption("SAFETY",.F.)
mChanNum = DDEInitiate('Excel','SYstem') &&EXCEL是否已经打开
**mChanNum = DDEInitiate('Excel','&lcfilename') &&lcfilename某XLS文件名,如:D:\123.XLS
IF mChanNum <> -1
= messageBox('程序 EXCEL 已经打开,请先将其关闭!',64,'系统提示!')
** = messageBox('文件 '+lcfilename+' 已经打开,请先将其关闭!','系统提示!')
= DDETerminate(mChanNum)
= DDESetoption("SAFETY",loldSetopt)
RETURN
ENDIF

Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象
Set xlBook = xlApp.Workbooks.Open(App.Path & "\文件名.xls") '打开已经存在的EXCEL工件簿文件
xlApp.Visible = True '设置EXCEL对象可见(或不可见)
Set xlSheet = xlBook.Worksheets("sheel1") '设置活动工作表,sheet1表示表名,可以使用字符型变量代替。
xlSheet.Activate '激活工作表,让它处于前台活动中。
xlBook.RunautoMacros (xlautoOpen) '运行自动开启宏Macro1(),在EXCEL中加入以下宏
'Sub auto_open() '这是VBA中的自动打开时运行的宏
' 您要宏自动运行的程序,比如可以call其它的宏,这样VB在打开EXCEL时,使用上面的语句就可以先运行这个宏
'End Sub
xlSheet.Cells.Item(行数,列数) =值 '给EXCEL对象中的表的单元格附值。
xlSheet.Rows("7:7").Select '选定EXCEL表的第7行
xlApp.Selection.Delete shift:=xlUp '删除选定的行
xlSheet.Rows(7).Insert '在第7行处插入一行
ActiveSheet.PageSetup.Centerheader ="页眉内容" '给页眉附值
xlSheet.Range("f7:h7").Select '选定f7:h7之间的单元格,下面的程序是把它们合并。
Application.CutcopyMode = False
With xlApp.Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
.OrIEntation = 0
.Addindent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
-------------------------------------------------------------------------------------------------------------

刪除Excel中的全部宏
Private Function DelVba()
Application.displayAlerts = False
If ActiveWorkbook.VBProject.Protection = 0 And _
ActiveWorkbook.ProtectStructure = False Then

'刪除程式碼
Dim OJB As Object
For Each OJB In ActiveWorkbook.VBProject.VBComponents
If OJB.Type <> 100 Then
ActiveWorkbook.VBProject.VBComponents.Remove OJB
Else
OJB.codemodule.Deletelines 1,OJB.codemodule.CountOflines
End If
Next

'刪除宏表
For Each Nx In ActiveWorkbook.Excel4MacroSheets
Nx.Delete
Next
ActiveWorkbook.Close SaveChanges:=True
Else
Dim filename As String,Funame As String
fname = ActiveWorkbook.name
Funame = ActiveWorkbook.Fullname
Sheets.copy
Workbooks(fname).Close SaveChanges:=False

'刪除程式碼
For Each OJB In ActiveWorkbook.VBProject.VBComponents
If OJB.Type <> 100 Then
ActiveWorkbook.VBProject.VBComponents.Remove OJB
Else
OJB.codemodule.Deletelines 1,OJB.codemodule.CountOflines
End If
Next

'刪除宏表
For Each Nx In ActiveWorkbook.Excel4MacroSheets
Nx.Delete
Next

ActiveWorkbook.Close SaveChanges:=True,filename:=Funame
End If
Application.displayAlerts = True
End Function
-------------------------------------------------------------------------------------------------------------

引用EXCEL
引用Microsoft Visual Basic for Applications Extensibility
Private Sub Command1_Click()
Dim xl As Excel.Application
Dim bk As Workbook
Dim xlcomp As VBComponent
Set xl = New Excel.Application
Set bk = xl.Workbooks.Add
On Error Resume Next
Set xlcomp = xl.VBE.VBProjects(1).VBComponents.Add(vbext_ct_StdModule)
If Err.Number <> 0 Then MsgBox Err.Description & Chr(10) & "请设置EXCEL中的宏安全性---可靠来源": Exit Sub
xlcomp.codemodule.AddFromString "sub gg()" & Chr(10) _
& "msgBox " & """" & "OK" & """" & Chr(10) _
& "end sub"
xl.Visible = True
xl.Run "gg"
End Sub
以上是exel,下面是word哈哈,这个问题我自己解决了,我这个打开别人的文件并且加入了宏,实现痕迹保留,注意这个技术不许用来开发宏病毒!!
Private Sub Command1_Click()
Dim wd As Word.Application
Dim mydoc As document
Dim xlcomp As VBComponent
Set wd = New Word.Application

Set mydoc = wd.documents.Open("D:\documents and Settings\pw-panyg\My documents\f.doc")
On Error Resume Next
Set xlcomp = wd.VBE.VBProjects(1).VBComponents.Add(vbext_ct_StdModule)
If Err.Number <> 0 Then MsgBox Err.Description & Chr(10) & "请设置word中的宏安全性---可靠来源": Exit Sub
xlcomp.codemodule.AddFromString "sub MySub()" & Chr(10) _
& "With Activedocument" & Chr(10) _
& ".TrackRevisions = True" & Chr(10) _
& ".PrintRevisions = False" & Chr(10) _
& "ShowRevisions = True" & Chr(10) _
& "End With" & Chr(10) _
& "UpdateStylesOnopen = True" & Chr(10) _
& "end sub"


wd.Visible = True
wd.Run "MySub"
End Sub

---------------------------------------------------------------------------------------------------------------------

Sub SetExcelVBA()
'练习
'功能:改变Excel的安全级别
'使用:Wscript,fileSystemObject,创建txt文件,注册表 *** 作,VBS文件自我删除,改变Excel文件读写属性
'By Keanjeason@Officefans.net Dim WSH As Object,ret As String,regStr As String Dim strFullname As String,strVBS As String Dim tf,fso,RetVal '本程序仅适用于Excel 2003( 11.0),如果当前版本不是2003则退出 If Application.Version <> "11.0" Then MsgBox "本代码仅在 Excel 2003 下可使用! ",vbOKOnly + vbCritical,"Keanjeason": Exit Sub strFullname = ThisWorkbook.Fullname '取得当前工作薄的全名 strVBS = Replace(UCase(strFullname),".XLS",".vbs") 'temp文件VBS的文件名 Set WSH = CreateObject("Wscript.Shell") '创建Wscript对象 Err.Clear On Error Resume Next regStr = "HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security\Level" '注册表中Excel vba安全级别位置 ret = WSH.RegRead(regStr) '读取当前安全级别 If Err.Number <> 0 Then '判断读取是否成功 MsgBox "从注册表读取当前Excel VBA安全级别设置失败,本程序将退出! ","Keanjeason" Exit Sub Else '如果当前Excel VBA安全级别不为“低”,则设置为“低”,值1-4分别对应:低,中,高,非常高 If Val(ret) <> 1 Then ret = WSH.RegWrite(regStr,"1","REG_DWORD") End If Set fso = CreateObject("Scripting.fileSystemObject") Set tf = fso.CreateTextfile(strVBS,True) '创建temp文件VBS文件 With tf '写入VBS文件内容 .Writeline ("Dim oExcel,delme") .Writeline ("Set fso = CreateObject(""Scripting.fileSystemObject"")") .Writeline ("Set oExcel = CreateObject(""excel.application"")") .Writeline ("oExcel.Workbooks.Open " & Chr(34) & strFullname & Chr(34)) .Writeline ("oExcel.Visible=true") .Writeline ("Set oExcel = nothing") .Writeline ("delme = fso.Deletefile(" & Chr(34) & strVBS & Chr(34) & ")") .Close End With With ThisWorkbook '将当前文件属性设置为“只读”,以方便重新打开 .ChangefileAccess Mode:=xlReadonly .Saved = True End With RetVal = WSH.Run(Chr(34) & strVBS & Chr(34),True) '运行刚刚创建的VBS文件,新启动一个Excel程序 Application.Quit '退出当前Excel Set WSH = nothing Set fso = nothing End Sub

总结

以上是内存溢出为你收集整理的VB中引用Excel属性全部内容,希望文章能够帮你解决VB中引用Excel属性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1285818.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存