[英]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.