Excel 关闭上次打开的工作簿

Excel 关闭上次打开的工作簿,excel,vba,Excel,Vba,“我的代码”现在打开一个excel工作簿,由用户选择,我将其指定给文件名变量。然后打开文件名,将其内容复制到另一个工作簿中。这是有效的 现在,我想让它在复制后,在fileName Sub importarRelatórioAtividade() Dim fileName As Variant fileName = Application.GetOpenFilename() If fileName <> False Then

“我的代码”现在打开一个excel工作簿,由用户选择,我将其指定给
文件名
变量。然后打开
文件名
,将其内容复制到另一个工作簿中。这是有效的

现在,我想让它在复制后,在
fileName

Sub importarRelatórioAtividade()
    Dim fileName As Variant
        
    fileName = Application.GetOpenFilename()

    If fileName <> False Then
        Workbooks.Open fileName:=fileName
        Dim myrange As Range
        Set myrange = Sheets("Sheet1").Range("A3")
        
        ' Find non-empty rows (check two columns)
        Dim n_rows_A As Long, n_rows_B As Long, n_rows As Long
        n_rows_A = CountRows(myrange)
        n_rows_B = CountRows(myrange.Offset(0, 1))
        n_rows = WorksheetFunction.Max(n_rows_A, n_rows_B)
        
        ' Do the copy here
        ThisWorkbook.Worksheets("Análise").Range("A6").Resize(n_rows, 12).Value = _
                myrange.Resize(n_rows, 12).Value
                
        Workbooks(fileName).Close
    End If
End Sub

Function CountRows(ByRef r As Range) As Long
    If IsEmpty(r) Then
        CountRows = 0
    ElseIf IsEmpty(r.Offset(1, 0)) Then
        CountRows = 1
    Else
        CountRows = r.Worksheet.Range(r, r.End(xlDown)).Rows.Count
    End If
End Function
Sub-importarRelatórioativiidade()
变暗文件名作为变量
fileName=Application.GetOpenFilename()
如果文件名为False,则
工作簿。打开文件名:=文件名
将myrange变暗为Range
设置myrange=Sheets(“Sheet1”)。范围(“A3”)
'查找非空行(选中两列)
将n_行A变长,n_行B变长,n_行变长
n_rows_A=CountRows(myrange)
n_rows_B=CountRows(myrange.Offset(0,1))
n_rows=WorksheetFunction.Max(n_rows\u A,n_rows\B)
“在这儿复印
ThisWorkbook.Worksheets(“Análise”).Range(“A6”).Resize(n_行,12)。值=_
myrange.Resize(n_行,12).Value
工作簿(文件名)。关闭
如果结束
端接头
函数CountRows(ByRef r作为范围)的长度
如果是空的(r),那么
CountRows=0
ElseIf为空(r.Offset(1,0)),则
CountRows=1
其他的
CountRows=r.WORKS.Range(r,r.End(xlDown)).Rows.Count
如果结束
端函数

使用对象。这样处理起来就容易多了

改变

Workbooks.Open fileName:=fileName

最后,您只需使用

wbNew.Close '<~~ If changes are made then you will get a prompt to save
'wbNew.Close (True) '<~~ Save and close (No Saving Prompts)
'wbNew.Close (False) '<~~ Close without saving (No Saving Prompts)
wbNew.Close'
wbNew.Close '<~~ If changes are made then you will get a prompt to save
'wbNew.Close (True) '<~~ Save and close (No Saving Prompts)
'wbNew.Close (False) '<~~ Close without saving (No Saving Prompts)