在复制到Excel工作表之前,替换多个CSV工作表的所有逗号

bnlyeluc  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(86)

我写了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

b09cbbtk

b09cbbtk1#

这是因为上次使用的文本到列(* 或默认 *)设置被设置为逗号分隔。如果您在单个非空单元格上运行分隔文本到列,而没有选择任何选项(手动或通过脚本),则可以有效地清除该设置,并且它不会拆分您的值。
假设你想用一个脚本来做这件事:以下几行,你需要在粘贴到任何地方之前运行-将'清除'设置:

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,但实际上根本没有改变它。只要它是活动工作表上的非空单元格,它就可以工作。

相关问题