You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取已打开指定文件的Excel进程PID并赋值给自定义变量

获取打开指定文件的Excel进程PID并赋值给变量的实现方法

你需要的功能可以通过PowerShell实现,原生Get-Process没有自带按打开文件筛选Excel进程的参数,以下是两种可直接使用的实现方案:

方案1:快速匹配(适合同名文件不同时打开的场景)

执行速度快,通过Excel窗口标题带文件名的特性匹配:

# 替换为你的目标文件完整路径
$targetFile = "C:\Excel\file.xlsx"
$fileName = Split-Path $targetFile -Leaf
$FilePID = (Get-Process -Name EXCEL | Where-Object {$_.MainWindowTitle -like "*$fileName*"}).Id

赋值完成后直接输入$FilePID即可查看对应进程ID。

方案2:精准路径匹配(无重名冲突,稳定性更高)

适合多个重名文件同时打开的场景,直接匹配文件完整路径:

# 替换为你的目标文件完整路径
$targetFilePath = "C:\Excel\file.xlsx"
$FilePID = $null

Get-Process -Name EXCEL -ErrorAction SilentlyContinue | ForEach-Object {
    $currentPID = $_.Id
    $windowHandle = $_.MainWindowHandle
    try {
        $excelApp = [Runtime.InteropServices.Marshal]::GetActiveObject("Excel.Application")
        for ($i = 1; $i -le $excelApp.Workbooks.Count; $i++) {
            if ($excelApp.Workbooks.Item($i).FullName -eq $targetFilePath -and $excelApp.Hwnd -eq $windowHandle) {
                $FilePID = $currentPID
                break
            }
        }
    } catch {}
    if ($FilePID) { break }
}

补充说明:

  • 若没有找到打开指定文件的Excel进程,$FilePID会保持空值,可直接用于后续逻辑判断
  • 执行脚本时需确保对应Excel文件处于已打开状态

内容的提问来源于stack exchange,提问作者ASD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 23:09:04