在Excel VBA中查找和替换文件路径

时间:2018-08-24 10:15:11

标签: excel vba csv

我目前正在处理一个Excel文件,该文件必须定期更新以获取新数据。

数据源是CSV文件。

使用VBA,我打开CSV文件,将数据转换为命名表。 Excel包含以前的数据源路径,需要将其替换为新的路径。

为了简化任务,我在“ ACTUALISATION”工作表的单元格C11中放置了先前的数据源路径,因此我只在那获取旧的数据源,并在其他所有工作表中用新的替换了旧的数据源。

我遇到的问题是旧数据源未在所有位置正确替换,这很奇怪,因为替换参数与使用CTRL + H的手动查找和替换方法相同。

有人知道为什么/如何发生吗?

Sub ActualiserTout()   
    Dim exportGalaxy As String
    Dim tbl As ListObject
    Dim rng As Range
    Dim reportingWS(1 To 5) As String
    Dim aRemplacer As String
    Dim remplacement As String

    exportGalaxy = v360FilePath()

    reportingWS(1) = "Graphs Fenêtre Eval"
    reportingWS(2) = "Graphs V360 FO - EPICs"
    reportingWS(3) = "Graphs V360 BO - EPICs"
    reportingWS(4) = "Graphs V360 FO - Evolution"
    reportingWS(5) = "Graphs V360 BO - Evolution"

    aRemplacer = Worksheets("ACTUALISATION").Cells(11, 3).Value
    remplacement = Chr(39) & exportGalaxy & Chr(39) & "!"

    If exportGalaxy = "" Then
        Exit Sub
    End If

    Workbooks.Open exportGalaxy, Delimiter:=4, Local:=True

    Set rng = Range(Range("A1"), Range("A1").SpecialCells(xlLastCell))
    Set tbl = ActiveSheet.ListObjects.Add(xlSrcRange, rng, , xlYes)
    tbl.Name = "DonnéesBrutes"

    Workbooks("DATA_V360-1.xlsm").Activate

    For Each ws In reportingWS
        Worksheets(ws).Cells.Replace _
        What:=aRemplacer, _
        Replacement:=remplacement, _
        LookAt:=xlPart, _
        SearchOrder:=xlByRows, _
        MatchCase:=False, _
        SearchFormat:=False, _
        ReplaceFormat:=False
    Next

    Worksheets("ACTUALISATION").Cells(11, 3).Value = Chr(39) & remplacement
End Sub

Function v360FilePath()
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Filters.Add "CSV Files", "*.csv", 1

        If .Show = True Then
            'Récupère le chemin, nom et extension du fichier sélectionné
            v360FilePath = .SelectedItems.Item(1)
        Else
            MsgBox "no file selected"
        End If

    End With
End Function

感谢您的帮助!

编辑: 我尝试用Export(4).csv替换来自Export(3).csv的数据

在第一个工作表中,路径/文件名/扩展名在所有位置均已正确替换

=NB.SI.ENS('C:\Users\E15378\Downloads\Export(4).csv'!DonnéesBrutes[ReponseQ1]; "=2"; 'C:\Users\E15378\Downloads\Export(4).csv'!DonnéesBrutes[debutCas]; ">="&[@[Date Semaine]]; 'C:\Users\E15378\Downloads\Export(4).csv'!DonnéesBrutes[debutCas]; "<"&[@[Date Semaine]]+7)

在“ EPIC”工作表中,只有第一个表的前两个单元格被正确替换,而在“进化”工作表中,没有任何单元被替换。

这是前两个单元格之一:

=NB.SI.ENS('C:\Users\E15378\Downloads\Export(3).csv'!DonnéesBrutes[clickFacturation];">0"; 'C:\Users\E15378\Downloads\Export(3).csv'!DonnéesBrutes[formatVision360]; "pop-up"; 'C:\Users\E15378\Downloads\Export(3).csv'!DonnéesBrutes[fluxBandeau]; ">7,49912E+11")*100/B9

在第二个单元格之后,其余的都没有替换:

=SOMME.SI.ENS('C:\Users\E15378\Downloads\Export(4).csv'!DonnéesBrutes[Temps affichage EPIC Facturation]; 'C:\Users\E15378\Downloads\Export(4).csv'!DonnéesBrutes[formatVision360]; "pop-up"; 'C:\Users\E15378\Downloads\Export(4).csv'!DonnéesBrutes[fluxBandeau]; ">7,49912E+11")/NB.SI.ENS('C:\Users\E15378\Downloads\Export(4).csv'!DonnéesBrutes[Temps affichage EPIC Facturation]; ">0"; 'C:\Users\E15378\Downloads\Export(4).csv'!DonnéesBrutes[formatVision360]; "pop-up"; 'C:\Users\E15378\Downloads\Export(4).csv'!DonnéesBrutes[fluxBandeau]; ">7,49912E+11")

0 个答案:

没有答案