Vba Excel进程在VBScript中退出应用程序后仍在运行

Vba Excel进程在VBScript中退出应用程序后仍在运行,vba,excel,vbscript,excel-2007,Vba,Excel,Vbscript,Excel 2007,我有一个每天运行的VBScript来整理每天晚上上传到共享驱动器的Excel文件。我遇到的问题是,即使在退出Excel应用程序后,Excel进程仍在任务管理器中运行。我希望确保每次运行VBScript时Excel都完全终止 有趣的是,我还尝试在宏的VBA中关闭Excel,但它仍然不会终止进程,但如果我直接运行宏(通过打开Excel并从那里运行宏),进程确实会正确终止 我使用的代码如下: Dim xlApp Dim xlBook Set xlApp = CreateObject("Excel.A

我有一个每天运行的VBScript来整理每天晚上上传到共享驱动器的Excel文件。我遇到的问题是,即使在退出Excel应用程序后,Excel进程仍在任务管理器中运行。我希望确保每次运行VBScript时Excel都完全终止

有趣的是,我还尝试在宏的VBA中关闭Excel,但它仍然不会终止进程,但如果我直接运行宏(通过打开Excel并从那里运行宏),进程确实会正确终止

我使用的代码如下:

Dim xlApp
Dim xlBook

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("\\File\Path\XL.xlsm", 0, True)

xlApp.Visible = False

xlApp.Run "SortData"

xlApp.ActiveWorkbook.Close false

xlApp.Quit

Set xlBook = Nothing
Set xlApp = Nothing
编辑:

下面是在Excel宏“SortData”中运行的代码:

公共子排序数据()
将虚拟对象设置为字符串
将MyPath设置为字符串
将文件输入路径设置为字符串
将MyFiles()设置为字符串
作为字符串的Dim CheckFile
尺寸浓度(100000)为字符串
将所选内容设置为字符串
将T调暗为字符串
将日期变暗为日期
Dim CheckDate作为日期
暗淡如日期
将文件设置为对象
暗i,n,j等于长
不算长
模糊的FNum与长的FNum一样
Dim YearC()、Model()、SupNum()、SupName()、B5()、BPN()、MBPN()、PartName()、PackType()、QTY()、Rank()、PackWeight()、PartWeight()、Dunnage()作为变量
Dim更新为变体
Application.ScreenUpdating=False
MyPath=“\\File\Path\Sorted Parts list\”
日期=日期
FilesInPath=Dir(MyPath&“*.xl*”)
如果FilesInPath=“”,则转到良好状态
FNum=0
在文件输入路径“”时执行此操作
FNum=FNum+1
ReDim保留我的文件(1到FNum)
MyFiles(FNum)=MyPath和FilesInPath
FilesInPath=Dir()
环
最新=“1/1/2000”任意开始日期
Set TheFile=CreateObject(“Scripting.FileSystemObject”)
对于FNum=LBound(MyFiles)到UBound(MyFiles)
CheckFile=MyFiles(FNum)
Updated=TheFile.Getfile(CheckFile).DateLastModified
如果更新>最新,则“在文件夹中查找最新文件”
最新=更新
如果结束
下一个FNum
如果最新>=日期-7,则转到末尾
好:
将文件路径设置为字符串
FilePath=“\\File\Path\Parts List.xls”
工作簿。打开的文件名:=文件路径
ActiveWorkbook.Sheets(1)。选择
雷迪姆年(100000)
雷迪姆型号(100000)
ReDim SupNum(100000)
ReDim SupName(100000)
雷迪姆B5(100000)
雷迪姆BPN(100000)
ReDim MBPN(100000)
ReDim部件名(100000)
ReDim包类型(100000)
重拨数量(100000)
雷迪姆排名(100000)
雷迪姆背包重量(100000)
雷迪姆零件重量(100000)
雷迪姆衬垫(100000)
范围(“BB:HJ,Y:AZ,V:V,T:T,S:S,J:O,E:E”)。选择
选择。删除移位:=xlToLeft
范围(“K:K”)。选择
选择。删除移位:=xlToLeft
i=0
计数=0
范围(“D1”)。选择
TheSelection=修剪(Selection.Value)
在选择“”时执行此操作
从选择中选择案例
案例“AE”、“HCM ST+ENG”、“SIOO”
下一站
其他情况
结束选择
'检查重复项
虚拟=选择和修剪(选择.偏移(0,3).值)
对于n=0到i
如果Conc(n)=虚拟,则
下一站
如果结束
下一个
如果i为0,则Conc(i)=Dummy
YearC(i)=选择.偏移量(0,-3).值
模型(i)=选择。偏移量(0,-2)。值
SupNum(i)=选择偏移量(0,-1).Value
SupName(i)=选择值
B5(i)=选择偏移量(0,1).值
BPN(i)=选择偏移量(0,2).值
MBPN(i)=选择偏移量(0,3).值
零件名称(i)=选择.偏移量(0,4).值
PackType(i)=选择.偏移量(0,5).值
数量(i)=选择偏移量(0,6).值
秩(i)=选择。偏移量(0,7)。值
PackWeight(i)=选择.偏移量(0,8).值
零件重量(i)=选择。偏移量(0,9)。值
衬垫(i)=选择。偏移量(0,10)。值
i=i+1
下一步:
计数=计数+1
选择。偏移量(1,0)。选择
TheSelection=修剪(Selection.Value)
如果计数>100000,则
调试。打印“转义”
出口接头
如果结束
环
雷迪姆(一)
雷迪姆保留模型(一)
ReDim保留SupNum(一)
雷迪姆名字(一)
雷迪姆保护区B5(一)
雷迪姆保留BPN(i)
雷迪姆保留MBPN(i)
ReDim保留部件名(i)
ReDim保存包类型(i)
重拨保留数量(一)
保留秩(i)
雷迪姆保留重量(一)
雷迪姆保留部分重量(i)
雷迪姆保留衬垫(一)
'范围(“A1:N”和计数)。ClearContents
Sheets.Add After:=工作表(Worksheets.Count)
工作表(Worksheets.Count).Name=“排序数据”
工作表(工作表.计数)。选择
ActiveSheet.Range(“A1:A”&i).Value=WorksheetFunction.Transpose(YearC)
ActiveSheet.Range(“B1:B”和i).Value=WorksheetFunction.Transpose(模型)
ActiveSheet.Range(“C1:C”&i).Value=WorksheetFunction.Transpose(SupNum)
ActiveSheet.Range(“D1:D”&i).Value=WorksheetFunction.Transpose(SupName)
ActiveSheet.Range(“E1:E”&i).Value=WorksheetFunction.Transpose(B5)
ActiveSheet.Range(“F1:F”&i).Value=WorksheetFunction.Transpose(BPN)
ActiveSheet.Range(“G1:G”&i).Value=WorksheetFunction.Transpose(MBPN)
ActiveSheet.Range(“H1:H”&i).Value=WorksheetFunction.Transpose(PartName)
ActiveSheet.Range(“I1:I”&I).Value=WorksheetFunction.Transpose(PackType)
ActiveSheet.Range(“J1:J”&i).Value=工作表功能转置(数量)
ActiveSheet.Range(“K1:K”&i).Value=WorksheetFunction.Transpose(秩)
ActiveSheet.Range(“L1:L”和i).Value=WorksheetFunction.Transpose(PackWeight)
ActiveSheet.Range(“M1:M”&i).Value=WorksheetFunction.Transpose(零件重量)
ActiveSheet.Range(“N1:N”&i).Value=WorksheetFunction.Transpose(衬垫)
ActiveSheet.Range(“A1:N1”).自动筛选
ActiveSheet.Columns.AutoFit
TS=日期
j=透镜(TS)
Dummy=“”
对于i=1到j
如果中间(日期i,1)=“/”则
虚拟=虚拟&“-”
其他:虚拟=虚拟和中间(TS,i,1)
如果结束
接下来我
Application.DisplayAlerts=False
ActiveWorkbook.SaveAs MyPath&“已排序的DC零件列表”和Dummy&“.xlsx”,51
Application.DisplayAlerts=True
Application.ScreenUpdating=True
出口接头
最后:
Application.DisplayAlerts=True
Application.ScreenUpdating=True
端接头

试试这个,看看是否有帮助:

Dim xlApp
Dim xlBook
'Create a shell
Dim WsShell 
Set WsShell = CreateObject("WScript.Shell")

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("\\File\Path\XL.xlsm", 0, True)

xlApp.Visible = False

xlApp.Run "SortData"

'Close the workbook, may want to save
xlApp.ActiveWorkbook.Close true

Set xlBook = Nothing
Set xlApp = Nothing
Set WsShell = Nothing
'Close the script
WScript.Quit

试试这个,看看是否有帮助:

Dim xlApp
Dim xlBook
'Create a shell
Dim WsShell 
Set WsShell = CreateObject("WScript.Shell")

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("\\File\Path\XL.xlsm", 0, True)

xlApp.Visible = False

xlApp.Run "SortData"

'Close the workbook, may want to save
xlApp.ActiveWorkbook.Close true

Set xlBook = Nothing
Set xlApp = Nothing
Set WsShell = Nothing
'Close the script
WScript.Quit

尝试将以下内容添加到“”的开头
If ActiveWorkbook.Close then
    Exit Sub
End If