下你所需,载你所想!
汇集开发技术源码资料

将EXCEL文件导入导出高级表格源码

:275.368KB :1 :2019-12-23 08:35:04

部分简介

' EXCEL VBA开发基础:
' 这个教程奉献给新手党,技术含量不高:1、EXCEL VBA基础,2、EXCEL程序组件,3、EXCEL工作簿组件,4、高级表格
' 其实就是两个EXCEL组件,配合VBA的应用,VBA具体命令,在上面的网址可以查到。

.如果真 (编辑框1.内容 ≠ “”)
Excel工作簿1.置程序 (Excel程序1)
.如果 (Excel工作簿1.打开 (编辑框1.内容) = 真)
' 导入表1
Excel工作簿1.表格序号 = 1 ' 这里我只演示导入表1,如果有需要可以根据这个修改,配合【表格数量、表格名 这两个属性可以查看到工作簿钟的表名】
局_工作表对象 = Excel工作簿1.取表格对象 ()
局_工作表最大行数 = 局_工作表对象.读对象型属性 (“UsedRange”, ).读对象型属性 (“Rows”, ).读数值属性 (“Count”, )
局_工作表最大列数 = 局_工作表对象.读对象型属性 (“UsedRange”, ).读对象型属性 (“Columns”, ).读数值属性 (“Count”, )
' 去除空行,这个步骤,可以去除一些空行,有必要,因为EXCEL在计算最大行数的时候,有些时候,带了格式的行,也会被计算到,但是这些行没有任何数据,应该排除
局_标记文本 = “”
.计次循环首 (局_工作表最大列数, 局_计次)
局_标记文本 = 局_标记文本 + 字符 (13) + 字符 (9) ' 这句是要计算出空行有哪些字符,用来判断是否空行,因为一个空的单元格,包含字符13(ENTER键),和字符9(TAB键)
.计次循环尾 ()
局_实际最大行数 = 局_工作表最大行数
.计次循环首 (局_工作表最大行数, 局_计次) ' 从最后一行开始检测,如果有一行的值,等于空行的值,就修改一下最大行数
局_工作表对象.读对象型属性 (“Range”, “A” + 到文本 (局_工作表最大行数 + 1 - 局_计次) + “:” + 子程序_根据列数计算列字母 (局_工作表最大列数) + 到文本 (局_工作表最大行数 + 1 - 局_计次)).方法 (“Copy”, )
局_剪切板文本 = 取剪辑板文本 ()
.如果 (局_剪切板文本 = 局_标记文本)
' 该行是空行
局_实际最大行数 = 局_实际最大行数 - 1
.否则
跳出循环 ()
.如果结束

.计次循环尾 ()
局_工作表最大行数 = 局_实际最大行数
' 同样的,下面去除空列
调试输出 (“局_实际最大列数:” + 到文本 (局_工作表最大列数))
局_标记文本 = “”
.计次循环首 (局_工作表最大行数, 局_计次)
局_标记文本 = 局_标记文本 + 字符 (13) + 字符 (10) ' 这句是要计算出空列有哪些字符,用来判断是否空列,因为一个空的单元格,包含字符13(ENTER键),和字符10(换行符)
.计次循环尾 ()
局_实际最大列数 = 局_工作表最大列数
.计次循环首 (局_工作表最大列数, 局_计次) ' 从最后一列开始检测,如果有一列的值,等于空列的值,就修改一下最大列数
调试输出 (子程序_根据列数计算列字母 (局_工作表最大列数 - 局_计次 + 1) + “1:” + 子程序_根据列数计算列字母 (局_工作表最大列数 - 局_计次 + 1) + 到文本 (局_工作表最大行数))
局_工作表对象.读对象型属性 (“Range”, 子程序_根据列数计算列字母 (局_工作表最大列数 - 局_计次 + 1) + “1:” + 子程序_根据列数计算列字母 (局_工作表最大列数 - 局_计次 + 1) + 到文本 (局_工作表最大行数)).方法 (“Copy”, )
局_剪切板文本 = 取剪辑板文本 ()
.如果 (局_剪切板文本 = 局_标记文本)
' 是空列
局_实际最大列数 = 局_实际最大列数 - 1
.否则
跳出循环 ()
.如果结束

.计次循环尾 ()
局_工作表最大列数 = 局_实际最大列数
调试输出 (“局_实际最大行数:” + 到文本 (局_实际最大行数))
调试输出 (“局_实际最大列数:” + 到文本 (局_实际最大列数))
' 初始化高级表格
高级表格1.清空数据 ()
高级表格1.表头行数 = 1
高级表格1.表头列数 = 0
高级表格1.行数 = 局_实际最大行数
高级表格1.列数 = 局_实际最大列数
' 导入EXCEL数据,思路:选定表格全部区域,复制,然后粘贴在高级表格
' 先读第一行,完善表头,这个要一个一个置数据
局_工作表对象.读对象型属性 (“Range”, “A1:” + 子程序_根据列数计算列字母 (局_实际最大列数) + “1”).方法 (“Copy”, )
局_剪切板文本 = 取剪辑板文本 ()
局_剪切板文本 = 子文本替换 (局_剪切板文本, 字符 (44), 字符 (-93) + 字符 (-84), , , 真) ' 字符44,是英文逗号,不能出现,会是一个单元格粘贴到高级表格的时候,变成2个单元格的内容;字符 (-93) + 字符 (-84) 是中文状态下的逗号,替换一下就好了
局_剪切板文本 = 子文本替换 (局_剪切板文本, 字符 (108), , , , 真) ' 这个是ENTER键符,有这个不行,会让高级表格换行
局_剪切板文本 = 子文本替换 (局_剪切板文本, 字符 (10), , , , 真) ' 这个是换行符,有这个不行,会让高级表格换行
局_临时数组 = 分割文本 (局_剪切板文本, 字符 (9), ) ' 单元格和单元格之间是用字符9来分隔的,所以要分割开来
.计次循环首 (取数组成员数 (局_临时数组), 局_计次)
高级表格1.置数据 (0, 局_计次 - 1, 1, 局_临时数组 [局_计次])
.计次循环尾 ()
' 现在完善剩下的内容
局_工作表对象.读对象型属性 (“Range”, “A2:” + 子程序_根据列数计算列字母 (局_实际最大列数) + 到文本 (局_实际最大行数)).方法 (“Copy”, )
局_取剪辑板文本 = 取剪辑板文本 ()
高级表格1.置光标 (1, 0)
高级表格1.粘贴 ()
Excel工作簿1.关闭 ()
.否则
信息框 (“打开工作簿失败”, 0, “打开工作簿失败”, )
.如果结束
Excel工作簿1.释放 ()

将EXCEL文件导入导出高级表格源码

热门推荐

相关文章