|
楼主 |
发表于 2022-8-21 11:22
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
再次迭代一下
Sheet的导出文件 使用文本文件导入代码
- ''
- '''*********************************
- '''******* 北极狐工作室出品 ******
- '''******* QQ:14885553 ******
- '''*********************************
- Sub C_批量导入模块()
- Rem BAS 模块
- Rem FRM 窗体
- Rem CLS 类模块 但是也代表sheet内代码导出文件, 现有代码不能导入: sheet代码
- Rem 获取要导入的模块,窗体,类模块文件
- FileArr = FileAllArr(ThisWorkbook.Path, "*.*", ThisWorkbook.Name, True, False, "BAS,FRM,CLS", "") '//含子文件夹;文件路径
- If FileArr(0) <> "" Then
- For I = 0 To UBound(FileArr)
- Rem 如果存在就删除
- For Each MK In ThisWorkbook.VBProject.VBComponents
- Rem 正在使用的几个模块不导入
- If MK.Name <> "FUNCTIONS" And MK.Name <> "C_导入模块" And MK.Name <> "D_导出模块" Then
- If UCase(MK.Name) = UCase(GetPathFromFileName(FileArr(I), False)) Then
- If MK.Type = 100 Then '//sheet内代码导出文件
- MK.CodeModule.DeleteLines 1, MK.CodeModule.CountOfLines '//按行删除
- BL = False
- Else
- ThisWorkbook.VBProject.VBComponents.Remove MK '//删除这个模块
- BL = True
- End If
- Exit For
- End If
- End If
- Next
-
- If BL = True Then
- Rem 直接导入: 模块,窗体,类模块文件
- ThisWorkbook.Application.VBE.ActiveVBProject.VBComponents.Import FileArr(I)
- Else
- Rem sheet代码的导出文件 用文本文件打开 去掉不需要的内容
- '''VERSION 1.0 CLASS
- '''BEGIN
- ''' MultiUse = -1 'True
- '''End
- '''Attribute VB_Name = "Sheet1"
- '''Attribute VB_GlobalNameSpace = False
- '''Attribute VB_Creatable = False
- '''Attribute VB_PredeclaredId = True
- '''Attribute VB_Exposed = True
- '''
- '''Sub A()
- '''MsgBox "OK"
- '''End Sub
-
- Rem 目前办法比较Low
- StrText = ""
- BLB = FASLE '//判断 BEGIN 段落
- INTX = 0
- INTY = -1
- Open FileArr(I) For Input As #1 ' 以只读的方式打开文件,参考open方法的帮助
- Do While Not EOF(1) ' 循环至文件尾。
- Line Input #1, TextLine ' 读入一行数据并将其赋予某变量
- BLA = FASLE '//是否需要此行
- INTX = INTX + 1 '//记录第几行 为对比END 所在行做准备
- TextLine = Trim(TextLine)
- If InStr(TextLine, "VERSION ") <> 1 Then
- If InStr(TextLine, "Attribute ") <> 1 Then
- If InStr(TextLine, "BEGIN") = 1 Then BLB = True '//判断 BEGIN 段落开始
- If BLB = True And InStr(TextLine, "END") = 1 Then
- BLB = FASLE '//判断 BEGIN 段落结束
- INTY = INTX '//记录END 所在行
- End If
- If BLB = FASLE Then
- Rem 是正文, 如果有BEGIN 则要在END之下
- If INTX > INTY Then BLA = True
- End If
- End If
- End If
- If BLA = True Then
- If StrText <> "" Then StrText = StrText & vbCrLf
- StrText = StrText & TextLine
- End If
- Loop
- Close #1 ' 关闭文件。
-
- MK.CodeModule.AddFromString StrText '//插入代码
- End If
- Next
- MsgBox "OK"
- Else
- MsgBox "未发现 导入文件"
- End If
-
- End Sub
复制代码 |
|