ImageVerifierCode 换一换
格式:DOCX , 页数:46 ,大小:25.54KB ,
资源ID:4556016      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4556016.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VB读取EXCEL数据转化为自定义格式控件.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

VB读取EXCEL数据转化为自定义格式控件.docx

1、VB读取EXCEL数据转化为自定义格式控件实现读取EXCEL数据转化为格式字符串,并实现格式字符串的分配使用Option ExplicitPublic BaseX0 As Single 起始位置Public BaseY0 As SinglePublic xyScale As SinglePublic B_Ti As Single 磅值到绨的转化值Public ChoseColor As String 选择颜色Public StatView As ObjectDim Mycell As CellsDim Ft As New StdFontDim BCtl As PictureBox 绑定的显示控

2、件Dim Viewable As BooleanDim TmpLine As myLineDim TmpData As CellDataDim MyImages() As Image 附加的图片Dim MyImagesSta() As Image 附加图片的位置信息Dim OldArea As String 原始选择区域Dim TxtInput As TextBox 输入控件Dim inputFg As BooleanPrivate Type myLine 线条结构-26字节 NoVIsable As Boolean 可显示否 color As Long 颜色 Style As Integer

3、 线型06 Weight As Integer 线宽 x1 As Single y1 As Single x2 As Single y2 As SingleEnd TypePrivate Type CellData 单元格的数据22lenb(text) NoVIsable As Boolean 可见否 color As Long 颜色 alignment As Integer 对齐方式 WrapText As Boolean 自动换行 Nfont As New StdFont 字体 Style As Integer 线型 Text As String 文本字符号 x1 As Single 区域

4、 y1 As Single 左边位置 width As Single height As Single MergRange As String 包含区域End TypePrivate Type Baseinfo Rol As Integer 行 col As Integer 列 width As Single 总宽 height As Single 总高 PaperSize As Integer LeftMargn As Single -页边距单位cm TopMargn As Single BottomMargn As Single RightMargn As Single Orientati

5、on As IntegerEnd TypePrivate Type Cells 单元集合 Binf As Baseinfo Lines() As myLine DataS() As CellDataEnd Type处理结构的函数 Private Function GetLineString(L As myLine, Optional Spt As String = ) As String 获取线的 If (Spt = ) Then Spt = Chr(8) Dim t As String t = L.color & Spt t = t & L.NoVIsable & Spt t = t & L

6、.Style & Spt t = t & L.Weight & Spt t = t & L.x1 & Spt t = t & L.x2 & Spt t = t & L.y1 & Spt t = t & L.y2 & Spt GetLineString = t End Function Private Function GetStringLine(ByVal str As String, Optional Spt As String = ) As myLine 获取线的 If (Spt = ) Then Spt = Chr(8) Dim L As myLine Dim t As Variant

7、t = Split(str, Spt) L.color = t(0) If UCase(t(1) = TRUE Then L.NoVIsable = True Else L.NoVIsable = False End If L.Style = t(2) L.Weight = t(3) L.x1 = Val(t(4) L.x2 = Val(t(5) L.y1 = Val(t(6) L.y2 = Val(t(7) GetStringLine = L End Function Private Function GetFontString(Ft As StdFont, Optional Spt As

8、String = ) As String 获取字体的 If (Spt = ) Then Spt = Chr(7) Dim t As String t = Ft.Bold & Spt t = t & Ft.Charset & Spt t = t & Ft.Italic & Spt t = t & Ft.Name & Spt t = t & Ft.Size & Spt t = t & Ft.Strikethrough & Spt t = t & Ft.Underline & Spt t = t & Ft.Weight & Spt GetFontString = t End Function Pri

9、vate Sub GetStringFont(ByVal str As String, Optional Spt As String = ) As StdFont 获取字体的 If (Spt = ) Then Spt = Chr(7) Dim t As Variant Dim Ft As New StdFont t = Split(str, Spt) Ft.Bold = t(0) Ft.Charset = t(1) Ft.Italic = t(2) Ft.Name = t(3) Ft.Size = t(4) Ft.Strikethrough = t(5) Ft.Underline = t(6)

10、 Ft.Weight = t(7) GetStringFont = Ft End Sub Private Function GetBaseInfoString(bf As Baseinfo, Optional Spt As String = ) As String 基础信息的 If (Spt = ) Then Spt = Chr(8) Dim t As String t = bf.BottomMargn & Spt t = t & bf.col & Spt t = t & bf.height & Spt t = t & bf.LeftMargn & Spt t = t & bf.PaperSi

11、ze & Spt t = t & bf.RightMargn & Spt t = t & bf.Rol & Spt t = t & bf.TopMargn & Spt t = t & bf.width & Spt t = t & bf.Orientation & Spt GetBaseInfoString = t End Function Private Function GetStringBaseInfo(ByVal str As String, Optional Spt As String = ) As Baseinfo 基础信息的 If (Spt = ) Then Spt = Chr(8

12、) Dim t As Variant Dim bf As Baseinfo t = Split(str, Spt) bf.BottomMargn = t(0) bf.col = t(1) bf.height = t(2) bf.LeftMargn = t(3) bf.PaperSize = t(4) bf.RightMargn = t(5) bf.Rol = t(6) bf.TopMargn = t(7) bf.width = t(8) bf.Orientation = t(9) GetStringBaseInfo = bf End Function Private Function GetD

13、ataString(D As CellData, Optional Spt As String = ) As String 获取数据的 If (Spt = ) Then Spt = Chr(6) Dim t As String t = D.alignment & Spt t = t & D.color & Spt t = t & D.height & Spt t = t & D.MergRange & Spt t = t & GetFontString(D.Nfont) & Spt t = t & D.NoVIsable & Spt t = t & D.Text & Spt t = t & D

14、.width & Spt t = t & D.WrapText & Spt t = t & D.x1 & Spt t = t & D.y1 & Spt t = t & D.Style & Spt GetDataString = t End Function Private Function GetStringData(ByVal str As String, Optional Spt As String = ) As CellData 获取字符串对应的数据的 If (Spt = ) Then Spt = Chr(6) Dim t As Variant Dim D As CellData On

15、Error Resume Next t = Split(str, Spt) If (t(5) = True) Then D.NoVIsable = t(5) D.MergRange = t(3) GetStringData = D D.MergRange = t(3) Exit Function End If D.alignment = t(0) D.color = t(1) D.height = Val(t(2) D.MergRange = t(3) Call GetStringFont(t(4) D.Nfont.Bold = Ft.Bold D.Nfont.Charset = Ft.Cha

16、rset D.Nfont.Italic = Ft.Italic D.Nfont.Name = Ft.Name D.Nfont.Size = Ft.Size D.Nfont.Strikethrough = Ft.Strikethrough D.Nfont.Underline = Ft.Underline D.Nfont.Weight = Ft.Weight D.NoVIsable = t(5) D.Text = t(6) D.width = t(7) D.WrapText = t(8) D.x1 = t(9) D.y1 = t(10) D.Style = t(11) GetStringData

17、= D End FunctionPrivate Function GetCellString(Cs As Cells) As String 读取单元格数据字符串 Dim t As String, tmp As String Dim i As Integer, j As Integer Dim lg As Long On Error GoTo erd t = GetBaseInfoString(Cs.Binf) & Chr(3) 基础信息 tmp = GetLineString(Cs.Lines(0) & Chr(4) 线信息 lg = Cs.Binf.Rol * (Cs.Binf.col +

18、1) + (Cs.Binf.Rol + 1) * Cs.Binf.col For i = 1 To lg tmp = tmp & GetLineString(Cs.Lines(i) & Chr(4) Next t = t & tmp & Chr(3) tmp = GetDataString(Cs.DataS(0) & Chr(4) 数据信息 lg = Cs.Binf.Rol * Cs.Binf.col For i = 1 To lg If (i = 30) Then Debug.Print Cs.DataS(i).MergRange End If tmp = tmp & GetDataStri

19、ng(Cs.DataS(i) & Chr(4) Next t = t & tmp GetCellString = terd:End FunctionPrivate Function GetStringCell(str As String) As Cells 返回字符串对应的单元格数据 Dim t As Variant, tmp As Variant Dim i As Integer, j As Integer, Rol As Integer, col As Integer Dim lg As Long Dim Cs As Cells On Error Resume Next If (str =

20、 ) Then Exit Function t = Split(str, Chr(3) Cs.Binf = GetStringBaseInfo(t(0) 基础信息恢复 Rol = Cs.Binf.Rol col = Cs.Binf.col tmp = Split(t(1), Chr(4) lg = Rol * (col + 1) + col * (Rol + 1) If (InitCells(Cs, Rol, col) = False) Then MsgBox (转换失败) Exit Function End If lg = Cs.Binf.Rol * (Cs.Binf.col + 1) +

21、(Cs.Binf.Rol + 1) * Cs.Binf.col For i = 0 To lg Cs.Lines(i) = GetStringLine(tmp(i) Next tmp = Split(t(2), Chr(4) lg = Rol * col For i = 0 To lg If (i = 30) Then Debug.Print Cs.DataS(i).MergRange End If Cs.DataS(i) = GetStringData(tmp(i) Next GetStringCell = CsEnd Function-Private Sub Class_Initializ

22、e() 初始化 BaseX0 = 0 BaseY0 = 0 xyScale = 1 B_Ti = 22 ChoseColor = RGB(32, 32, 32) InitCells Mycell, 1, 1 初始化为1行1列的 Viewable = False inputFg = FalseEnd Sub-Private Function InitCells(ByRef Os As Cells, Rol As Integer, col As Integer) As Boolean 初始化单元格集合 On Error GoTo erd Os.Binf.Rol = Rol Os.Binf.col

23、= col Os.Binf.height = 1 Os.Binf.width = 1 Os.Binf.PaperSize = vbPRPSA4 缺省weiA4纸 ReDim Os.Lines(col * (Rol + 1) + Rol * (col + 1) 每个列加1,每个行加1先横线,再竖线 ReDim Os.DataS(Rol * col) OldArea = 进行初始化需要消除原始选择 InitCells = True If (inputFg) Then TxtInput.Visible = False End If Exit Functionerd: InitCells = Fals

24、eEnd FunctionEXCEL处理-Private Function XlsString(Rol As Integer, col As Integer, Optional R2 As Integer = 0, Optional C2 As Integer = 0) As String 返回指定位置的单元格区域字符串 If (R2 = 0) Then XlsString = $ & Chr(col + 64) & $ & Rol Else XlsString = $ & Chr(col + 64) & $ & Rol & : & $ & Chr(C2 + 64) & $ & R2 End

25、IfEnd FunctionPrivate Function XlsRolCol(RangeS As String) As Variant 返回单元格区域字符串对应的行、列。 Dim tmp As Variant XlsRolCol = Split(1;2;3;4, ;) tmp = Split(RangeS, :) If (UBound(tmp) 1) Then XlsRolCol(0) = Val(Mid(RangeS, 4) XlsRolCol(1) = Val(Mid(RangeS, 2, 1) XlsRolCol(2) = XlsRolCol(0) XlsRolCol(3) = Xl

26、sRolCol(1) Else XlsRolCol(0) = Val(Mid(tmp(0), 4) XlsRolCol(1) = Val(Mid(tmp(0), 2, 1) XlsRolCol(2) = Val(Mid(tmp(1), 4) XlsRolCol(3) = Val(Mid(tmp(1), 2, 1) End IfEnd FunctionPrivate Function Style_XLSPic(XlsSty As Long) As Integer Select Case XlsSty Case -4142: Style_XLSPic = 5 Case 1: Style_XLSPi

27、c = 0 Case -4148: Style_XLSPic = 2 Case 5: Style_XLSPic = 4 Case 4: Style_XLSPic = 3 Case -4115: Style_XLSPic = 1 Case Else: Style_XLSPic = 5 End SelectEnd FunctionPrivate Function GetXlsCellLine(Obj As Worksheet, Rol As Integer, col As Integer, sta As Integer) As myLine 获取对应Excel表格的指定行列指定位置的线 sta0底

28、,1L,2-r,3-t Dim XlsSt As String Dim str As String Dim x0 As Single Dim y0 As Single Dim W As Single, H As Single Dim Gl As myLine Select Case sta Case 0: XlsSt = xlEdgeBottom Case 1: XlsSt = xlEdgeLeft Case 2: XlsSt = xlEdgeRight Case 3: XlsSt = xlEdgeTop End Select x0 = 0 y0 = 0 W = Obj.Cells(Rol,

29、col).width H = Obj.Cells(Rol, col).height Gl.color = Obj.Cells(Rol, col).Borders(XlsSt).color Gl.Style = Style_XLSPic(Obj.Cells(Rol, col).Borders(XlsSt).LineStyle) Gl.Weight = 1 Obj.Cells(Rol, Col).Borders(XlsSt).Weight Gl.Weight = Obj.Range(XlsString(Rol, col).Borders(XlsSt).Weight Gl.NoVIsable = False If (Rol = 1) Then 先计算位置 y0 = 0 Else y0 = Obj.Range(XlsString(1, 1, Rol - 1

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2