Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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
Excel在Word中的应用&x27;关不上_Excel_Vba_Ms Word - Fatal编程技术网

Excel在Word中的应用&x27;关不上

Excel在Word中的应用&x27;关不上,excel,vba,ms-word,Excel,Vba,Ms Word,我已经尝试了所有关闭应用程序的方法,但仍停留在任务管理器中打开的后台 Dim appXL作为对象,fileXL作为对象,nameXlFile作为字符串,filePath作为字符串 filePath=file\u dir&“\”文件名 设置appXL=CreateObject(“Excel.Application”) appXL.Visible=False 设置fileXL=Workbooks.Open(文件名:=filePath,只读:=True) appXL.quit set appXL

我已经尝试了所有关闭应用程序的方法,但仍停留在任务管理器中打开的后台


Dim appXL作为对象,fileXL作为对象,nameXlFile作为字符串,filePath作为字符串
filePath=file\u dir&“\”文件名
设置appXL=CreateObject(“Excel.Application”)
appXL.Visible=False
设置fileXL=Workbooks.Open(文件名:=filePath,只读:=True)

appXL.quit 
set appXL = Nothing

尝试在您写“…”的地方添加以下内容:

这将强制在退出应用程序之前关闭文件

我相信Excel会询问您是否要保存工作簿(即使它是以只读方式打开的)。这将使Excel在退出例程后保持打开/活动状态,但您无法看到它

完整的代码应如下所示:

Sub OpenExcelWorkbook()
    Dim appXL As Object, fileXL As Object, nameXlFile, filePath As String

    filePath = file_dir & "\" & file_name
    Set appXL = CreateObject("Excel.Application")
    appXL.Visible = False
    Set fileXL = Workbooks.Open(FileName:=filePath , ReadOnly:=True)

    ' Do additional/optional stuff with your workbook here...

    fileXL.Close False ' Close the workbook without saving

    appXL.quit 
End Sub
Dim appXL As Object, fileXL As Object, nameXlFile, filePath As String
filePath = file_dir & "\" & file_name
Set appXL = CreateObject("Excel.Application")
appXL.Visible = False
Set fileXL = Workbooks.Open(FileName:=filePath , ReadOnly:=True)

fileXL.Save
fileXL.Close
你能这样试试吗

Sub OpenExcelWorkbook()
    Dim appXL As Object, fileXL As Object, nameXlFile, filePath As String

    filePath = file_dir & "\" & file_name
    Set appXL = CreateObject("Excel.Application")
    appXL.Visible = False
    Set fileXL = Workbooks.Open(FileName:=filePath , ReadOnly:=True)

    ' Do additional/optional stuff with your workbook here...

    fileXL.Close False ' Close the workbook without saving

    appXL.quit 
End Sub
Dim appXL As Object, fileXL As Object, nameXlFile, filePath As String
filePath = file_dir & "\" & file_name
Set appXL = CreateObject("Excel.Application")
appXL.Visible = False
Set fileXL = Workbooks.Open(FileName:=filePath , ReadOnly:=True)

fileXL.Save
fileXL.Close
您不需要设置appXL=Nothing,因为
appXL

当前过程和“垃圾收集器”将处理它。

当您从另一个VBA应用程序中自动执行Excel并使用非限定Excel对象时,会发生此模式。某种程度上,它强制VBA运行时在对象的父对象上创建隐藏/虚拟引用

通过自动化,您必须非常具体地使用Excel对象。当从另一个应用程序驱动时,Excel对非限定对象的容忍度会降低确认所有内容。从

Set fileXL = appXL.Workbooks.Open(FileName:=filePath , ReadOnly:=True)
'           ^^^^^^^
并确保代码中的每个Excel对象都是完全限定的

此外,如果可以的话,最好让Excel应用程序可见,以观察正在发生的事情。有时会出现由于某种原因显示警报的情况,例如未保存的工作簿。可以使用禁用这些警报

appXL.DisplayAlerts = False
这也很有用,但至少在应用程序的开发阶段,让appXL可见是很有用的,直到您对它相当满意为止

p、 美国。
我在MS Word中测试了您的代码,有无明确的
appXL.
限定,删除了
中的所有其他内容…
。如果没有资格,Excel的实例仍保留在任务管理器中。有了限定,它就消失了。

您是否尝试注释掉appXL.Visible=False,或者在最后将其设置为True?可能有一个对话框窗口询问一些问题。您是否在退出之前关闭工作簿,是否找到了它?另外,
可能是问题所在,因此可能会将更完整的代码发布到。是的,不幸的是,我尝试过并且没有通过任何消息,我也尝试过在没有“…”的情况下立即打开和关闭,但不起作用…手头的问题不太可能是由于没有关闭工作簿造成的,因为它是在
ReadOnly:=True
模式下打开的。事实上这不太可能。当您以只读模式打开工作簿时,仍然可以对其进行修改。修改后,Excel将询问用户是否应保存更改(但应保存为新文档)。如果工作簿具有在开始时自动计算的公式,则工作簿将被“修改”,并显示(隐藏)保存更改的提示。这会阻止Excel正确退出,因为应用程序等待用户响应……是的,这是一种可能的情况。我的意思是“…”代码不太可能对WB进行更改。但是有可能世界银行有外部联系。问题是:PI试图使用:
Set fileXL=appXL.Workbooks.Open(FileName:=filePath,ReadOnly:=True)appXL.quit
并打开一个空文档以确保安全性。。。。我快疯了:(@CeccoBeppe我在MS Word中测试了您的代码,有无
appXL。
明确限定,删除了
中的所有其他内容。没有限定,Excel的实例仍保留在任务管理器中。有了限定,它就消失了。您现在可能面临着不同的问题。您能更清楚地解释一下吗关于什么是新问题?我的意思是,我把限定条件放在一个原始excel文件“visible=true”上进行了尝试。不幸的是,它们留在任务管理器上。您是否省略了所有其他内容,只测试了显示的几行?正如我所说,代码的其余部分可能有一些不限定的对象。非常感谢您和其他人帮助过我的用户。我不得不等待大约半分钟来升级任务管理器。