使用 VBA 将 CSV 文件导入当前工作簿的 Sheet1 中,并删除除后三列之外的所有数据,可以使用以下代码:

Sub ImportCSVAndDeleteExtraColumns()
    Dim filePath As String
    Dim ws As Worksheet
    Dim targetRange As Range
    Dim lastCol As Long
    
    ' 选择要导入的 CSV 文件
    filePath = Application.GetOpenFilename("CSV Files (*.csv), *.csv")
    
    ' 检查是否选择了文件
    If filePath <> "False" Then
        ' 创建新的工作表并导入 CSV 数据
        Set ws = ThisWorkbook.Worksheets("Sheet1") ' 替换为你的工作表名称
        lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
        
        ' 清除除了后三列之外的数据
        ws.Range(ws.Cells(1, 1), ws.Cells(65536, lastCol - 3)).Clear
        
        ' 设置目标数据范围
        Set targetRange = ws.Cells(1, lastCol - 2).Resize(65536, 3)
        
        ' 导入 CSV 数据
        With ws.QueryTables.Add(Connection:="TEXT;"& filePath, Destination:=targetRange)
            .TextFileParseType = xlDelimited
            .TextFileCommaDelimiter = True ' CSV 文件逗号分隔
            .Refresh
            .Delete
        End With
    End If
End Sub

在这个例子中,我们首先使用 Application.GetOpenFilename 方法选择要导入的 CSV 文件。

然后,我们通过设置 ws 变量来选择当前工作簿中的 Sheet1 工作表(你可以根据需要更改工作表名称)。

接下来,我们使用 CellsColumns 属性找到 Sheet1 工作表中最后一列的列号 (lastCol 变量)。

然后,我们使用 Clear 方法清除除了后三列之外的所有数据。

接下来,我们设置目标数据范围 (targetRange 变量),这里我们假设将 CSV 数据放置在 Sheet1 工作表的最后三列之后,你可以根据需要进行调整。

然后,我们使用 QueryTables 对象的 Add 方法将 CSV 文件导入到目标数据范围中。我们设置了连接字符串来指定 CSV 文件的路径,然后指定了文本文件的解析类型、分隔符等属性。最后,我们调用 Refresh 方法来刷新查询表,然后立即将其删除。

请注意,在导入 CSV 文件之前,该方法会在 Sheet1 工作表中清除除了后三列之外的所有数据,并将 CSV 数据导入到后三列之后。

你可以将上述代码粘贴到 VBA 编辑器中的一个新的子过程中,然后运行该过程,以实现将 CSV 文件导入当前工作簿的 Sheet1 中,并删除除后三列的其他数据。请在运行代码之前保存好工作簿。

VBA 导入 CSV 文件并删除除后三列外的所有数据

原文地址: https://www.cveoy.top/t/topic/SmF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录