VBA 在将多个 CSV 工作表复制到 Excel 工作表之前替换其所有逗号

问题描述 投票:0回答:1

我已经用VBA编写了一段代码,可以将多个工作表的所有必要信息复制到一个Excel工作表中。我的问题是,一列包含带小数的数字(例如 0,24),当放入 Excel 工作表时,这些数字会被分隔开。我已经附上了代码,只需要其中的一部分可以将所有逗号交换为点,以便各列保持整体。之后,我将手动重新格式化它,这对于我需要处理的数据量来说不是问题

提前致谢

代码:

Sub Mehrere_Dateien_auswaehlen()

 

Dim arrDateien As Variant
Dim wbQuelle As Workbook
Dim LetzteZeile As Long
Dim cntDatei As Long
Dim rngQuelle As Range

Application.ScreenUpdating = False
Application.DisplayAlerts = False

arrDateien = Application.GetOpenFilename(filefilter:="Exel-Dateien (*.cs*),*.cs*", MultiSelect:=True)

If IsArray(arrDateien) Then

For cntDatei = 1 To UBound(arrDateien)

    LetzteZeile = ThisWorkbook.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row

Set wbQuelle = Workbooks.Open(Filename:=arrDateien(cntDatei))
Set rngQuelle = wbQuelle.Worksheets(1).Range("B2").CurrentRegion

Intersect(rngQuelle, rngQuelle.Offset(1, 0)).Copy

ThisWorkbook.Worksheets(1).Range("A" & LetzteZeile + 1).PasteSpecial

wbQuelle.Close Savechanges:=False

Next cntDatei
End If

 

Application.ScreenUpdating = True
Application.DisplayAlerts = True

MsgBox "Erfolgreich zusammengeführt"

MyVar = Empty

End Sub

excel vba csv replace copy-paste
1个回答
0
投票

发生这种情况是因为上次使用的文本到列或默认)设置被设置为分割逗号。如果您在单个非空单元格上运行分隔文本到列,并且未选择任何选项(手动或通过脚本),您将有效地清除该设置,并且不会拆分您的值。

假设您想使用脚本来执行此操作:在粘贴到任何地方之前您需要运行以下几行 - 将“清除”设置:

With Range("A1")
    .TextToColumns Destination:=.Offset(0, 0), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True
End With

注意 - 这使用了

A1
但实际上根本没有改变它。只要它是活动工作表上的非空单元格,它就可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.