加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

VB操作EXCEL

发布时间:2020-12-17 00:27:17 所属栏目:大数据 来源:网络整理
导读:一.设置excel对象,strDestPath是EXCEL数据源位置。 Private Function prepareExcel(ByVal strDestPath As String) Set exlApp = CreateObject("Excel.Application") Set book = exlApp.Workbooks.Open(strDestPath) End Function 二.操作EXCEL中的行列。 1.

一.设置excel对象,strDestPath是EXCEL数据源位置。
Private Function prepareExcel(ByVal strDestPath As String)
Set exlApp = CreateObject("Excel.Application")
Set book = exlApp.Workbooks.Open(strDestPath)

End Function

二.操作EXCEL中的行列。

1.行列的改变,strCell需要改变的单元格,intRowOffset行改变的数量,intColOffset列改变的数量,返回值为改变后的单元格。
Public Function changeRowColumn(ByVal strCell As String,ByVal intRowOffset As Integer,ByVal intColOffset As Integer) As String

Dim intRow,intCol As Integer
Dim strCell_Changed As String
intCol = Asc(Left$(strCell,1)) + intColOffset
intRow = Mid$(strCell,2) + intRowOffset
strCell_Changed = Chr$(intCol) & intRow
changeRowColumn = strCell_Changed

End Function

比如:strNewCell = changeRowColumn("A1",1,2)返回的单元格为B3。

2.复制给定的范围,strStartCell开始单元格,strEndCell结束单元格,intDestRow需要插入的目标行位置,intRowNum共需要插入的行数。

Public Function copyRange(ByVal strStartCell As String,ByVal strEndCell As String,ByVal intDestRow As Integer,sheet As Excel.Worksheet,ByVal intRowNum As Integer) As Integer

Dim intEndRow As Integer
Dim strCell As String
strCell = strStartCell
Range(strStartCell,strEndCell).Copy
If intRowNum > 0 Then
For i = intDestRow To intRowNum + intDestRow
strCell = changeRowColumn(strCell,0)
Range(strCell).Select
ActiveSheet.Paste
Next i
End If
intEndRow = i
copyRange = intEndRow

End Function
3.行浮动转换成行列固定。

Public Function changeTableRowFixed(sheet As Excel.Worksheet,ByVal rowNum As Integer,intStartRow As Integer)
Dim intRow As Integer
'如果是行浮动的报表
If blnRowFix = False Then
'获取数据区的第一行
intRow = intStartRow
'先复制数据区的第一行
sheet.Rows(intRow & ":" & intRow).Copy
'然后循环插入,把表格转化成行列固定的
If rowNum <> 1 Then
For i = intRow + 1 To rowNum + intRow - 1
sheet.Rows(i & ":" & i).PasteSpecial
Next i
End If
End If
End Function

4.填充给定范围,1个数据源填充2个不相邻的范围。

Public Function fillRange_2(strStartCell_1 As String,strEndCell_1 As String,strStartCell_2 As String,strEndCell_2 As String,RS As ADODB.Recordset,sheet As Excel.Worksheet)

If RS.RecordCount > 0 Then
RS.MoveFirst
'重新定义数组
ReDim arrData(0 To RS.RecordCount - 1,0)
ReDim arr(0 To RS.RecordCount - 1,0)
For i = 0 To RS.RecordCount - 1
For j = 1 To RS.Fields.Count - 1
Select Case j:'将数据源RS中的索引为1和2的数据列填入表格

Case 1: arrData(i,0) = RS.Fields(j).Value
Case 2: arr(i,0) = RS.Fields(j).Value
End Select
Next j
RS.MoveNext
Next i
'填充excel给定的范围
sheet.Range(strStartCell_1,strEndCell_1) = arrData
sheet.Range(strStartCell_2,strEndCell_2) = arr
End If

End Function

5.删除多余的单元格,同时下方的单元格上移

Public Function deleteExtraCell(intLastCol As Integer,intFirstRow As Integer,intFirstCol As Integer)

Dim strBeginCell,strEndCell As String
strBeginCell = Chr$(intFirstCol) & intFirstRow
strEndCell = Chr$(intLastCol) & 199
Range(strBeginCell,strEndCell).Delete Shift:=xlUp
End Function

三.EXCEL保存及资源释放设置。

'显示excel
exlApp.Visible = True
exlApp.WindowState = xlMaximized

'将sheet1设为活动工作簿
exlApp.Worksheets(1).Activate
'将sheet1的第一行第一列单元格设为活动单元格
exlApp.ActiveSheet.Cells(1,1).Activate

'清除剪贴板上的内容
Clipboard.Clear

'关闭excel时不弹出是否保存的窗口
exlApp.ActiveWorkbook.Saved = False
exlApp.DisplayAlerts = False

'保存
book.SaveAs FileName

'释放excel资源Set sheet = NothingSet book = NothingSet exlApp = Nothing

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读