VBA:打开,编辑,保存...在 VBA 编辑器打开时工作,而不是在关闭时工作?
Posted
技术标签:
【中文标题】VBA:打开,编辑,保存...在 VBA 编辑器打开时工作,而不是在关闭时工作?【英文标题】:VBA: Openning, Editing, Saving... works when the VB editor is open, not when closed? 【发布时间】:2014-01-09 15:40:05 【问题描述】:我正在尝试打开多个 Excel 文件(97,2003,2007,2010.. 等),对其进行编辑并保存。如果我打开 Visual Basic 编辑器 (Alt+F11) 并要求在开始时启用宏,我的宏可以工作,但如果我的 VB 编辑器关闭,它会打开文件并在保存第一个文件时停止。
我使用这个命令:
Set OpenWB = Workbooks.Open(FilePath)
其中OpenWB
被声明为Workbook
对象。效果很好,甚至在不被询问的情况下打开宏文件?但是,当我打开 Visual-Basic 编辑器 (Alt-F11) 时,我就有了
然后我编辑数据。然后使用此命令保存:
' Save File
OpenWB.Save
代码尝试保存,但随即中断。我尝试启用和禁用Application.DisplayAlerts
(真/假)。
问题是,我无法在 VB 编辑器打开的情况下运行它,因为我需要禁用宏警告,因为我有 1000 多个文件。然而,如果没有它打开,代码不会通过保存代码行。
部分代码示例:
'Path
FilePath = FL.Cells(FileListCount, 1).Value
' Begin first loop
While FilePath <> ""
' Alerts?
Application.DisplayAlerts = False
' Open File
Set OpenWB = Workbooks.Open(FilePath)
' Alerts
Application.DisplayAlerts = True
' Enter Replacement Loop
ReplacementCount = 1
ID = Ctrl.Cells(ReplacementCount + 11, 2).Value
While ID <> ""
OpenWB.Sheets(Ctrl.Cells(ReplacementCount + 11, 4).Value).Range(Ctrl.Cells(ReplacementCount + 11, 5).Value).Value = Ctrl.Cells(ReplacementCount + 11, 3).Value
ReplacementCount = ReplacementCount + 1
ID = Ctrl.Cells(ReplacementCount + 11, 2).Value
Wend
' Save File
OpenWB.Save
' Close file
OpenWB.Close
' status
FL.Cells(FileListCount, 2).Value = "***** UPDATED *****"
' Increment counter
FileListCount = FileListCount + 1
' Call new path
FilePath = FL.Cells(FileListCount, 1).Value
Wend
【问题讨论】:
您是否看到错误消息?如果是,是什么? 就是这样 - VBeditor 打开:安全通知问题?, - VBeditor 关闭:保存第一个文件后停止,没有错误。 【参考方案1】:这是未经测试的。
你已经试过了吗:
Workbooks.Open(FilePath)
Set OpenWB = ActiveWorkbook.ActiveSheet
'ur goes here code
OpenWB.Activate
ActiveWorkbook.Close SaveChanges:=True
它将消除保存和关闭行。
【讨论】:
以上是关于VBA:打开,编辑,保存...在 VBA 编辑器打开时工作,而不是在关闭时工作?的主要内容,如果未能解决你的问题,请参考以下文章
求EXCEL VBA代码。单元格输入内容保存后自动锁定有内容单元格。下次打开后不可编辑。