excel中VBA对多个文件的操作

添加引用 "Scripting.FileSystemObject" (Microsoft Scripting Runtime) ‘用于操作文件、目录

Sub 数据整理部分()
‘
‘ 数据整理到新的Sheet
‘‘
    Dim fso As New FileSystemObject
    Dim folder As folder
    Dim file As file
    Dim strExt As String
    Dim wkb As Workbook

    strExt = "xlsx"     ‘查找特定后缀名文件
    Set folder = fso.GetFolder(ThisWorkbook.Path)
    For Each file In folder.Files
        fileExt = fso.GetExtensionName(file)

        If fileExt = strExt Then
            Set wkb = Workbooks.Open(file)
            ‘原始数据表单移到第一
            Sheets("Sheet1").Move before:=Sheets(1)
            If wkb.Sheets.Count < 2 Then
                wkb.Sheets.Add after:=wkb.Sheets("Sheet1")
            End If

            Dim sheet1 As Worksheet
            Dim sheet2 As Worksheet
            Set sheet1 = wkb.Sheets(1)
            Set sheet2 = wkb.Sheets(2)

            Dim dataCount As Long
            dataCount = sheet1.UsedRange.Rows.Count
            ‘获取数据行数,添加dt
            sheet2.Range("A1").Value = "dt(s)"
            sheet2.Range("A2:A" & dataCount).Value = 0.0175

            subName = "_euler"

            If (InStr(file.Name, subName) > 0) Then
                ‘符合条件的文件
                wkb.Sheets(2).Name = "euler"
                sheet1.Columns("Q:S").Copy
                sheet2.Range("B1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

            Else
                wkb.Sheets(2).Name = "Sensor"
                ‘陀螺仪数据
                sheet1.Columns("AC:AE").Copy
                sheet2.Range("B1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                ‘磁力计数据
                sheet1.Columns("AI:AK").Copy
                sheet2.Range("E1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                ‘加速度计数据
                sheet1.Columns("AF:AH").Copy
                sheet2.Range("H1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

                ‘这里函数加括号会报错!!!
                计算位移部分 sheet2
            End If
        ‘关闭excel
        wkb.Save
        wkb.Close
        End If
    Next

End Sub

Sub 计算位移部分(sheet As Worksheet)
    Dim dataCount As Long
    dataCount = sheet.UsedRange.Rows.Count

    ‘原始数据积分
    sheet.Range("K1").Value = "Ax(m/s/s)"
    sheet.Range("K2:K" & dataCount).FormulaR1C1 = "=RC8*9.81"
    sheet.Range("L1").Value = "Vx(m/s)"
    sheet.Range("L2").Value = 0
    sheet.Range("L3:L" & dataCount).FormulaR1C1 = "=R[-1]C+RC[-1]*RC1"
    sheet.Range("M1").Value = "Sx(m)"
    sheet.Range("M2").Value = 0
    sheet.Range("M3:M" & dataCount).FormulaR1C1 = "=R[-1]C+RC[-1]*RC1"

    ‘减去噪声积分
    sheet.Range("K1").Value = "Ax-ave100(m/s/s)"
    sheet.Range("K2:K" & dataCount).FormulaR1C1 = "=(RC8-AVERAGE(R2C8:R101C8))*9.81"
    sheet.Range("L1").Value = "Vx-ave100(m/s)"
    sheet.Range("L2").Value = 0
    sheet.Range("L3:L" & dataCount).FormulaR1C1 = "=R[-1]C+RC[-1]*RC1"
    sheet.Range("M1").Value = "Sx-ave100(m)"
    sheet.Range("M2").Value = 0
    sheet.Range("M3:M" & dataCount).FormulaR1C1 = "=R[-1]C+RC[-1]*RC1"

End Sub
时间: 2024-08-05 15:07:59

excel中VBA对多个文件的操作的相关文章

excel中vba将excel中数字和图表输出到word中

参考:https://wenku.baidu.com/view/6c60420ecc175527072208af.html 比如将选区变为图片保存到桌面: 1 Sub 将选区转为图片存到桌面() 2 Dim ans As Byte, Pic As String, Paths As String 3 On Error Resume Next 4 Paths = CreateObject("WScript.Shell").SpecialFolders("Desktop"

excel中VBA的使用

遇到的问题 在工作中遇到了一点小小的问题,需要给我负责带的班级的同学们测试男生1000米,女生800米的成绩.表格是这样的: 体育成绩表 序号 班级 姓名 性别 男1000.女800 成绩 1 1 张三 男 3.50   2 1 李四 女 3.44   我们在录入完成绩后,需要按照一定的标准去给出学生成绩,标准是这样的: 需要我们根据每个学生的成绩,给出对应的分数.于是,我就计算了下我的工作量:每个人对应的需要给分数,总共需要给六个班 x 70 个人也就是差不多420个人给分数.那样的一个工作量

【python】解析Excel中使用xlrd库、xlwt库操作,读取Excel文件详解(一)

上文提供了Excel文件读写操作的基本模板,本文进一步详解这两个模块的功能. 一.Book(class) 由xlrd.open_work("example.xls")返回 nsheets: sheets数 sheet_names: sheet名称列表 sheets: sheet列表 sheet_by_index(sheetx): 按序号提取sheet sheet_by_name(sheet_name): 按名称提取sheet 二.Sheet(class) 由Book object相关方

对比俩个Excel中的数据,并且进行数据操作

项目需要, 去对比俩个Excel中的数据是否一样, 不一样需要做替换, 有个同事在处理中(处理了一天 1000 多条吧,移交给我), 本人在想通过人工手动的方式,一个个做对比得花多长时间啊, 主要是数据量还很大,最主要的是, 我也不想干,不干没办法. 思考之后: 方案一:准备把Excel1 数据读取到,放在一个很大的List中, 然后在读Excel2, 之后做对比和替换. 注:所在的公司根本不知道,封装公共类库,公共方法, 谁用谁写那种模式. 方案二:把俩个excel中的数据全部导入到数据库中,

java 中的try catch在文件相关操作的使用

import java.io.CharConversionException; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; /** * 文件操作 * */ public class TestReadFile { public static void main(String[] args) { FileReader reader =null; try { r

Qt的Model/View Framework解析(数据是从真正的“肉(raw)”里取得,Model提供肉,所以读写文件、操作数据库、网络通讯等一系列与数据打交道的工作就在model中做了)

最近在看Qt的Model/View Framework,在网上搜了搜,好像中文的除了几篇翻译没有什么有价值的文章.E文的除了Qt的官方介绍,其它文章也很少.看到一个老外在blog中写道Model/View是他认为Qt中最不好的一部分了.真的是这样吗?为了回馈开源社区,我写了这篇blog,写的是我认为比较有价值的东东.题目起得是解析,但也没有特别细节的介绍,点到为止,有兴趣的Tx可以继续讨论.我所看的资料有<C++ GUI Programming with Qt 4, Second Edition

[Powershell / VBA] 把excel中的表分离成独立的excel文件

This article also published in Eng @ http://www.cnblogs.com/LarryAtCNBlog/p/4441201.html 今天在两个地方看到了这样一个问题:把一个excel中的表复制出来另存为一个独立的excel文件.其中一个是cnblog,另一个想不起来了.想到自己将来也可能遇到这样的问题,于是用powershell做了一个脚本以备不时之需. Powershell 当然,首先要有一个excel文件包括了一堆表. 用脚本自动化excel最常

Excel中的VBA编程

目的:有时我们需要对Excel文件中大量的数据进行整理,此时如果使用手动整理会非常繁琐而且容易出错.而如果采用VBA语言,在Excel中根据需求编写一段简单的代码就能自动完成大量数据的整理工作. 1.以Excel 2007为例,如果要进行VBA编程,需要启用"开发工具" 选项.在Excel 选项对话框中勾选[在功能区显示"开发工具"选项卡]复选框. 在开发工具选项中点击"查看代码",打开Microsoft Visual Basic界面. 2.在M

通过VBA在Excel中添加菜单和菜单项按钮(Excel启动时候添加)

将以下代码保存到.xlam或.xla(Excel97-2003)文件. 在ThisWorkBook对象中,添加Workbook_Open事件,调用启动菜单过程. Private Sub Workbook_Open() Call MenuSetup(True) End Sub '----------------------------------------------- '在Excel中添加菜单和菜单项按钮(Excel启动时候添加) '------------------------------