• 项目汇总


    Sub 遍历文件夹(ByVal 指定子文件夹)
        目录路径 = ThisWorkbook.Path & ""
        获取行列号
        If Not 指定子文件夹 Then
            遍历文件夹路径 = 目录路径
        Else
            遍历文件夹路径 = Cells(ActiveCell.Row, 文件夹名称列号) & ""
            遍历文件夹路径 = Replace(遍历文件夹路径, ".", 目录路径)
        End If
        
        Set 已列出文件夹字典 = CreateObject("Scripting.Dictionary")
        For 当前行 = 首行 To 末行
            Cells(当前行, 文件夹名称列号).Select
            已列出文件夹 = ActiveCell
            已列出文件夹 = Replace(已列出文件夹, ".", 目录路径)
            If "" <> Dir(已列出文件夹, 16) Then
                已列出文件夹字典.Add 已列出文件夹, ""
            Else
                ActiveCell.Interior.ColorIndex = 15
            End If
        Next
        
        Set Dic = CreateObject("Scripting.Dictionary")    '创建一个字典对象
        MyName = Dir(遍历文件夹路径, vbDirectory)    '查找目录
        Do While MyName <> ""
            If MyName <> "." And MyName <> ".." Then
                kk = 32
                On Error Resume Next
                kk = GetAttr(遍历文件夹路径 & MyName)
                If (kk And vbDirectory) = vbDirectory Then    '如果是次级目录
                    Dic.Add (遍历文件夹路径 & MyName), MyName   '就往字典中添加这个次级目录名作为一个条目
                End If
            End If
            MyName = Dir    '继续遍历寻找
        Loop
        
        当前行 = 末行 + 1
        
        For Each ke In Dic.keys
            If Not 已列出文件夹字典.Exists(ke) Then '排除已处理
                文件夹短名 = Dic(ke)
                ke = Replace(ke, 目录路径, ".")
                Cells(当前行, 文件夹名称列号) = ke
                Call 填链接(当前行, 文件夹短名)
                当前行 = 当前行 + 1
            End If
        Next
    End Sub
    Sub 填链接(ByVal 当前行, ByVal 文件夹短名)
        Dim str As String
        str = "=HYPERLINK(" & Cells(当前行, 文件夹名称列号).Address(False, False)
        str工作表 = str & "&""" & 文件夹短名 & "=工作表.xlsx"""
        str = str + ",""→"")"
        Cells(当前行, 文件夹名称列号 - 1).Formula = str
    '        =HYPERLINK(第一个文件&B34&"."&C34,"←")
    
        str工作表 = str工作表 + ",""→"")"
        Cells(当前行, 工作表列号).Formula = str工作表
    
    End Sub
    模块2遍历文件夹
    Sub 新建项目()
        获取行列号
        模板 = Range("项目文件夹模板")
        
        FilePath = Left(ActiveCell, InStrRev(ActiveCell, "")) '分解路径
        文件夹短名 = Right(ActiveCell, Len(ActiveCell) - Len(FilePath)) '分解文件名
        
        目录路径 = ThisWorkbook.Path & ""
        目标 = Cells(ActiveCell.Row, 文件夹名称列号)
        目标 = Replace(目标, ".", 目录路径)
        
        Set fso = CreateObject("Scripting.FileSystemObject")
    '    On Error Resume Next
        fso.CopyFolder 模板, 目标
        Call 填链接(ActiveCell.Row, 文件夹短名)
        
        模板 = 目标 & "模板=工作表.xlsx"
        目标k = Replace(模板, "模板", 文件夹短名)
        On Error Resume Next
        fso.MoveFile 模板, 目标k
        
        
        模板 = 目标 & "模板=料单.xls"
        目标k = Replace(模板, "模板", 文件夹短名)
        On Error Resume Next
        fso.MoveFile 模板, 目标k
    
    '    Set kk = GetObject(目标k)
    '    With GetObject(目标k)  '使用 GetObject 函数可以访问文件
    '        .Range("项目") = 文件夹短名
    '        For i = 1 To .Worksheets.Count    '遍历文件的工作表数
    '            Debug.Print .Worksheets(i).Name
    '        Next
    '    End With
        
        Set fso = Nothing
    End Sub
    模块3新建项目
    Public 禁止改变 As Boolean
    Public 表头行 As Integer
    Public 首行 As Integer
    Public 末行 As Long
    '
    Public 首列 As Integer
    Public 末列 As Integer
    
    Public 编号列号 As Integer
    Public 文件夹名称列号 As Integer
    Public 工作表列号 As Integer
    Public 格式列号 As Integer
    
    Sub 获取行列号()
        首列 = 1
        表头行 = Range("文件夹名称").Row
        首行 = 表头行 + 1
    '    Cells.EntireColumn.Hidden = False
        If Cells(首行, 首列) <> "" Then
            末行 = Cells(表头行, 首列).End(xlDown).Row
        Else
            末行 = 表头行
        End If
        末列 = Cells(表头行, 首列).End(xlToRight).Column
        
        文件夹名称列号 = Range("文件夹名称").Column
        工作表列号 = Range("工作表").Column
        
    End Sub
    Sub 圆整()
        For Each c In Selection.Cells
            原值 = c
            圆整值 = Round(c, 0)
            c.Value = 圆整值
        Next
    End Sub
    Sub 清除()
        获取行列号
        If 末行 = 表头行 Then Exit Sub
        Cells(首行, 首列).Resize(末行 - 首行 + 1, 末列 - 首列 + 1).Select
        Selection.Interior.Pattern = xlNone
        Selection.ClearContents
        
        Cells(首行, 1).Select
    End Sub
    Sub cs()
        kk = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
        Debug.Print kk
        
        kk = Range("A33").EntireRow.Hidden
        Debug.Print kk
        
        
    End Sub
    
    
    Sub 分割文件(ByVal sw三维文件字典)
        获取行列号
        当前行 = 末行 + 1
        Cells(当前行, 文件路径列号).Select
        For Each k In sw三维文件字典.keys
            kk = Split(k, "|")
            FilePathName = kk(0)
            On Error Resume Next
            配置名 = kk(1)
            Call 拆分文件名(FilePathName)
            
            Cells(当前行, 文件路径列号) = FilePath '填写路径
            Cells(当前行, 文件夹名称列号) = FilenameWHZ '填写文件名
            Cells(当前行, 配置列) = 配置名
            Cells(当前行, 格式列号) = Right(Filename, 6) '填写类型
            
            Cells(当前行, 编号列号) = IIf(sw三维文件字典(k) <> "", sw三维文件字典(k), "0")
            
            当前行 = 当前行 + 1
        Next
    
    End Sub
    模块1
  • 相关阅读:
    痞子衡嵌入式:恩智浦MCU集成开发环境与开发工具教程
    痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.4)- 串行NOR Flash下载算法(Keil MDK工具篇)
    《痞子衡嵌入式半月刊》 第 17 期
    痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.3)- 串行NOR Flash下载算法(J-Link工具篇)
    《痞子衡嵌入式半月刊》 第 16 期
    痞子衡嵌入式:关于做技术的工作态度方面的几点建议
    痞子衡嵌入式:MCUXpresso IDE下添加C++源文件进SDK工程编译的方法
    痞子衡嵌入式:职场上有效地向师傅请教问题的几点建议
    痞子衡职场经验与见闻感悟分享
    痞子衡嵌入式:IAR在线调试时设不同复位类型可能会导致i.MXRT下调试现象不一致(J-Link/DAPLink)
  • 原文地址:https://www.cnblogs.com/yiguxianyun/p/9617340.html
Copyright © 2020-2023  润新知