如何使用vba保存更改并关闭而不会出错

时间:2018-03-18 19:08:41

标签: excel vba

我是使用vba的新手,这是我第一次尝试编写代码。

第一个工作簿MACRO2018是我的计算模板。进入MACRO2018我进行计算并每次使用不同的名称保存。第二个工作簿UzklausulenteleGeras是我粘贴并存储这些计算的所有摘要的地方。

我根据需要复制并粘贴所有信息的代码,但UzklausulenteleGeras不会保存也不会关闭。最后我得到了错误

  

Microsoft Excel无法访问文件“C:\ C788DF00”。有   几个可能的原因:

我尝试了很多工作簿并保存组合,但是得到了同样的错误。

所以,我等待你的评论,并提前致谢。

Private Sub Uzklausa_Click()

   Workbooks.Open ("C:\UzklausulenteleGeras.xlsx")

   Workbooks("UzklausulenteleGeras").Worksheets("2018").Range("B" & Rows.Count).End(xlUp).EntireRow.Select
   Selection.Copy
   Selection.Insert Shift:=xlDown
   Workbooks("UzklausulenteleGeras").Worksheets("2018").Range("B" & Rows.Count).End(xlUp).EntireRow.Select
   Application.CutCopyMode = False
   Selection.ClearContents

   ThisWorkbook.Worksheets("Skaiciavimai").Range("B2:U2").Copy

   Workbooks("UzklausulenteleGeras").Worksheets("2018").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
   Application.CutCopyMode = False
   Application.ScreenUpdating = True

   ActiveWorkbook.Close SaveChanges:=True

End Sub

1 个答案:

答案 0 :(得分:0)

首先声明对象以表示各种工作簿。依赖ActiveWorkbook是危险的 - 它可能不是您认为的工作簿!使用Workbook对象,您始终可以确定正在对哪个工作簿执行操作。

Private Sub Uzklausa_Click()
   Dim wbUzkl as Workbook

   Set wbUzkl = Workbooks.Open("C:\UzklausulenteleGeras.xlsx")

   wbUzkl.Worksheets("2018").Range("B" & Rows.Count).End(xlUp).EntireRow.Select
   Selection.Copy
   Selection.Insert Shift:=xlDown
   wbUzkl.Worksheets("2018").Range("B" & Rows.Count).End(xlUp).EntireRow.Select
   Application.CutCopyMode = False
   Selection.ClearContents

   ThisWorkbook.Worksheets("Skaiciavimai").Range("B2:U2").Copy

   wbUzkl.Worksheets("2018").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
   Application.CutCopyMode = False
   Application.ScreenUpdating = True

   wbUzkl.Close SaveChanges:=True
End Sub