vba代码,读取txt文件,txt文件第一行有ID,name,class等等,找到class对应的数据,写入工作簿的sheet1里面class字段

此VBA宏演示如何读取文本文件的内容,根据class字段将数据分别保存到Excel工作簿的Sheet1中。它首先定义文件路径,创建新工作簿,然后找到class字段的位置,逐行读取文件并将class值写入指定列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用 VBA 读取文本文件,并将其内容根据 class 字段分别保存在工作簿的 sheet1 中的示例代码:

Sub Example()
    Dim filePath As String
    Dim fileNumber As Integer
    Dim line As String
    Dim sheet1 As Worksheet
    Dim rowNumber As Long
    
    ' 要读取的文件路径
    filePath = "C:\File.txt"
    
    ' 创建新工作簿,并获取要写入数据的工作表
    Workbooks.Add
    Set sheet1 = ActiveWorkbook.Sheets(1)
    
    ' 在要写入数据的工作表中指定列的位置
    Dim colName As String
    colName = "C" '要保存到的列
    
    ' 打开并读取文件
    fileNumber = FreeFile()
    Open filePath For Input As #fileNumber
    
    ' 获取文件第一行中每个字段的位置
    line = Line Input #fileNumber
    Dim fields() As String
    fields = Split(line, ",")
    Dim classIndex As Integer
    For i = 0 To UBound(fields)
        If fields(i) = "class" Then
            ' 记录 class 字段的位置
            classIndex = i
            Exit For
        End If
    Next i
    
    rowNumber = 1
    Do Until EOF(fileNumber)
        Line Input #fileNumber, line
        
        ' 将行按逗号进行拆分
        fields = Split(line, ",")
        
        ' 将 class 字段的值写入到指定的列中
        sheet1.Range(colName & rowNumber).Value = fields(classIndex)
        
        rowNumber = rowNumber + 1
    Loop
    Close #fileNumber
    
End Sub



在上面的代码中,我们首先设置要读取的文件路径,
并使用 Workbooks.Add 创建了一个新的工作簿。
然后,我们使用 Set 语句获取了其中的 sheet1。

接下来,我们使用 colName 变量指定了要写入数据的列的位置。
在打开文件并读取其内容之后,
我们使用 Line Input #fileNumber 函数读取文件的第一行,
将其按逗号进行拆分,并查找 class 字段的位置。

在处理每一行的数据时,我们再次将该行按逗号进行拆分,
并将 class 字段的值写入到指定的列中。

请注意,上面的代码假定每个文件的格式与以下示例类似:
ID,name,class
1,John,A
2,Alice,B
3,Bob,A
4,Eve,C
如果每个文件的格式有所不同,
则可以根据需要更改对应的代码,
以确保将数据正确地写入到工作表中。








import os import pandas as pd from openpyxl import load_workbook from openpyxl.utils.dataframe import dataframe_to_rows # 指定要合并的文件夹路径 folder_path = r"E:\aaaa\aaaa" fields_to_write = ['aaaa', 'aaaa'] # 获取文件夹中所有的 xlsx 文件路径 xlsx_files = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if f.endswith('.xlsx')] # 创建一个空的 DataFrame 用于存储合并后的数据 merged_data = pd.DataFrame() # 循环读取每个 xlsx 文件,将它们合并到 merged_data 中 for xlsx_file in xlsx_files: # 使用 pandas 读取 xlsx 文件,并清理无效字符引用 wb = load_workbook(filename=xlsx_file, read_only=False, data_only=True, keep_vba=False, keep_links=False, keep_protection=False) for sheet_name in wb.sheetnames: ws = wb[sheet_name] for row in ws.rows: for cell in row: cell.value = cell.value if cell.value is None else str(cell.value).strip() df = pd.read_excel(wb) # 将读取到的数据追加到 merged_data 中 merged_data = merged_data.append(df, ignore_index=True) # 在 merged_data 中添加新的一列数据 merged_data['new_column'] = 'new_value' # 创建一个新的工作簿 wb_new = load_workbook(write_only=True) ws_new = wb_new.create_sheet('merged_data') # 将 DataFrame 中的数据逐行写入到新的工作簿中 rows = dataframe_to_rows(merged_data[fields_to_write + ['new_column']], index=False) for row in rows: ws_new.append(row) # 保存合并后的数据到新的 xlsx 文件中 wb_new.save(r"E:\aaaa\aaaa\merged_file.xlsx")使用此代码会出现ValueError: Invalid file path or buffer object type: <class 'openpyxl.workbook.workbook.Workbook'>的报错,请优化下
06-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值