關閉特定excel檔案
公司ERP系統會下載一個EXCEL檔案,我的帳號登入後如果下載該資料,第一次會轉出檔名Link.xls的資料檔
第二次會轉出檔名Link(1).xls的資料檔
第三次會轉出檔名Link(2).xls的資料檔
如果我帳號一直沒有登出,第N次就會轉出檔名Link(N-1).xls的資料檔
之後我會將Link.xls整頁手工複製貼上至 主檔.xlsm 其中一個頁面,然後開始執行VBA處理資料,最後我想省下一道工,就是用VBA也將Link.xls關閉(不用存檔)。
目前遇到的問題是當要關閉的檔名是Link(1).xls的時候無法關閉,請問要如何撰寫這部分的程序。
Sub Test1()
Workbooks("Link").Activate
Workbooks("Link").Close
End Sub [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117713&ptid=23484]1#[/url] [i]pointchi[/i] [/b]
'FPath= "D:\Link.xls"
Set WB = Workbooks.Open('FPath檔案來源路徑)
WB.Close S 大,我將您說明的字串加入我的VBA,當檔案為Link是可以自動關閉,可是Link(1)...Link(N-1)時仍無法關閉,請問是否我有哪邊錯誤,附上我的VBA
Sub step01()
a = Cells(13, 4)
If Len(a) >= 28 Then
Worksheets("raw").Cells(13, 4).Font.Name = "Arial"
Worksheets("raw").Cells(13, 4).Font.Size = 35
Worksheets("raw").Cells(13, 4).Font.FontStyle = "粗體"
Else
Worksheets("raw").Cells(13, 4).Font.Name = "Arial"
Worksheets("raw").Cells(13, 4).Font.Size = 48
Worksheets("raw").Cells(13, 4).Font.FontStyle = "粗體"
End If
Set WB = Workbooks.Open("C:\Users\Point\Downloads\link.xlsm")
WB.Close
End Sub [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117730&ptid=23484]3#[/url] [i]pointchi[/i] [/b]
我將您說明的字串加入我的VBA,當檔案為Link是可以自動關閉,可是Link(1)...Link(N-1)時仍無法關閉,請問是否我有哪邊錯誤,附上我的VBA
[color=Blue]>> 看你的程式只有針對Link動作,其它的沒有,還是方便可以附上檔案,描述需求結果,謝謝[/color] S大您好,
附檔解壓縮後,TEST1是我的主檔,Link是我的資料來源檔案。
我會將Link整頁手工複製貼上至 TEST1的Raw標籤頁,然後開始執行VBA處理資料,最後我想省下一道工,就是用VBA也將Link.xls關閉(不用存檔)。
目前我可以自動關閉Link的檔案。
可是因為公司的ERP系統於我的帳號登入後下載該資料,
第一次會轉出檔名Link.xls的資料檔
第二次會轉出檔名Link(1).xls的資料檔
第三次會轉出檔名Link(2).xls的資料檔
如果我帳號一直沒有登出,第N次就會轉出檔名Link(N-1).xls的資料檔
因此我第二次作業TEST1的檔案時,資料來源的檔案檔名為Link(1),VBA因為只找尋Link但找不到,就無法自動關閉Link(1)
以此類推,我第三次作業TEST1時,來源的檔案檔名為Link(2)。
有甚麼語法可以不管我第N次執行TEST1時,來源的檔名為Link(N-1),VBA能夠關閉Link(N-1)這個檔案。
[attach]34408[/attach] [quote]S大您好,
附檔解壓縮後,TEST1是我的主檔,Link是我的資料來源檔案。
我會將Link整頁手工複製貼上至 TES ...
[size=2][color=#999999]pointchi 發表於 2021-11-18 22:47[/color] [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117747&ptid=23484][img]http://forum.twbts.com/images/common/back.gif[/img][/url][/size][/quote]
如果我帳號一直沒有登出,第N次就會轉出檔名Link(N-1).xls的資料檔
[color=Blue]>>只要登入後沒有執行任何動作,ERP會自動幫你轉出資料檔嗎? 轉出後會自動幫你存檔?[/color]
我會將Link整頁手工複製貼上至 TEST1的Raw標籤頁,然後開始執行VBA處理資料,最後我想省下一道工,就是用VBA也將Link.xls關閉(不用存檔)。目前我可以自動關閉Link的檔案。
[color=Blue]>>建議登入ERP後下載資料檔後,然後用VBA執行,選取由ERP轉出資料檔-->執行處理資料-->關閉資料檔案[/color] [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117749&ptid=23484]6#[/url] [i]samwang[/i] [/b]
如果我帳號一直沒有登出,第N次就會轉出檔名Link(N-1).xls的資料檔
>>只要登入後沒有執行任何動作,ERP會自動幫你轉出資料檔嗎? 轉出後會自動幫你存檔?
[color=Blue]>>登入ERP後,如有要作業時才手動按ERP上的匯出按鈕,ERP會匯出成Link.xls,再重登入ERP之前,每次匯出的檔名會依序+1,為Link.xls,Link(1).xls,Link(2).xls,Link(N-1).xls...
所以如果我第5次按匯出按鈕,匯出的檔名為Link(4).xls,不然我就是每次要匯出檔案前先登出再重登入ERP,這樣匯出的檔才會是Link.xls,VBA才不會出現錯誤訊息[/color]
我會將Link整頁手工複製貼上至 TEST1的Raw標籤頁,然後開始執行VBA處理資料,最後我想省下一道工,就是用VBA也將Link.xls關閉(不用存檔)。目前我可以自動關閉Link的檔案。
>>建議登入ERP後下載資料檔後,然後用VBA執行,選取由ERP轉出資料檔-->執行處理資料-->關閉資料檔案
[color=Blue]>>ERP下載資料檔後,我原本也想用VBA執行,可是同樣遇到我要選取的檔案Link.xls可行,可是第2次以後變成Link(1).xls,VBA就無法找到。
因此我才每次先手動複製至作業主檔TEST1的Raw標籤頁,最少VBA可以執行我大部分重複工作,只是開頭要手動複製頁面,結尾要手動關閉檔案。[/color]
[color=Blue]我是想說如果可以於作業結束,VBA幫我也順便將Link(N-1).xls的檔案關閉,我也就可以研究如何複製Link(N-1).xls的檔案至作業主檔TEST1的Raw標籤頁[/color] [i=s] 本帖最後由 samwang 於 2021-11-19 12:14 編輯 [/i]
[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117752&ptid=23484]7#[/url] [i]pointchi[/i] [/b]
我會將Link整頁手工複製貼上至 TEST1的Raw標籤頁,然後開始執行VBA處理資料,最後我想省下一道工,就是用VBA也將Link.xls關閉(不用存檔)。目前我可以自動關閉Link的檔案。
>>建議登入ERP後下載資料檔後,然後用VBA執行,選取由ERP轉出資料檔-->執行處理資料-->關閉資料檔案
>>ERP下載資料檔後,我原本也想用VBA執行,可是同樣遇到我要選取的檔案Link.xls可行,[color=Red]可是第2次以後變成Link(1).xls,VBA就無法找到[/color]。
因此我才每次先手動複製至作業主檔TEST1的Raw標籤頁,最少VBA可以執行我大部分重複工作,只是開頭要手動複製頁面,結尾要手動關閉檔案。
[color=Blue]>>所以建議[color=Lime]人工[/color]選取由ERP轉出資料檔-->[color=Lime]VBA[/color]執行處理資料-->[color=Lime]VBA[/color]關閉資料檔案,選取由ERP轉出資料檔(由人工選取需求檔案),這樣流程是否有比較好?[/color] [i=s] 本帖最後由 pointchi 於 2021-11-19 21:40 編輯 [/i]
[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117753&ptid=23484]8#[/url] [i]samwang[/i] [/b]
我會將Link整頁手工複製貼上至 TEST1的Raw標籤頁,然後開始執行VBA處理資料,最後我想省下一道工,就是用VBA也將Link.xls關閉(不用存檔)。目前我可以自動關閉Link的檔案。
>>建議登入ERP後下載資料檔後,然後用VBA執行,選取由ERP轉出資料檔-->執行處理資料-->關閉資料檔案
>>ERP下載資料檔後,我原本也想用VBA執行,可是同樣遇到我要選取的檔案Link.xls可行,可是第2次以後變成Link(1).xls,VBA就無法找到。
因此我才每次先手動複製至作業主檔TEST1的Raw標籤頁,最少VBA可以執行我大部分重複工作,只是開頭要手動複製頁面,結尾要手動關閉檔案。
>>所以建議[color=Lime]1.人工(YES)[/color]選取由ERP轉出資料檔-->[color=Lime]2.VBA(YES)[/color]執行處理資料-->[color=Lime]3.VBA(這點我不太了解??)[/color]關閉資料檔案,選取由ERP轉出資料檔(由人工選取需求檔案),這樣流程是否有比較好?
Sorry,我的意思可能S大誤會了,我目前的作業是
[color=Lime]1.手動[/color]按ERP上的匯出按鈕,匯出Link(N-1).xls
[color=Lime]手動[/color]選取ERP轉出資料檔Link(N-1).xls,手動複製至作業主檔TEST1的Raw標籤頁
[color=Lime] 2.VBA[/color]執行處理TEST1資料
[color=Blue]3.手動選取第1點中ERP匯出的Link(N-1).xls並且關閉-->是否可以用VBA關閉Link(N-1).xls[/color] dim linkbook as workbook
for each linkbook in workbooks
if lcase(.name) like "link*.xls*" then .close 0
next [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117785&ptid=23484]10#[/url] [i]准提部林[/i] [/b]
版大您好,
我將您的語法貼至我的內容,如下:
Sub step01()
a = Cells(13, 5)
If Len(a) >= 28 Then
Worksheets("raw").Cells(13, 5).Font.Name = "Arial"
Worksheets("raw").Cells(13, 5).Font.Size = 35
Worksheets("raw").Cells(13, 5).Font.FontStyle = "粗體"
Else
Worksheets("raw").Cells(13, 5).Font.Name = "Arial"
Worksheets("raw").Cells(13, 5).Font.Size = 48
Worksheets("raw").Cells(13, 5).Font.FontStyle = "粗體"
End If
Dim linkbook As Workbook
For Each linkbook In Workbooks
If LCase[color=Red](.Name)[/color] Like "link*.xls*" Then .Close 0
Next
End Sub
可是出現(.Name)錯誤訊息為"不正確的引用",是否因為我原本的VBA語法哪裡有錯誤,導致後續的異常。 [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117789&ptid=23484]11#[/url] [i]pointchi[/i] [/b]
看了准大回覆,套用他的回覆,應該可以符合您的需求了,請測試看看,謝謝
Dim wb As Workbook
For Each wb In Workbooks
If LCase(wb.Name) Like "link*.xls*" Then wb.Close 0
Next [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117790&ptid=23484]12#[/url] [i]samwang[/i] [/b]
感謝版大與S大,成功了~
接下來我再來研究開頭的Link(N-1).xls檔案複製至作業主檔TEST1的Raw標籤頁
頁:
[1]