簡體   English   中英

如何關閉所有打開的Excel文件

[英]How to close all the excel file open

我正在運行Marco來打開ChDir列表中的所有.txt文件。 並將數據從.txt附加到主文件.xls。 但是運行腳本時,.txt文件將在PC中以.xls打開。 如果有5個.txt文件,它將打開5個.xls文件。 我的問題是,一旦腳本中添加了所需的數據,我該如何關閉所有5個.xls文件? 我不想手動關閉它,因為將來輸入文件可能很多。 謝謝。

Sub Macro1()

For r = 2 To 400
c = 1

If (Sheets("File").Cells(r, c)) = "" Then
r = 401

Else

ChDir "C:\Users\csleow\Desktop\wafermap_stack"


Workbooks.OpenText Filename:= _
    Sheets("File").Cells(r, c) _
    , Origin:=437, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array( _
    Array(0, 1), Array(5, 1), Array(10, 1), Array(15, 1), Array(20, 1), Array(25, 1), Array(30, _
    1), Array(35, 1), Array(40, 1), Array(45, 1), Array(50, 1), Array(55, 1), Array(60, 1), _
    Array(65, 1), Array(70, 1), Array(75, 1), Array(80, 1), Array(85, 1), Array(90, 1), Array( _
    94, 1), Array(99, 1), Array(104, 1), Array(109, 1), Array(114, 1), Array(119, 1), Array(124 _
    , 1), Array(129, 1), Array(134, 1), Array(139, 1), Array(144, 1), Array(149, 1), Array(154, _
    1), Array(159, 1), Array(164, 1), Array(169, 1), Array(174, 1), Array(179, 1), Array(184, 1 _
    ), Array(189, 1), Array(194, 1), Array(199, 1), Array(204, 1), Array(209, 1), Array(214, 1) _
    , Array(219, 1), Array(224, 1), Array(229, 1), Array(234, 1), Array(239, 1), Array(244, 1), _
    Array(249, 1), Array(254, 1), Array(259, 1), Array(264, 1), Array(269, 1), Array(274, 1), _
    Array(279, 1), Array(284, 1), Array(289, 1), Array(294, 1), Array(299, 1), Array(304, 1), _
    Array(309, 1), Array(315, 1), Array(320, 1), Array(325, 1), Array(330, 1), Array(335, 1), _
    Array(340, 1), Array(345, 1), Array(350, 1), Array(355, 1), Array(360, 1)), _
    TrailingMinusNumbers:=True

Cells.Select
Selection.Copy
Windows("Composite_9221.xlsm").Activate
Sheets("Temp").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select

Macro3

End If

Next

End Sub

嘗試這個:

For Each WkbkName In Application.Workbooks()
  If WkbkName.Name <> ThisWorkbook.Name Then WkbkName.Close SaveChanges:=True
Next

來源

編輯:由於您要將數據附加到5個xls文件中,所以我假設您需要在關閉之前保存這些工作簿。 @Nathan_Sav:代碼已編輯!

打開TXT文件並將信息復制到Composite工作簿之后,您應該能夠在使用它時依次關閉每個窗口。

Sub Macro1()
    Dim r As Long, c As Long, fp As String

    fp = "C:\Users\csleow\Desktop\wafermap_stack" & Chr(92)

    With Worksheets("file")
        For r = 2 To 400
            c = 1

            If .Cells(r, c) = "" Then
                r = 401
            Else
                With .Parent.OpenText(Filename:=fp & Cells(r, c), _
                        Origin:=437, StartRow:=1, DataType:=xlFixedWidth, _
                        FieldInfo:=Array(Array(0, 1), Array(5, 1), Array(10, 1), Array(15, 1), _
                                         Array(20, 1), Array(25, 1), Array(30, 1), Array(35, 1), _
                                         Array(40, 1), Array(45, 1), Array(50, 1), Array(55, 1), _
                                         Array(60, 1), Array(65, 1), Array(70, 1), Array(75, 1), _
                                         Array(80, 1), Array(85, 1), Array(90, 1), Array(94, 1), _
                                         Array(99, 1), Array(104, 1), Array(109, 1), Array(114, 1), _
                                         Array(119, 1), Array(124, 1), Array(129, 1), Array(134, 1), _
                                         Array(139, 1), Array(144, 1), Array(149, 1), Array(154, 1), _
                                         Array(159, 1), Array(164, 1), Array(169, 1), Array(174, 1), _
                                         Array(179, 1), Array(184, 1), Array(189, 1), Array(194, 1), _
                                         Array(199, 1), Array(204, 1), Array(209, 1), Array(214, 1), _
                                         Array(219, 1), Array(224, 1), Array(229, 1), Array(234, 1), _
                                         Array(239, 1), Array(244, 1), Array(249, 1), Array(254, 1), _
                                         Array(259, 1), Array(264, 1), Array(269, 1), Array(274, 1), _
                                         Array(279, 1), Array(284, 1), Array(289, 1), Array(294, 1), _
                                         Array(299, 1), Array(304, 1), Array(309, 1), Array(315, 1), _
                                         Array(320, 1), Array(325, 1), Array(330, 1), Array(335, 1), _
                                         Array(340, 1), Array(345, 1), Array(350, 1), Array(355, 1), _
                                         Array(360, 1)), _
                        TrailingMinusNumbers:=True)
                    .Worksheets(1).Cells(1, 1).CurrentRegion.Cells.Copy _
                      Destination:=Workbooks("Composite_9221.xlsm").Worksheets("Temp").Range("A1")
                    .Close savechanges:=False
                End With
                'done with the the TXT fle, close it

                'I don't know what this does
                Macro3

            End If

        Next r
    End With

End Sub

我沒有為此設置一個完整的測試環境,而是通過有限的字段創建了三個TXT。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM