Powershell 自动安装Excel自定义标签页,开启宏

目录

  • [一. 自动安装Excel自定义标签页](#一. 自动安装Excel自定义标签页)
  • [二. 开启Excel的宏功能](#二. 开启Excel的宏功能)

一. 自动安装Excel自定义标签页

  • .xlam文件和powershell脚本文件需要在同一个目录下
  • 思路:
    • .xlam文件复制到Excel的AddIns目录中
    • 通过com创建一个Excel对象,然后创建一个工作簿
    • 然后通过该Excel对象添加对应的.xlam文件
powershell 复制代码
# 要安装的插件名称
$addInFileName = "09-MyTool.xlam"
# 插件所在的路径
$sourceAddin = Join-Path $PSScriptRoot $addInFileName

# 创建Excel的COM对象
$excel = New-Object -ComObject Excel.Application
# 非表示
$excel.Visible = $false

# 方式1: 获取Excel的插件目录
# $addInFolderPath = "$env:APPDATA\Microsoft\AddIns\"

# 方式2: 获取Excel的插件目录
$addInFolderPath = $excel.UserLibraryPath
$targetAddinFilePath = Join-Path $addInFolderPath $addInFileName

# 如果Excel插件目录中没有指定的插件的话
if (-not (Test-Path "$targetAddinFilePath")) {
    # 复制当前脚本目录下的插件到Excel插件目录中
    Copy-Item $sourceAddin $targetAddinFilePath -Force
}

try {

    # 创建一个空工作簿
    $excel.Workbooks.Add() | Out-Null
    
    # 遍历所有的插件对象, 注册前, 查看自定义的插件对象是否存在
    $addin = $excel.AddIns | Where-Object {
        $_.Name -eq $addInFileName
    } | Select-Object -First 1

    # 已安装判断
    if ($addin.Installed) {
        throw [System.Exception]::new("插件已安装,无需重复安装...")
    }

    # 添加插件到Excel中
    $addin = $excel.AddIns.Add($targetAddinFilePath, $true)
    if (-not $addin) {
        throw [System.Exception]::new("插件注册失败...")
    }

    # 启用插件
    $addin.Installed = $true
    Write-Host "插件安装成功..."

} catch {
    Write-Host $_
} finally {
    # 退出打开的Excel
    $excel.Quit()
    # 释放Excel的COM对象
    [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
}

Pause

二. 开启Excel的宏功能

  • 思路:
    • 动态获取当前Excel的版本
    • 根据版本找到Excel所在的注册表位置
    • 修改宏策略所在注册表的值,实现自动开启宏功能
powershell 复制代码
<#
    现在主流Excel的version
        2016
        2019
        2021
        Microsoft 365
    全部都是 16.0
#>
# 动态获取Excel的version
$excel = New-Object -ComObject Excel.Application
$version = $excel.Version
$excel.Quit()

# Excel的安全设置注册表位置
$path = "HKCU:\Software\Microsoft\Office\$version\Excel\Security"
if (!(Test-Path $path)) {
    New-Item -Path $path -Force | Out-Null
}

<#
    宏策略
        1 启用所有宏【不安全】
        2 禁用宏, 并提示
        3 禁用所有宏【默认】
        4 仅允许数字签名宏
#>
# 将宏策略设置为 → 禁用宏, 并提示
Set-ItemProperty -Path $path -Name "VBAWarnings" -Value 2
# 允许VBA项目访问
Set-ItemProperty -Path $path -Name "AccessVBOM" -Value 1

Write-Host "Excel宏策略已设置完成, 重启Excel即可生效..."
Pause
相关推荐
DONSEE广东东信智能读卡器9 天前
用PowerShell实现Windows 本地 WSS/HTTPS 自签名证书配置方法
windows·网络协议·https·powershell·身份证阅读器
DogDaoDao9 天前
Windows 下 Git 报错:`touch` 无法识别 —— 原因分析与 7 种解决方案(从入门到精通)
windows·git·程序员·npm·powershell·cmd·touch
console.log('npc')11 天前
Windows 11 安装 WSL2 + Ubuntu + Docker + Codex + Sub2API 教学
windows·docker·powershell·ubantu·codex
CV工程师(Ctrl)12 天前
Codex 在 Windows 中文路径执行bash命令编码问题复盘
powershell·codex
vortex514 天前
PowerShell 的命令补全方案: PSReadLine + PSCompletions + argc + Carapace
windows·powershell
深念Y1 个月前
踩坑实录:把 Windows 默认 PowerShell 换成 7.x 到底有多坑?一条龙解决指南
windows·乱码·bug·控制台·powershell·管道·流式
IOT那些事儿1 个月前
Windows PowerShell配置Qt5编译运行环境
windows·powershell·qt5
今夕资源网1 个月前
powershell工具包 安装升级脚本并设置UTF-8 环境快捷方式创建 将powershell的编码默认改为UTF-8
开发语言·utf-8·powershell·utf-8编码·powershell7·powershell5·设置utf-8编码
fengyehongWorld1 个月前
Powershell 注册.dll类库到系统
powershell
就叫年华吧丶1 个月前
Git Bash、CMD 与 PowerShell 的区别详解
linux·git·命令行·powershell·cmd·gitbash