我有一个带有脚本的工作簿,该脚本将文件名保存在 2 个不同位置的 Excel 文档。我已经测试并尝试了该脚本,它运行得很好。今天,我对 3 个旧文件使用了相同的脚本,我注意到这些文件没有以相同的文件名保存(并且第一个文件没有保存在正确的指定位置。我不明白为什么。我有权更改文件或将文件添加到两个地点。
sub replace()
[some declarations]
'bepaalt het bestandspad en de bestandsnaam van het geopende xlsm bestand
wbfilepath0 = ThisWorkbook.Path
wbFilepath1 = "I:\KMAR\LTC\SPT\IV&CIS\IV PLANS\BICC_BVI_IMPORT\03_TCB\"
wbFilename0 = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 5)
'sluit een eventueel geopend GAB Database .xlsx bestand zonder wijzigingen op te slaan
myWB = wbFilename0 & ".xlsx"
For Each WB In Workbooks
If WB.Name = myWB Then
WB.Close SaveChanges:=False
Else
End If
Next WB
[some lines of code]
wbfilepath0 = ThisWorkbook.Path
wbFilepath1 = "I:\KMAR\LTC\SPT\IV&CIS\IV PLANS\BICC_BVI_IMPORT\03_TCB\"
wbFilename0 = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 5)
'kopieert de 2 benodigde tabbladen naar een nieuw bestand
ThisWorkbook.Sheets(Array("Hoofdbestand", "Database")).Copy
Application.DisplayAlerts = False
'Onderstaande slaat het nieuwe bestand 2x op maar op verschillende locaties. Als .XLSX bestand en kan alleen als het bestand met deze naam niet al geopend is, daar is aan het begin van deze procedure op gecheckt
With ActiveWorkbook
.SaveAs Filename:=wbfilepath0 & wbFilename0 & ".xlsx", FileFormat:=51
.SaveAs Filename:=wbFilepath1 & wbFilename0 & ".xlsx", FileFormat:=51
.Close
[some other lines of code]
end sub
wbFilename0 = GAB Database 2023.xlsm
第一个保存结果是
'2023 GAB Database 2023.xlsx'
,第二个保存结果是 'GAB Database 2023.xlsx'
第一个保存文件的位置不是在此目录中
"[..]\118 (UPD WEKELIJKS) Update\2023"
而是在此目录中:"[..]\118 (UPD WEKELIJKS) Update\"
这段代码有什么原因吗?该文件未被某人打开。
我为 2024 年文件执行了此操作,这对两个文件都运行良好。
编辑: 在必须保存文件的目录属性中,我看到“只读”被选中。但是,我可以毫无问题地读取/写入/保存文件到目录,但这可能是脚本的问题吗?
我相信Workbook.SaveAs总是创建一个新文件。我还没有测试当您尝试“另存为”现有文件时它会做什么。但是,这并不能解决系统如何得出您发布的文件名的问题!
如果您不需要 new 文件,请测试该文件是否已存在,然后尝试 Workbook.Save。