我创建了一个宏,允许用户将路径放在Textbox
&打开文件。
但是,一旦打开文件并复制数据,我希望宏关闭新打开的工作簿。由于打开的文件总是可以更改,我需要关闭它的代码?
Option Explicit
Private Sub Cmd_1_Click()
Dim Wbk As ThisWorkbook
Dim Wbk1 As Workbooks
Dim xlapp As Excel.Application
Set xlapp = New Excel.Application
Set Wbk = ThisWorkbook
Set Wbk1 = Workbooks
Application.ScreenUpdating = False
Application.EnableEvents = True
Application.DisplayAlerts = False
If Txt_1.Value = "" Then
MsgBox "No Path Entered, please enter path to proceed", vbRetryCancel, "Path Missing"
Else
Wbk1.Open(Txt_1.Value).Sheets("sheet1").UsedRange.Copy
Wbk.Activate
Sheets("sheet1").Range("A1").PasteSpecial
MsgBox "Done"
Set xlapp = Nothing
Set Wbk = Nothing
Set Wbk1 = Nothing
End If
End Sub
答案 0 :(得分:0)
当您打开工作簿时,Open()
函数具有返回值:您刚刚打开的工作簿对象。将其保存在变量中,然后使用Close()
方法专门关闭该工作簿:
If Txt_1.Value = "" Then
MsgBox "No Path Entered, please enter path to proceed", vbRetryCancel, "Path Missing"
Else
Set Wbk = Workbooks.Open(Txt_1.Value)
Wbk.Sheets("sheet1").UsedRange.Copy
ThisWorkbook.Sheets("sheet1").Range("A1").PasteSpecial
Wbk.Close False
MsgBox "Done"
End If
确保Wbk
被声明为Workbook
(这是一种对象类型)而不是ThisWorkbook
(它是一个对象而不是一个类型)。
模块中有许多不必要的变量和代码。您应该删除所有不需要的东西。请详细研究此代码,以了解为什么它正在运行。在我看来,你仍然没有掌握VBA中如何使用对象的概念。