我目前正在处理一个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")