VBA:打开,编辑,保存...在VBA编辑器打开时工作,而不是在关闭时工作?

时间:2014-01-09 15:40:05

标签: excel-vba save vba excel

我正在尝试打开多个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(True / False)。

问题是,我无法在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

1 个答案:

答案 0 :(得分:0)

这是未经测试的。

你已经尝试过了:

Workbooks.Open(FilePath)
Set OpenWB = ActiveWorkbook.ActiveSheet

'ur goes here code

OpenWB.Activate

ActiveWorkbook.Close SaveChanges:=True

它将消除保存和关闭线。