Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA-名为“”的文档已打开_Vba_Excel - Fatal编程技术网

VBA-名为“”的文档已打开

VBA-名为“”的文档已打开,vba,excel,Vba,Excel,我在Excel中编写了一个宏,并将其指定给工作簿中的一个按钮。按下时,它会向用户请求文件,打开该文件并将内容复制到原始工作簿的sheet2中,然后以新名称保存原始工作簿。然后在工作表上创建一个新按钮以运行另一个子例程。按下按钮时,会弹出一个窗口,显示名为document name的文档已打开。有没有办法解决这个问题?我假设发生这种情况是因为我正在用新名称保存原始工作簿 Sub openFile() Dim tempWB As Object, btn As Button, desktopPath

我在Excel中编写了一个宏,并将其指定给工作簿中的一个按钮。按下时,它会向用户请求文件,打开该文件并将内容复制到原始工作簿的sheet2中,然后以新名称保存原始工作簿。然后在工作表上创建一个新按钮以运行另一个子例程。按下按钮时,会弹出一个窗口,显示名为document name的文档已打开。有没有办法解决这个问题?我假设发生这种情况是因为我正在用新名称保存原始工作簿

Sub openFile()

Dim tempWB As Object, btn As Button, desktopPath As String

fileToOpen = Application.GetOpenFilename(Title:="Select transaction history export:")
If fileToOpen <> False Then
    Set tempWB = Workbooks.Open(Filename:=fileToOpen)
End If
If fileToOpen = False Then
    End
End If

ActiveSheet.Cells.Copy
Workbooks("Test.xlsm").Sheets("Sheet2").Activate
ActiveSheet.Cells.ClearContents
ActiveSheet.Cells(1, 1).Select
ActiveSheet.Paste
tempWB.Close

Set btn = ActiveSheet.Buttons.Add(650, 50, 100, 40)
With btn
    .OnAction = "action"
End With

desktopPath = (MacScript("(path to desktop from user domain as string)") & ":")

ActiveWorkbook.SaveAs Filename:=(desktopPath & "Result" & VBA.format(Date, "mm/dd/yy") & ".xlsm")

End Sub

Sub action()

Range("A1:B1").Font.Size = 14

End Sub

您是否仔细查看了命名新文件的值?我建议将tempWB.Close更改为tempWB.Close:Set tempWB=Nothing。这将释放变量到窗口句柄的链接。