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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM