吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 501|回复: 3
收起左侧

[求助] 有懂C++或者MFC修改已经打开的Excel内容的吗?

[复制链接]
flingba 发表于 2024-10-13 13:13
50吾爱币
EXCEL窗口已经打开里面有内容,现在想修改它的内容,不是保存后修改,是直接改 现在可以用 GetActiveObject 来修改最开始打开的EXCEL窗口内容,但无法修改后面打开的,我是想先找到窗口,然后再修改内容(不是用模拟按键)。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

qq465881818 发表于 2024-10-13 20:05
[C++] 纯文本查看 复制代码
#include <iostream>
#include <Windows.h>
#include <comdef.h>
#include <Excel.h>

int main()
{
    CoInitialize(NULL);

    try
    {
        // 获取已经打开的Excel应用程序
        Excel::_ApplicationPtr pXlApp;
        HRESULT hr = pXlApp.GetActiveObject(L"Excel.Application");
        if (FAILED(hr))
        {
            std::cout << "无法获取已打开的Excel应用程序。" << std::endl;
            return 1;
        }

        // 获取活动工作簿
        Excel::_WorkbookPtr pWorkbook = pXlApp->ActiveWorkbook;
        if (pWorkbook == nullptr)
        {
            std::cout << "没有打开的工作簿。" << std::endl;
            return 1;
        }

        // 获取活动工作表
        Excel::_WorksheetPtr pWorksheet = pWorkbook->ActiveSheet;

        // 修改单元格内容
        // 例如,修改A1单元格的内容
        Excel::RangePtr pRange = pWorksheet->Range[L"A1"];
        pRange->Value2 = L"新内容";

        std::cout << "单元格A1的内容已修改。" << std::endl;

        // 如果需要,可以保存工作簿
        // pWorkbook->Save();
    }
    catch (_com_error& e)
    {
        std::cout << "错误: " << e.Description() << std::endl;
    }

    CoUninitialize();
    return 0;
}
你好,再见 发表于 2024-10-14 19:24
回到52像回家 发表于 2024-10-19 23:29
GetActiveObject 只能获取第一个实例。你提出的问题很正确。
操作多个Excel实例,查找正在运行的Excel进程,连接到特定的实例,然后进行操作
可以使用 GetObject 或者 FindWindow 等函数结合Windows API来枚举打开的窗口,从而获取特定的Excel实例。
具体思路:
使用 FindWindow 找到Excel窗口句柄:通过遍历系统中的窗口,找到与Excel相关的窗口。
使用 AccessibleObjectFromWindow:通过窗口句柄获取Excel的COM对象。
通过 IDispatch 调用Excel的接口:获取到Excel实例后,可以通过COM接口操作Excel对象。

FindWindow 用来获取Excel的窗口句柄。
AccessibleObjectFromWindow 用来从窗口句柄获取COM对象。
一旦获取到COM对象,就可以像平常通过 IDispatch 接口调用Excel的方法一样,操作Excel文件的内容。

然后就可以根据需要进一步扩展代码
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-15 01:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表