VBS连接EXCEL及其操作

VBS连接EXCEL及其操作
VBS连接EXCEL及其操作

操作

及其操作

VBS连接EXCEL及其(一) 使用动态创建的方法

首先创建Excel 对象,使用ComObj:

oExcel = CreateObject( "Excel.Application" )

1) 显示当前窗口:

oExcel.Visible = True

2) 更改Excel 标题栏:

oExcel.Caption = "应用程序调用Microsoft Excel"

3) 添加新工作簿:

oExcel.WorkBooks.Add

4) 打开已存在的工作簿:

oExcel.WorkBooks.Open( "C:\Excel\Demo.xls" )

5) 设置第2个工作表为活动工作表:

oExcel.WorkSheets(2).Activate

oExcel.WorksSheets( "Sheet2" ).Activate

6) 给单元格赋值:

oExcel.Cells(1,4).Value = "第一行第四列"

7) 设置指定列的宽度(单位:字符个数),以第一列为例:

oExcel.ActiveSheet.Columns(1).ColumnsWidth = 5

8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:oExcel.ActiveSheet.Rows(2).RowHeight = 1/0.035 ' 1厘米

9) 在第8行之前插入分页符:

oExcel.WorkSheets(1).Rows(8).PageBreak = 1

10) 在第8列之前删除分页符:

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

11) 指定边框线宽度:

oExcel.ActiveSheet.Range( "B3:D4" ).Borders(2).Weight = 3

1-左2-右3-顶4-底5-斜( \ ) 6-斜( / )

12) 清除第一行第四列单元格公式:

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

13) 设置第一行字体属性:

oExcel.ActiveSheet.Rows(1)https://www.360docs.net/doc/3816821945.html, = "隶书"

oExcel.ActiveSheet.Rows(1).Font.Color = clBlue

oExcel.ActiveSheet.Rows(1).Font.Bold = True

oExcel.ActiveSheet.Rows(1).Font.UnderLine = True

14) 进行页面设置:

a.页眉:

oExcel.ActiveSheet.PageSetup.CenterHeader = "报表演示"

b.页脚:

oExcel.ActiveSheet.PageSetup.CenterFooter = "第&P页"

c.页眉到顶端边距2cm:

oExcel.ActiveSheet.PageSetup.HeaderMargin = 2/0.035

d.页脚到底端边距3cm:

oExcel.ActiveSheet.PageSetup.HeaderMargin = 3/0.035

e.顶边距2cm:

oExcel.ActiveSheet.PageSetup.TopMargin = 2/0.035

f.底边距2cm:

oExcel.ActiveSheet.PageSetup.BottomMargin = 2/0.035 g.左边距2cm:

oExcel.ActiveSheet.PageSetup.LeftMargin = 2/0.035

h.右边距2cm:

oExcel.ActiveSheet.PageSetup.RightMargin = 2/0.035

i.页面水平居中:

oExcel.ActiveSheet.PageSetup.CenterHorizontally = 2/0.035 j.页面垂直居中:

oExcel.ActiveSheet.PageSetup.CenterVertically = 2/0.035 k.打印单元格网线:

oExcel.ActiveSheet.PageSetup.PrintGridLines = True

15) 拷贝操作:

a.拷贝整个工作表:

https://www.360docs.net/doc/3816821945.html,ed.Range.Copy

b.拷贝指定区域:

oExcel.ActiveSheet.Range( "A1:E2" ).Copy c.从A1位置开始粘贴:

oExcel.ActiveSheet.Range.( "A1" ).PasteSpecial d.从文件尾部开始粘贴:

oExcel.ActiveSheet.Range.PasteSpecial

16) 插入一行或一列:

a. oExcel.ActiveSheet.Rows(2).Insert

b. oExcel.ActiveSheet.Columns(1).Insert

17) 删除一行或一列:

a. oExcel.ActiveSheet.Rows(2).Delete

b. oExcel.ActiveSheet.Columns(1).Delete

18) 打印预览工作表:

oExcel.ActiveSheet.PrintPreview

19) 打印输出工作表:

oExcel.ActiveSheet.PrintOut

20) 工作表保存:

if not oExcel.ActiveWorkBook.Saved then oExcel.ActiveSheet.PrintPreview

21) 工作表另存为:

oExcel.SaveAs( "C:\Excel\Demo1.xls" )

22) 放弃存盘:

oExcel.ActiveWorkBook.Saved = True

23) 关闭工作簿:

oExcel.WorkBooks.Close

24) 退出Excel:

oExcel.Quit

(二) 使用VBS 控制Excle二维图

1)选择当第一个工作薄第一个工作表

set oSheet=oExcel.Workbooks(1).Worksheets(1)

2)增加一个二维图

achart=oSheet.chartobjects.add(100,100,200,200)

3)选择二维图的形态

achart.chart.charttype=4

4)给二维图赋值

set series=achart.chart.seriescollection

range="sheet1!r2c3:r3c9"

series.add range,true

5)加上二维图的标题

achart.Chart.HasTitle=True

achart.Chart.ChartTitle.Characters.Text=" Excle二维图"

6)改变二维图的标题字体大小

achart.Chart.ChartTitle.Font.size=18

7)给二维图加下标说明

achart.Chart.Axes(xlCategory, xlPrimary).HasTitle = True

achart.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "下标说明"

8)给二维图加左标说明

achart.Chart.Axes(xlValue, xlPrimary).HasTitle = True

achart.Chart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "左标说明"

9)给二维图加右标说明

achart.Chart.Axes(xlValue, xlSecondary).HasTitle = True

achart.Chart.Axes(xlValue, xlSecondary).AxisTitle.Characters.Text = "右标说明"

10)改变二维图的显示区大小achart.Chart.PlotArea.Left = 5 achart.Chart.PlotArea.Width = 223 achart.Chart.PlotArea.Height = 108

最近有不少人在问QTP操作Excel的问题,其实QTP安装目录中的CodePlusSample里面就有一个名为“UsingExcel.vbs”的文件,里面有很多操作Excel的函数:

Dim ExcellApp 'As Excel.Application

Dim excelSheet1 'As Excel.worksheet

Dim excelSheet2 'As Excel.worksheet

Set ExcelApp = CreateExcel()

'Create a workbook with two worksheets

ret = RenameWorksheet(ExcelApp, "Book1", "Sheet1", "Example1 Sheet Name")

ret = RenameWorksheet(ExcelApp, "Book1", "Sheet2", "Example2 Sheet Name")

ret = RemoveWorksheet(ExcelApp, "Book1", "Sheet3")

'SaveAs the work book

ret = SaveWorkbook(ExcelApp, "Book1", "D:\Example1.xls")

'Fill worksheets

Set excelSheet1 = GetSheet(ExcelApp, "Example1 Sheet Name")

Set excelSheet2 = GetSheet(ExcelApp, "Example2 Sheet Name")

For column = 1 to 10

For row = 1 to 10

SetCellValue excelSheet1, row, column, row + column

SetCellValue excelSheet2, row, column, row + column

Next

Next

'Compare the two worksheets

ret = CompareSheets(excelSheet1, excelSheet2, 1, 10, 1, 10, False)

If ret Then

MsgBox "The two worksheets are identical"

End If

'Change the values in one sheet

SetCellValue excelSheet1, 1, 1, "Yellow"

SetCellValue excelSheet2, 2, 2, "Hello"

'Compare the worksheets again

ret = CompareSheets(excelSheet1, excelSheet2, 1, 10, 1, 10, True)

If Not ret Then

MsgBox "The two worksheets are not identical"

End If

'save the workbook by index identifier

SaveWorkbook ExcelApp, 1, ""

'Close the Excel application

CloseExcel ExcelApp

' ****************************************** Function Library ***********************************************************

Dim ExcelApp 'As Excel.Application

Dim excelSheet 'As Excel.worksheet

Dim excelBook 'As Excel.workbook

Dim fso 'As Scripting.FileSystemObject

' This function will return a new Excel Object with a default new Workbook

Function CreateExcel() 'As Excel.Application

Dim excelSheet 'As Excel.worksheet

Set ExcelApp = CreateObject("Excel.Application") 'Create a new excel Object

ExcelApp.Workbooks.Add

ExcelApp.Visible = True

Set CreateExcel = ExcelApp

End Function

'This function will close the given Excel Object

'excelApp - an Excel application object to be closed

Sub CloseExcel(ExcelApp)

Set excelSheet = ExcelApp.ActiveSheet

Set excelBook = ExcelApp.ActiveWorkbook

Set fso = CreateObject("Scripting.FileSystemObject")

On Error Resume Next

fso.CreateFolder "C:\Temp"

fso.DeleteFile "C:\Temp\ExcelExamples.xls"

excelBook.SaveAs "C:\Temp\ExcelExamples.xls"

ExcelApp.Quit

Set ExcelApp = Nothing

Set fso = Nothing

Err = 0

On Error GoTo 0

End Sub

'The SaveWorkbook method will save a workbook according to the workbookIdentifier

'The method will overwrite the previously saved file under the given path

'excelApp - a reference to the Excel Application

'workbookIdentifier - The name or number of the requested workbook

'path - the location to which the workbook should be saved

'Return "OK" on success and "Bad Workbook Identifier" on failure

Function SaveWorkbook(ExcelApp, workbookIdentifier, path) 'As String Dim workbook 'As Excel.workbook

On Error Resume Next

Set workbook = ExcelApp.Workbooks(workbookIdentifier)

On Error GoTo 0

If Not workbook Is Nothing Then

If path = "" Or path = workbook.FullName Or path = https://www.360docs.net/doc/3816821945.html, Then workbook.Save

Else

Set fso = CreateObject("Scripting.FileSystemObject")

'if the path has no file extension then add the 'xls' extension

If InStr(path, ".") = 0 Then

path = path & ".xls"

End If

On Error Resume Next

fso.DeleteFile path

Set fso = Nothing

Err = 0

On Error GoTo 0

workbook.SaveAs path

End If

SaveWorkbook = "OK"

Else

SaveWorkbook = "Bad Workbook Identifier"

End If

End Function

'The SetCellValue method sets the given 'value' in the cell which is identified by

'its row column and parent Excel sheet

'excelSheet - the excel sheet that is the parent of the requested cell

'row - the cell's row in the excelSheet

'column - the cell's column in the excelSheet

'value - the value to be set in the cell

Sub SetCellValue(excelSheet, row, column, value)

On Error Resume Next

excelSheet.Cells(row, column) = value

On Error GoTo 0

End Sub

'The GetCellValue returns the cell's value according to its row column and sheet

'excelSheet - the Excel Sheet in which the cell exists

'row - the cell's row

'column - the cell's column

'return 0 if the cell could not be found

Function GetCellValue(excelSheet, row, column)

value = 0

Err = 0

On Error Resume Next

tempValue = excelSheet.Cells(row, column)

If Err = 0 Then

value = tempValue

Err = 0

End If

On Error GoTo 0

GetCellValue = value

End Function

'The GetSheet method returns an Excel Sheet according to the sheetIdentifier

'ExcelApp - the Excel application which is the parent of the requested sheet

'sheetIdentifier - the name or the number of the requested Excel sheet

'return Nothing on failure

Function GetSheet(ExcelApp, sheetIdentifier) 'As Excel.worksheet

On Error Resume Next

Set GetSheet = ExcelApp.Worksheets.Item(sheetIdentifier)

On Error GoTo 0

End Function

'The InsertNewWorksheet method inserts an new worksheet into the active workbook or

'the workbook identified by the workbookIdentifier, the new worksheet will get a default

'name if the sheetName parameter is empty, otherwise the sheet will have the sheetName

'as a name.

'Return - the new sheet as an Object

'ExcelApp - the excel application object into which the new worksheet should be added

'workbookIdentifier - an optional identifier of the worksheet into which the new worksheet should be added

'sheetName - the optional name of the new worksheet.

Function InsertNewWorksheet(ExcelApp, workbookIdentifier, sheetName) 'As Excel.worksheet Dim workbook 'As Excel.workbook

Dim worksheet 'As Excel.worksheet

'In case that the workbookIdentifier is empty we will work on the active workbook

If workbookIdentifier = "" Then

Set workbook = ExcelApp.ActiveWorkbook

Else

On Error Resume Next

Err = 0

Set workbook = ExcelApp.Workbooks(workbookIdentifier)

If Err <> 0 Then

Set InsertNewWorksheet = Nothing

Err = 0

Exit Function

End If

On Error GoTo 0

End If

sheetCount = workbook.Sheets.Count

workbook.Sheets.Add , sheetCount

Set worksheet = workbook.Sheets(sheetCount + 1)

'In case that the sheetName is not empty set the new sheet's name to sheetName

If sheetName <> "" Then

https://www.360docs.net/doc/3816821945.html, = sheetName

End If

Set InsertNewWorksheet = worksheet

End Function

'The RenameWorksheet method renames a worksheet's name

'ExcelApp - the excel application which is the worksheet's parent

'workbookIdentifier - the worksheet's parent workbook identifier

'worksheetIdentifier - the worksheet's identifier

'sheetName - the new name for the worksheet

Function RenameWorksheet(ExcelApp, workbookIdentifier, worksheetIdentifier, sheetName) 'As String

Dim workbook 'As Excel.workbook

Dim worksheet 'As Excel.worksheet

On Error Resume Next

Err = 0

Set workbook = ExcelApp.Workbooks(workbookIdentifier)

If Err <> 0 Then

RenameWorksheet = "Bad Workbook Identifier"

Err = 0

Exit Function

End If

Set worksheet = workbook.Sheets(worksheetIdentifier)

If Err <> 0 Then

RenameWorksheet = "Bad Worksheet Identifier"

Err = 0

Exit Function

End If

https://www.360docs.net/doc/3816821945.html, = sheetName

RenameWorksheet = "OK"

End Function

'The RemoveWorksheet method removes a worksheet from a workbook

'ExcelApp - the excel application which is the worksheet's parent

'workbookIdentifier - the worksheet's parent workbook identifier

'worksheetIdentifier - the worksheet's identifier

Function RemoveWorksheet(ExcelApp, workbookIdentifier, worksheetIdentifier) 'As String Dim workbook 'As Excel.workbook

Dim worksheet 'As Excel.worksheet

On Error Resume Next

Err = 0

Set workbook = ExcelApp.Workbooks(workbookIdentifier)

If Err <> 0 Then

RemoveWorksheet = "Bad Workbook Identifier"

Exit Function

End If

Set worksheet = workbook.Sheets(worksheetIdentifier)

If Err <> 0 Then

RemoveWorksheet = "Bad Worksheet Identifier"

Exit Function

End If

worksheet.Delete

RemoveWorksheet = "OK"

End Function

'The CreateNewWorkbook method creates a new workbook in the excel application

'ExcelApp - the Excel application to which an new Excel workbook will be added

Function CreateNewWorkbook(ExcelApp)

Set NewWorkbook = ExcelApp.Workbooks.Add()

Set CreateNewWorkbook = NewWorkbook

End Function

'The OpenWorkbook method opens a previously saved Excel workbook and adds it to the Application

'excelApp - the Excel Application the workbook will be added to

'path - the path of the workbook that will be opened

'return Nothing on failure

Function OpenWorkbook(ExcelApp, path)

On Error Resume Next

Set NewWorkbook = ExcelApp.Workbooks.Open(path)

Set OpenWorkbook = NewWorkbook

On Error GoTo 0

End Function

'The ActivateWorkbook method sets one of the workbooks in the application as Active workbook 'ExcelApp - the workbook's parent excel Application

'workbookIdentifier - the name or the number of the workbook

Sub ActivateWorkbook(ExcelApp, workbookIdentifier)

On Error Resume Next

ExcelApp.Workbooks(workbookIdentifier).Activate

On Error GoTo 0

End Sub

'The CloseWorkbook method closes an open workbook

'ExcelApp - the parent Excel application of the workbook

'workbookIdentifier - the name or the number of the workbook

Sub CloseWorkbook(ExcelApp, workbookIdentifier)

On Error Resume Next

ExcelApp.Workbooks(workbookIdentifier).Close

On Error GoTo 0

End Sub

'The CompareSheets method compares between two sheets.

'if there is a difference between the two sheets then the value in the second sheet

'will be changed to red and contain the string:

'"Compare conflict - Value was 'Value2', Expected value is 'value2'"

'sheet1, sheet2 - the excel sheets to be compared

'startColumn - the column to start comparing in the two sheets

'numberOfColumns - the number of columns to be compared

'startRow - the row to start comparing in the two sheets

'numberOfRows - the number of rows to be compared

Function CompareSheets(sheet1, sheet2, startColumn, numberOfColumns, startRow, numberOfRows, trimed) 'As Boolean

Dim returnVal 'As Boolean

returnVal = True

'In case that one of the sheets doesn't exists, don't continue the process

If sheet1 Is Nothing Or sheet2 Is Nothing Then

CompareSheets = False

Exit Function

End If

'loop through the table and fill values into the two worksheets

For r = startRow to (startRow + (numberOfRows - 1))

For c = startColumn to (startColumn + (numberOfColumns - 1))

Value1 = sheet1.Cells(r, c)

Value2 = sheet2.Cells(r, c)

'if 'trimed' equels True then used would like to ignore blank spaces

If trimed Then

Value1 = Trim(Value1)

Value2 = Trim(Value2)

End If

'in case that the values of a cell are not equel in the two worksheets

'create an indicator that the values are not equel and set return value

'to False

If Value1 <> Value2 Then

Dim cell 'As Excel.Range

sheet2.Cells(r, c) = "Compare conflict - Value was '" & Value2 & "', Expected value is '" & Value1 & "'."

Set cell = sheet2.Cells(r, c)

cell.Font.Color = vbRed

returnVal = False

End If

Next

Next

CompareSheets = returnVal

End Function

本文来自CSDN博客,转载请标明出处:https://www.360docs.net/doc/3816821945.html,/Testing_is_believing/archive/2008/07/04/2612221.aspx

用VBS操控EXCEL命令

首先创建Excel 对象,使用ComObj:

oExcel = CreateObject( "Excel.Application" )

1) 显示当前窗口:

oExcel.Visible = True

2) 更改Excel 标题栏:

oExcel.Caption = "应用程序调用Microsoft Excel"

3) 添加新工作簿:

oExcel.WorkBooks.Add

4) 打开已存在的工作簿:

oExcel.WorkBooks.Open( "C:\Excel\Demo.xls" )

5) 设置第2个工作表为活动工作表:

oExcel.WorkSheets(2).Activate

oExcel.WorksSheets( "Sheet2" ).Activate

6) 给单元格赋值:

oExcel.Cells(1,4).Value = "第一行第四列"

7) 设置指定列的宽度(单位:字符个数),以第一列为例:

oExcel.ActiveSheet.Columns(1).ColumnsWidth = 5

8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:oExcel.ActiveSheet.Rows(2).RowHeight = 1/0.035 ' 1厘米

9) 在第8行之前插入分页符:

oExcel.WorkSheets(1).Rows(8).PageBreak = 1

10) 在第8列之前删除分页符:

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

11) 指定边框线宽度:

oExcel.ActiveSheet.Range( "B3:D4" ).Borders(2).Weight = 3

1-左2-右3-顶4-底5-斜( \ ) 6-斜( / )

12) 清除第一行第四列单元格公式:

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

13) 设置第一行字体属性:

oExcel.ActiveSheet.Rows(1)https://www.360docs.net/doc/3816821945.html, = "隶书" oExcel.ActiveSheet.Rows(1).Font.Color = clBlue oExcel.ActiveSheet.Rows(1).Font.Bold = True

oExcel.ActiveSheet.Rows(1).Font.UnderLine = True

14) 进行页面设置:

a.页眉:

oExcel.ActiveSheet.PageSetup.CenterHeader = "报表演示"

b.页脚:

oExcel.ActiveSheet.PageSetup.CenterFooter = "第&P页"

c.页眉到顶端边距2cm:

oExcel.ActiveSheet.PageSetup.HeaderMargin = 2/0.035

d.页脚到底端边距3cm:

oExcel.ActiveSheet.PageSetup.HeaderMargin = 3/0.035

e.顶边距2cm:

oExcel.ActiveSheet.PageSetup.TopMargin = 2/0.035

f.底边距2cm:

oExcel.ActiveSheet.PageSetup.BottomMargin = 2/0.035 g.左边距2cm:

oExcel.ActiveSheet.PageSetup.LeftMargin = 2/0.035

h.右边距2cm:

oExcel.ActiveSheet.PageSetup.RightMargin = 2/0.035

i.页面水平居中:

oExcel.ActiveSheet.PageSetup.CenterHorizontally = 2/0.035 j.页面垂直居中:

oExcel.ActiveSheet.PageSetup.CenterVertically = 2/0.035 k.打印单元格网线:

oExcel.ActiveSheet.PageSetup.PrintGridLines = True

15) 拷贝操作:

a.拷贝整个工作表:

https://www.360docs.net/doc/3816821945.html,ed.Range.Copy

b.拷贝指定区域:

oExcel.ActiveSheet.Range( "A1:E2" ).Copy

c.从A1位置开始粘贴:

oExcel.ActiveSheet.Range.( "A1" ).PasteSpecial

d.从文件尾部开始粘贴:

oExcel.ActiveSheet.Range.PasteSpecial

16) 插入一行或一列:

a. oExcel.ActiveSheet.Rows(2).Insert

b. oExcel.ActiveSheet.Columns(1).Insert

17) 删除一行或一列:

a. oExcel.ActiveSheet.Rows(2).Delete

b. oExcel.ActiveSheet.Columns(1).Delete

18) 打印预览工作表:

oExcel.ActiveSheet.PrintPreview

19) 打印输出工作表:

oExcel.ActiveSheet.PrintOut

20) 工作表保存:

if not oExcel.ActiveWorkBook.Saved then oExcel.ActiveSheet.PrintPreview

21) 工作表另存为:

oExcel.SaveAs( "C:\Excel\Demo1.xls" )

22) 放弃存盘:

oExcel.ActiveWorkBook.Saved = True

23) 关闭工作簿:

oExcel.WorkBooks.Close

24) 退出Excel:

oExcel.Quit

Set oExcel = CreateObject("Excel.Application")

with oExcel

.Visible = True

.Workbooks.Open "C:\temp\text.xls"

.DisplayAlerts = False

.ActiveWorkbook.SaveAs "C:\temp\text.csv", 6, False end with

相关主题
相关文档
最新文档