将单元格从一个工作表保存到另一个工作簿中的工作表 - 无需提示即可保存

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

【讨论】:

以上是关于将单元格从一个工作表保存到另一个工作簿中的工作表 - 无需提示即可保存的主要内容,如果未能解决你的问题,请参考以下文章

将单元格从打开的工作簿复制到另一个

VBA - 仅将可见单元格从工作表复制到另一个工作表

在 Excel 中将某些特定单元格从一个工作表复制到另一个工作表的 VBA 可能是啥?

从一个工作簿中查找单元格并将其复制到另一个工作簿

根据单元格值将特定范围而不是整行复制到另一个谷歌工作表

在同一活动工作簿中从一个工作表复制和粘贴到另一个工作表时出现错误 1004