将单元格从一个工作表保存到另一个工作簿中的工作表 - 无需提示即可保存
Posted
技术标签:
【中文标题】将单元格从一个工作表保存到另一个工作簿中的工作表 - 无需提示即可保存【英文标题】:Saving Cells from One Worksheet to a worksheet in a diff workbook -- having it save without prompt 【发布时间】:2021-04-20 14:23:11 【问题描述】:快速提问。
我在这里有这个宏,它具有我需要的功能(将工作簿中的一个工作表中的 2 个单元格保存到不同工作簿中的工作表中。
我唯一的问题是它一直提示保存文件,并且不会让我实际保存它。
对我需要添加什么代码来解决问题有什么想法吗?它似乎以只读方式打开文件,也许这就是问题所在?
Sub Test()
Dim x As Workbook
Dim y As Workbook
Dim vals As Variant
'## Open both workbooks first:
Set x = Workbooks.Open("C:/File.xlsx")
Set y = ThisWorkbook
'Store the value in a variable:
vals = y.Sheets("List").Range("B3:B4").Value
'Use the variable to assign a value to the other file/sheet:
x.Sheets("P1").Range("A1:A2").Value = vals
'Close x:
x.Close
End Sub
【问题讨论】:
x.Close SaveChanges:=True
?
嗯,我试过了,由于某种原因,它提示将不同的文件名保存为“测试副本”,所以仍然没有自动保存。有点困惑为什么要这样做。
它似乎以只读方式打开文件,也许这就是问题所在?是的,这就是问题所在。
试试x.SaveAs fileName:='File.xlsx", FileFormat:=52, CreateBackup:=False, AccessMode:=xlExclusive, _ ConflictResolution:=Excel.XlSaveConflictResolution.xlLocalSessionChanges
之类的东西,你也可以尝试在子开始时关闭显示警报。
在 End Sub 上方添加它会给我一个语法错误。如果语法正确,假设或多或少消除了只读问题?
【参考方案1】:
我已经对此进行了测试,它可以在没有警报消息的情况下工作。只需在打开和保存语句中编辑文件路径
Option Explicit
Sub Test()
Dim x As Workbook
Dim y As Workbook
Dim vals As Variant
'## Open both workbooks first:
Set x = Workbooks.Open("C:\Test.xlsx")
Set y = ThisWorkbook
'Store the value in a variable:
vals = y.Sheets("List").Range("B3:B4").Value
'Use the variable to assign a value to the other file/sheet:
x.Sheets("P1").Range("A1:A2").Value = vals
'Turns off Alerts
Application.DisplayAlerts = False
'Saves file with changes
x.SaveAs Filename:="C:\Test.xlsx", FileFormat:=51, CreateBackup:=False, AccessMode:=xlExclusive, _
ConflictResolution:=Excel.XlSaveConflictResolution.xlLocalSessionChanges
'Close x:
x.Close
'turns alerts back on
Application.DisplayAlerts = True
End Sub
【讨论】:
以上是关于将单元格从一个工作表保存到另一个工作簿中的工作表 - 无需提示即可保存的主要内容,如果未能解决你的问题,请参考以下文章