excel - 在 Excel VBA 中查找和替换文件路径
问题描述
我目前正在处理一个必须定期用新数据更新的 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)
在“EPICs”工作表中,只有第一个表的前 2 个单元格被正确替换,而在“Evolution”工作表中,没有一个被替换。
这是在前两个单元格之一中:
=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")
解决方案
推荐阅读
- javascript - 嵌套的 Javascript 如何返回“传递”承诺?
- c# - 有什么方法可以防止使用新 csproj 格式的 .NET 应用程序存在于 bin/debug/net472/AppName 中?
- powershell - 在 VSCode 的 PowerShell 命令提示符中隐藏完整文件路径
- python - 在 django 中加载图像时的可疑操作
- vue.js - Webpack:为什么 vue-loader 不能转译?
- javascript - 使用 Formdata React Native 将图像上传到 Firebase
- sql - 使用 ORACLE SQL 从具有不同 ID 的同一表中查找重复项?
- r - R中的曲线和绘图函数有什么区别?
- c# - 将值传递给自定义属性
- google-app-engine - 基于 GAE/GO 标准的 MIP 求解器