用sql语句查询excel中的数据
'--**************************************************************************************************************
'--**************************************************************************************************************
Public Sub P02_核算项目汇总_页签_获取_P01_凭证_页签中的_辅助核算数据()
'**********根据查询条件,对数据源进行查询***********************
'--------------调用jch01-03过程,最后一次检查和设置查询条件
' Application.ScreenUpdating = False '关闭屏幕刷新
'---被调用
'--该过程,一般放在<明细过程>----的<开端处>
'--******************************************----进度条初始化--开始
If Zong_BuZhou = 0 Then
Zong_BuZhou = 10
End If
DangQian_BuZhou = DangQian_BuZhou + 1
MDF_进度条.Label1.Caption = " 步 骤:第 < " & DangQian_BuZhou & " > 步 " '--进度条--(第×步)
MDF_进度条.Label2.Caption = " 过 程 名:P02_核算项目汇总_页签_ADO汇总表查询_模拟透视表 " '--**进度条--(×××过程)
MDF_进度条.Label3.Caption = " 当前记录:< > " '--进度条
MDF_进度条.Label4.Caption = " 记录总数:< > " '--进度条
MDF_进度条.TextBox5.Text = "记录名称:< > " '--进度条
MDF_进度条.Label8.Width = 0 '--进度条---(刚开始长度为0)
MDF_进度条.Label8.Caption = " " '--进度条---(一般为空,只是用来展示)
MDF_进度条.Label9.Caption = " " '--进度条
MDF_进度条.Label10.Width = 405 * ((DangQian_BuZhou) / (Zong_BuZhou)) '--汇总--进度条---(刚开始长度为0)/其中440是最大长度
MDF_进度条.Label11.Caption = CStr(Int((DangQian_BuZhou) / (Zong_BuZhou) * 100)) + "%" '--汇总--进度条
DoEvents '--释放资源
XunHuan_CiShu = 1
'Sleep 3000 '--暂停时间(1000表示等待1秒 / 3000表示等待3秒)
'--******************************************----进度条初始化--结束
'1-----------------定义和数据库相关的变量-----------------------
JianCha_TongGuo = True
YanSe_1 = RGB(174, 170, 170) '--标题行,第1行---深灰色:
YanSe_2 = RGB(189, 215, 238) '--aj--as/---------深蓝色:
YanSe_3 = RGB(248, 203, 173) '--at--av/---------橘红色:
YanSe_4 = RGB(180, 198, 231) '--aw--ba/--------灰蓝色:
YanSe_5 = RGB(198, 224, 180) '--bb--bh/--------绿色:
YanSe_6 = RGB(255, 230, 153) '--bi--br/----------橘黄色:
Dim ZhHang_1 As Long '数据源表的最后行
Dim Lie_1 As Long '数据源表的列号
Dim ZhLie_1 As Long '数据源表的最后列
Dim GeShu As Long '数据源表的核算项目类型的个数
Dim Hang_2 As Long '目的数据表的行
Dim ZhHang_2 As Long '目的数据表的最后行
Dim Lie_2 As Long '目的数据表的列
Dim mudiyeqian As String '目的数据工作簿页签的类型
Dim mydata As String '数据源工作簿名字
Dim mytable As String '数据源工作簿的页签的名字
Dim SQL As String '查询语句
Dim BL_核算项目列号 As String
Dim BL_核算项目类型 As String
Dim BL_核算项目编码 As String
Dim BL_核算项目名称 As String
'-------------------------------------
Dim cnn As ADODB.Connection '定义一个ADO的Connection对象
Dim rs As ADODB.Recordset '定义一个ADO的Recordset对象
'-------------------------------------
mudiyeqian = "P02_核算项目汇总" '--目的数据工作簿页签的名字
mytable = "P01_凭证" '--数据源工作簿的工作表(页签的)名字(worksheets(2).name)
With Worksheets(mudiyeqian)
.Cells.Interior.ColorIndex = xlNone '--取消颜色
If .AutoFilterMode = True Then '--原来有自动筛选的按钮,则取消
.Rows("1:1").AutoFilter
End If
End With
With Worksheets(mytable)
If .AutoFilterMode = True Then '--原来有自动筛选的按钮,则取消
.Rows("1:1").AutoFilter
End If
End With
'-------------------------------------
With Worksheets(mudiyeqian)
.Rows("2:1001234").Delete '--删除数据,而不是清除数据,以为清除数据,可能会造成空记录的情况
.Cells(1, 1).Value = "核算项目列号"
.Cells(1, 2).Value = "核算项目类别"
.Cells(1, 3).Value = "核算项目编码"
.Cells(1, 4).Value = "核算项目名称"
End With
Dim BL_mdf标志_行是否存在 As Boolean '--判断mdf标志行是否存在,如果存在,则继续,不存在则增加一行
Dim BL_mdf标志_列号 As Integer '--强制在第2行,增加mdf标志行,作为数值引导行
Dim BL_mdf标志_字符 As String
BL_mdf标志_字符 = "mdf_SQL查询_引导标志" '--主要为了避免有的字段有数据,但是查询不到的情况
With Worksheets(mytable)
ZhLie_1 = .Range("DZ1").End(xlToLeft).Column '--从DZ列开始向右计算,判断最后列的列号
For Lie_1 = 1 To ZhLie_1
If .Cells(2, Lie_1).Value = BL_mdf标志_字符 Then
BL_mdf标志_行是否存在 = True
.Rows("2:2").Delete
GoTo AAA
End If
Next
End With
AAA:
With Worksheets(mytable)
.Rows("2:2").Insert Shift:=xlDown '--插入标志行
'--插入mdf引导标志的列,请根据实际情况调整
For Lie_1 = 1 To ZhLie_1
If InStr(.Cells(1, Lie_1).Value, "核算项目") > 0 Then
.Cells(2, Lie_1).Value = BL_mdf标志_字符
End If
If InStr(.Cells(1, Lie_1).Value, "编码") > 0 Then
.Cells(2, Lie_1).Value = BL_mdf标志_字符
End If
If InStr(.Cells(1, Lie_1).Value, "名称") > 0 Then
.Cells(2, Lie_1).Value = BL_mdf标志_字符
End If
Next
End With
With Worksheets(mytable)
ZhHang_1 = 0
ZhHang_1 = .Cells(.Rows.Count, 1).End(xlUp).Row
If ZhHang_1 < .Cells(.Rows.Count, 2).End(xlUp).Row Then
ZhHang_1 = .Cells(.Rows.Count, 2).End(xlUp).Row
End If
If ZhHang_1 < .Cells(.Rows.Count, 3).End(xlUp).Row Then
ZhHang_1 = .Cells(.Rows.Count, 3).End(xlUp).Row
End If
If ZhHang_1 < .Cells(.Rows.Count, 4).End(xlUp).Row Then
ZhHang_1 = .Cells(.Rows.Count, 4).End(xlUp).Row
End If
If ZhHang_1 < .Cells(.Rows.Count, 5).End(xlUp).Row Then
ZhHang_1 = .Cells(.Rows.Count, 5).End(xlUp).Row
End If
If ZhHang_1 < .Cells(.Rows.Count, 6).End(xlUp).Row Then
ZhHang_1 = .Cells(.Rows.Count, 6).End(xlUp).Row
End If
If ZhHang_1 < .Cells(.Rows.Count, 7).End(xlUp).Row Then
ZhHang_1 = .Cells(.Rows.Count, 7).End(xlUp).Row
End If
If ZhHang_1 < .Cells(.Rows.Count, 8).End(xlUp).Row Then
ZhHang_1 = .Cells(.Rows.Count, 8).End(xlUp).Row
End If
.Rows(ZhHang_1 + 1 & ":1001234").Delete '--删除数据,而不是清除数据,以为清除数据,可能会造成空记录的情况
End With
'2----------------连接数据库-----------------------------------
' mydata = ThisWorkbook.Path & "数据源.xls" '数据源工作簿的名字
mydata = ThisWorkbook.FullName '数据源工作簿的名字
Set cnn = New ADODB.Connection
With cnn
'--*****************************************************************************************************excel不同版本需要不同的驱动
'---excel2003版本(office2003版本)---该驱动查询的数据范围较小(只能查询数据源低于8022行记录)
'.Provider = "microsoft.jet.oledb.4.0"
'.ConnectionString = "Data Source=" & mydata & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;"""
'---excel2010版本(office2010版本)---该驱动查询的数据范围较大(可以查询数据源低于10万行记录)
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=" & mydata & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1;"""
'---执行连接
.Open
End With
'参数解释:
'IMEX=1 解决数字与字符混合时,识别不正常的情况
'HDR=YES 有两个值:YES/NO,表示第一行是否字段名,默认是YES,第一行是字段名
'--为了解决一个字段中,既有数字,又有文本的情况,还需要对注册表做如下处理
'--32位操作系统
'--Excel 97--HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Jet/3.5/Engines/Excel
'--Excel 2000 and later versions---HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Jet/4.0/Engines/Excel
'--64位操作系统
'--HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftJet.0EnginesEXCEL
'--将键值TypeGuessRow改为0
'--但是,如果大的数据在表的后面位置的话,这个问题还是有可能发生的。所以要彻底的解决的话,在打开一个recordset前,就要先定义好它的字段长度了
'--或者,把包含一个字段中,特别长的数据的记录放置到第2行中,即第1条记录中
With Worksheets(mytable) '--重要;设置相关字段区域的单元格格式,
.Columns("AH:BE").NumberFormatLocal = "@"
End With
For GeShu = 1 To 8 '---*****************************************指定查询的字段序号
BL_核算项目列号 = "凭证_核算项目列号" & GeShu '---为什么个数= 4查询不到数据???
BL_核算项目类型 = "核算项目" & GeShu
BL_核算项目编码 = "编码" & GeShu
BL_核算项目名称 = "名称" & GeShu
'----------------------------------------------------------------------
SQL = " select '" & BL_核算项目列号 & "' AS 核算项目列号 " _
& " , '''' + ltrim(rtrim(" & BL_核算项目类型 & ")) AS 核算项目类别 " _
& " , '''' + ltrim(rtrim(" & BL_核算项目编码 & ")) AS 核算项目编码 " _
& " , '''' + ltrim(rtrim(" & BL_核算项目名称 & ")) AS 核算项目名称 " _
& " from [" & mytable & "$] " _
& " where " & BL_核算项目类型 & " <> '' and " & BL_核算项目类型 & " <> '" & BL_mdf标志_字符 & "' "
Set rs = New ADODB.Recordset
rs.Open SQL, cnn, adOpenKeyset, adLockOptimistic
'--如果提示:运行时错误 '-2147467259 (80004005)' 用于查看已链接的Microsoft Excel工作表的连接,已经丢失。/
'--有一列的数据其实是“数字字符串”(只有0-9的数字符),但不小心将那一列的数据格式设定为日期格式,导致出现了“负日期”
'--处理方法是:将该列改回 文本或数值 格式以后,就没有上述问题了。,建议通过程序在连接前,先自动设置格式就可以避免了
'4-------------复制字段名(即复制标题)-------------------------
'Worksheets(mudiyeqian).Rows("1:1").ClearContents '--清除标题行的数据,准备重写标题
'Hang_2 = 1
'For Lie_2 = 0 To rs.Fields.Count - 1
'Sheets(mudiyeqian).Cells(Hang_2, Lie_2 + 1) = rs.Fields(Lie_2).Name 'sheets(1)表示在工作簿中排在第二位的工作表
'Next
'---------------以上内容也可以的,但是效率会非常低,所以用拷贝的方法--------------------------
With Worksheets(mudiyeqian)
ZhHang_2 = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(ZhHang_2, 1).CopyFromRecordset rs
ZhHang_2 = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range(.Cells(ZhHang_2, 1), .Cells(ZhHang_2, 4)).Interior.Color = YanSe_6
End With
'----------------------------------------
'--只清除记录,不断开连接
rs.Close
Set rs = Nothing
Next
'6-----------------------------------------------------
'--因为上面已经清除记录了,这里只需要关闭数据库即可
cnn.Close
Set cnn = Nothing
'------------------根据jch01_01和jch01_03设置jch01_05的格式-------------------------------------------------
' Sheets("P02_核算项目汇总").Activate '激活选择jch01-05
With Worksheets(mudiyeqian)
.Rows("1:1").RowHeight = 50
End With
'6-----------------------------------------------------
'--删除引导标志行
With Worksheets(mytable)
ZhLie_1 = .Range("DZ1").End(xlToLeft).Column '--从DZ列开始向右计算,判断最后列的列号
For Lie_1 = 1 To ZhLie_1
If .Cells(2, Lie_1).Value = BL_mdf标志_字符 Then
BL_mdf标志_行是否存在 = True
.Rows("2:2").Delete
GoTo BBB
End If
Next
End With
BBB:
'---------------------------------------------------------------------------------------------
' Application.ScreenUpdating = True '开启屏幕刷新
End Sub
Public Sub P02_核算项目汇总_页签_获取_Q02_期初_页签中的_辅助核算数据()
'**********根据查询条件,对数据源进行查询***********************
'---A03_辅助项透视---P03_核算项目透视_4.将[A00_会计科目]和[P01_凭证]进行替换
Dim YesNo_XuanZe As String '选择的按钮
YesNo_XuanZe = MsgBox("凭证列表中的---[辅助核算明细] ,已获取到完成 " _
& vbCrLf & "" _
& vbCrLf & "---是否[同时]获取 " _
& vbCrLf & "" _
& vbCrLf & "---工作表[Q02_期初]---[辅助核算明细]数据" _
& vbCrLf & "" _
& vbCrLf & "注意:" _
& vbCrLf & "" _
& vbCrLf & "如果,工作表[Q02_期初]中---[无数据], " _
& vbCrLf & "" _
& vbCrLf & "建议,点击[否], 跳过该步骤" _
& vbCrLf & "" _
& vbCrLf & "" _
& vbCrLf & "点击 [是] , 获取 [期初核算明细]" _
& vbCrLf & "" _
& vbCrLf & "点击 [否] , 跳过 [期初核算明细]" _
& vbCrLf & " ", vbYesNo + vbDefaultButton1 + vbInformation, "提醒")
If YesNo_XuanZe = vbNo Then
Exit Sub '点击<否>,停止运行
ElseIf YesNo_XuanZe = vbYes Then
'--- '点击<是>,继续运行
End If
'--------------调用jch01-03过程,最后一次检查和设置查询条件
' Application.ScreenUpdating = False '关闭屏幕刷新
'---被调用
'--该过程,一般放在<明细过程>----的<开端处>
'--******************************************----进度条初始化--开始
If Zong_BuZhou = 0 Then
Zong_BuZhou = 10
End If
DangQian_BuZhou = DangQian_BuZhou + 1
MDF_进度条.Label1.Caption = " 步 骤:第 < " & DangQian_BuZhou & " > 步 " '--进度条--(第×步)
MDF_进度条.Label2.Caption = " 过 程 名:P02_核算项目汇总_页签_ADO汇总表查询_模拟透视表 " '--**进度条--(×××过程)
MDF_进度条.Label3.Caption = " 当前记录:< > " '--进度条
MDF_进度条.Label4.Caption = " 记录总数:< > " '--进度条
MDF_进度条.TextBox5.Text = "记录名称:< > " '--进度条
MDF_进度条.Label8.Width = 0 '--进度条---(刚开始长度为0)
MDF_进度条.Label8.Caption = " " '--进度条---(一般为空,只是用来展示)
MDF_进度条.Label9.Caption = " " '--进度条
MDF_进度条.Label10.Width = 405 * ((DangQian_BuZhou) / (Zong_BuZhou)) '--汇总--进度条---(刚开始长度为0)/其中440是最大长度
MDF_进度条.Label11.Caption = CStr(Int((DangQian_BuZhou) / (Zong_BuZhou) * 100)) + "%" '--汇总--进度条
DoEvents '--释放资源
XunHuan_CiShu = 1
'Sleep 3000 '--暂停时间(1000表示等待1秒 / 3000表示等待3秒)
'--******************************************----进度条初始化--结束
'1-----------------定义和数据库相关的变量-----------------------
YanSe_1 = RGB(174, 170, 170) '--标题行,第1行---深灰色:
YanSe_2 = RGB(189, 215, 238) '--aj--as/---------深蓝色:
YanSe_3 = RGB(248, 203, 173) '--at--av/---------橘红色:
YanSe_4 = RGB(180, 198, 231) '--aw--ba/--------灰蓝色:
YanSe_5 = RGB(198, 224, 180) '--bb--bh/--------绿色:
YanSe_6 = RGB(255, 230, 153) '--bi--br/----------橘黄色:
Dim ZhHang_1 As Long '数据源表的最后行
Dim GeShu As Long '数据源表的核算项目类型的个数
Dim Hang_2 As Long '目的数据表的行
Dim ZhHang_2 As Long '目的数据表的最后行
Dim Lie_2 As Long '目的数据表的列
Dim mudiyeqian As String '目的数据工作簿页签的类型
Dim mydata As String '数据源工作簿名字
Dim mytable As String '数据源工作簿的页签的名字
Dim SQL As String '查询语句
Dim BL_核算项目列号 As String
Dim BL_核算项目类型 As String
Dim BL_核算项目编码 As String
Dim BL_核算项目名称 As String
'-------------------------------------
Dim cnn As ADODB.Connection '定义一个ADO的Connection对象
Dim rs As ADODB.Recordset '定义一个ADO的Recordset对象
'-------------------------------------
mudiyeqian = "P02_核算项目汇总" '--目的数据工作簿页签的名字
mytable = "Q02_期初" '--数据源工作簿的工作表(页签的)名字(worksheets(2).name)
With Worksheets(mudiyeqian)
.Cells.Interior.ColorIndex = xlNone '--取消颜色
If .AutoFilterMode = True Then '--原来有自动筛选的按钮,则取消
.Rows("1:1").AutoFilter
End If
End With
With Worksheets(mytable)
If .AutoFilterMode = True Then '--原来有自动筛选的按钮,则取消
.Rows("1:1").AutoFilter
End If
End With
'-------------------------------------
' With Worksheets(mudiyeqian)
' .Rows("2:1001234").Delete '--删除数据,而不是清除数据,以为清除数据,可能会造成空记录的情况
' .Cells(1, 1).Value = "核算项目列号"
' .Cells(1, 2).Value = "核算项目类别"
' .Cells(1, 3).Value = "核算项目编码"
' .Cells(1, 4).Value = "核算项目名称"
' End With
Dim BL_mdf标志_行是否存在 As Boolean '--判断mdf标志行是否存在,如果存在,则继续,不存在则增加一行
Dim BL_mdf标志_列号 As Integer '--强制在第2行,增加mdf标志行,作为数值引导行
Dim BL_mdf标志_字符 As String
BL_mdf标志_字符 = "mdf_SQL查询_引导标志" '--主要为了避免有的字段有数据,但是查询不到的情况
With Worksheets(mytable)
ZhLie_1 = .Range("DZ1").End(xlToLeft).Column '--从DZ列开始向右计算,判断最后列的列号
For Lie_1 = 1 To ZhLie_1
If .Cells(2, Lie_1).Value = BL_mdf标志_字符 Then
BL_mdf标志_行是否存在 = True
.Rows("2:2").Delete
GoTo AAA
End If
Next
End With
AAA:
With Worksheets(mytable)
.Rows("2:2").Insert Shift:=xlDown '--插入标志行
'--插入mdf引导标志的列,请根据实际情况调整
For Lie_1 = 1 To ZhLie_1
If InStr(.Cells(1, Lie_1).Value, "核算项目") > 0 Then
.Cells(2, Lie_1).Value = BL_mdf标志_字符
End If
If InStr(.Cells(1, Lie_1).Value, "编码") > 0 Then
.Cells(2, Lie_1).Value = BL_mdf标志_字符
End If
If InStr(.Cells(1, Lie_1).Value, "名称") > 0 Then
.Cells(2, Lie_1).Value = BL_mdf标志_字符
End If
Next
End With
With Worksheets(mytable)
ZhHang_1 = 0
ZhHang_1 = .Cells(.Rows.Count, 1).End(xlUp).Row
If ZhHang_1 < .Cells(.Rows.Count, 2).End(xlUp).Row Then
ZhHang_1 = .Cells(.Rows.Count, 2).End(xlUp).Row
End If
If ZhHang_1 < .Cells(.Rows.Count, 3).End(xlUp).Row Then
ZhHang_1 = .Cells(.Rows.Count, 3).End(xlUp).Row
End If
If ZhHang_1 < .Cells(.Rows.Count, 4).End(xlUp).Row Then
ZhHang_1 = .Cells(.Rows.Count, 4).End(xlUp).Row
End If
If ZhHang_1 < .Cells(.Rows.Count, 5).End(xlUp).Row Then
ZhHang_1 = .Cells(.Rows.Count, 5).End(xlUp).Row
End If
If ZhHang_1 < .Cells(.Rows.Count, 6).End(xlUp).Row Then
ZhHang_1 = .Cells(.Rows.Count, 6).End(xlUp).Row
End If
If ZhHang_1 < .Cells(.Rows.Count, 7).End(xlUp).Row Then
ZhHang_1 = .Cells(.Rows.Count, 7).End(xlUp).Row
End If
If ZhHang_1 < .Cells(.Rows.Count, 8).End(xlUp).Row Then
ZhHang_1 = .Cells(.Rows.Count, 8).End(xlUp).Row
End If
.Rows(ZhHang_1 + 1 & ":1001234").Delete '--删除数据,而不是清除数据,以为清除数据,可能会造成空记录的情况
End With
'2----------------连接数据库-----------------------------------
' mydata = ThisWorkbook.Path & "数据源.xls" '数据源工作簿的名字
mydata = ThisWorkbook.FullName '数据源工作簿的名字
Set cnn = New ADODB.Connection
With cnn
'--*****************************************************************************************************excel不同版本需要不同的驱动
'---excel2003版本(office2003版本)---该驱动查询的数据范围较小(只能查询数据源低于8022行记录)
'.Provider = "microsoft.jet.oledb.4.0"
'.ConnectionString = "Data Source=" & mydata & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;"""
'---excel2010版本(office2010版本)---该驱动查询的数据范围较大(可以查询数据源低于10万行记录)
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=" & mydata & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1;"""
'---执行连接
.Open
End With
'参数解释:
'IMEX=1 解决数字与字符混合时,识别不正常的情况
'HDR=YES 有两个值:YES/NO,表示第一行是否字段名,默认是YES,第一行是字段名
'--为了解决一个字段中,既有数字,又有文本的情况,还需要对注册表做如下处理
'--32位操作系统
'--Excel 97--HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Jet/3.5/Engines/Excel
'--Excel 2000 and later versions---HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Jet/4.0/Engines/Excel
'--64位操作系统
'--HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftJet.0Engines
'--将键值TypeGuessRow改为0
'--但是,如果大的数据在表的后面位置的话,这个问题还是有可能发生的。所以要彻底的解决的话,在打开一个recordset前,就要先定义好它的字段长度了
'--或者,把包含一个字段中,特别长的数据的记录放置到第2行中,即第1条记录中
For GeShu = 1 To 8
BL_核算项目列号 = "期初_核算项目列号" & GeShu
BL_核算项目类型 = "核算项目" & GeShu
BL_核算项目编码 = "编码" & GeShu
BL_核算项目名称 = "名称" & GeShu
'----------------------------------------------------------------------
SQL = " select '" & BL_核算项目列号 & "' AS 核算项目列号 " _
& " , '''' + ltrim(rtrim(" & BL_核算项目类型 & ")) AS 核算项目类别 " _
& " , '''' + ltrim(rtrim(" & BL_核算项目编码 & ")) AS 核算项目编码 " _
& " , '''' + ltrim(rtrim(" & BL_核算项目名称 & ")) AS 核算项目名称 " _
& " from [" & mytable & "$] " _
& " where " & BL_核算项目类型 & " <> '' and " & BL_核算项目类型 & " <> '" & BL_mdf标志_字符 & "' "
Set rs = New ADODB.Recordset
rs.Open SQL, cnn, adOpenKeyset, adLockOptimistic
'--如果提示:运行时错误 '-2147467259 (80004005)' 用于查看已链接的Microsoft Excel工作表的连接,已经丢失。/
'--有一列的数据其实是“数字字符串”(只有0-9的数字符),但不小心将那一列的数据格式设定为日期格式,导致出现了“负日期”
'--处理方法是:将该列改回 文本或数值 格式以后,就没有上述问题了。,建议通过程序在连接前,先自动设置格式就可以避免了
'4-------------复制字段名(即复制标题)-------------------------
'Worksheets(mudiyeqian).Rows("1:1").ClearContents '--清除标题行的数据,准备重写标题
'Hang_2 = 1
'For Lie_2 = 0 To rs.Fields.Count - 1
'Sheets(mudiyeqian).Cells(Hang_2, Lie_2 + 1) = rs.Fields(Lie_2).Name 'sheets(1)表示在工作簿中排在第二位的工作表
'Next
'---------------以上内容也可以的,但是效率会非常低,所以用拷贝的方法--------------------------
With Worksheets(mudiyeqian)
ZhHang_2 = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(ZhHang_2, 1).CopyFromRecordset rs
ZhHang_2 = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range(.Cells(ZhHang_2, 1), .Cells(ZhHang_2, 4)).Interior.Color = YanSe_6
End With
'----------------------------------------
'--只清除记录,不断开连接
rs.Close
Set rs = Nothing
Next
'6-----------------------------------------------------
'--因为上面已经清除记录了,这里只需要关闭数据库即可
cnn.Close
Set cnn = Nothing
'------------------根据jch01_01和jch01_03设置jch01_05的格式-------------------------------------------------
' Sheets("P02_核算项目汇总").Activate '激活选择jch01-05
With Worksheets(mudiyeqian)
.Rows("1:1").RowHeight = 50
End With
'6-----------------------------------------------------
'--删除引导标志行
With Worksheets(mytable)
ZhLie_1 = .Range("DZ1").End(xlToLeft).Column '--从DZ列开始向右计算,判断最后列的列号
For Lie_1 = 1 To ZhLie_1
If .Cells(2, Lie_1).Value = BL_mdf标志_字符 Then
.Rows("2:2").Delete
GoTo BBB
End If
Next
End With
BBB:
'---------------------------------------------------------------------------------------------
' Application.ScreenUpdating = True '开启屏幕刷新
End Sub