MS Office
文章平均质量分 65
stone0823
财务、SAP以及编程
展开
-
Excel 通过函数实现数据透视表
函数技巧演示系列。深入介绍 Excel 函数的使用技巧。本篇通过函数的方式,实现数据透视表,部分函数需要 Office 2021版本或者 Office 365 版。原创 2024-08-01 00:16:10 · 408 阅读 · 0 评论 -
VBA数组和Excel工作表数据传递
本文介绍如何利用 VBA 的数组(Array) 来提高 Excel 单元格和外部数据传输的性能。如果数量比较大,通过 Array 来传输数据比直接操作单元格要快若干倍。原创 2023-02-15 23:54:08 · 2664 阅读 · 0 评论 -
如何破解Excel VBA的工程密码
我们的目的就是要对框起来的部分进行替换。新建一个 Excel 文件,比如 123.xlsm,将 123.xlsm 的VBA 的工程密码设为 123,再将文件名改为 123.xlsm.rar,然后用 WinRAR 打开(注意:是打开,不是解压缩)。破解的原理和方法:MS Excel 文件以压缩格式存储的,如果 Excel 文档有 VBA 工程,在压缩文档中有一个 vbaProject.bin 文档。这是一个二进制的文件,其中保存有VBA工程的密码,可以将文件的密码部分替换,达到破解的目的。原创 2023-01-29 23:40:54 · 15316 阅读 · 3 评论 -
word实现多级自动编号
经常看到很多人在 word 中编写文档的时候,章节编号都是手工的,调整也是手工方式。其实在 word 中实现多级自动编号非常简单。比如我们有一段文字,我们先将其中的一段变为标题一:然后选中该标题1,套用多级列表:此时,标题变为:选中样式工具栏中的标题一,右键选择「更新标题1以匹配所选内容」,也就是将编号套用到所有的标题1。此时,标题一已经实现了自动编号。然后将任何一个标题2套用编号,比如:用同样的方式,在样式的标题2中,套用该编号机制:然后所有的标题2就自动编号了。如果还有标题3,原创 2022-03-24 17:56:17 · 6279 阅读 · 0 评论 -
VBA字典对象操作技巧
VBA 中集合的功能比较弱,常见的有数组 (array) 、集合 (Collection)和字典,其中字典是 Key-Value Pair 类型的数据结构,适合按 Key 存储和查找。本篇介绍字典的操作方法。VBA 语法本身并没有字典这种数据结构,需要引用 Microsft Scripting Runtime 库:Dictionary 本身的方法不多,只有六个:From: Dictionary 对象 | Microsoft Docs创建字典对象并添加值我们使用前期绑定的方式,new Dicti原创 2021-12-17 16:10:04 · 4320 阅读 · 1 评论 -
Excel VBA自定义功能区
在 Excel 编写代码,离不开界面的导航。之前为了简单,经常将控件放置在工作表上。但这种方法显得不专业。Office 其实允许通过代码或者使用 XML 格式文件的方式来定义功能区。本篇介绍如何操作。xlsx 文档可以视为一种经过压缩的文档格式。我们新建一个 Excel 文档,另存为启用宏的工作簿 (xlsm) 格式(文件名:工作簿1.xlsm),将文件名更名为:工作簿1.xlsm,zip。忽略警告。用 winrar 软件打开可以看到 xlsm 的内部文件结构如下:在 _rels 文件夹下面的 .re原创 2021-04-07 22:41:37 · 3961 阅读 · 0 评论 -
VSTO 系列(06)-自定义任务窗格
任务窗格 (task pane) 是 VSTO 提供的主要界面之一,运行时任务窗格的界面看起来如下。本文假设我们要实现一个方便自己进行拷贝和粘贴的多重剪贴板,实现将单元格中需要反复使用的文本加载到 listbox,并且能够拷贝到选中的单元格中。界面设计在工程中新建一个 user control,命名为 ClipBoardPro 的 User Control,设计界面如下:在该类中,编写四个按钮单击事件的代码:using Microsoft.Office.Interop.Excel;using原创 2021-03-22 21:45:03 · 2979 阅读 · 0 评论 -
VSTO 系列(05)- 使用模板导入数据
在本系列的第二篇,实现了从数据库导入数据。对导入数据的工作表,如果有格式要求,可以通过代码来设置,但更方便的方式是使用数据模板。本篇介绍如何使用 Excel 模板来导入数据。假设我们要从数据库中导入 employees 表的数据,提前准备好 Excel 模板,将模板文件放在 bin/debug/templates 文件夹下。在 ExcelUtils.cs 文件中,添加一个静态方法 CopyWorkSheetTempate ,用于从模板文件中拷贝模板工作表:public static void Copy原创 2021-03-22 20:59:58 · 796 阅读 · 0 评论 -
VSTO 系列(04)- 在 Excel 中查看 SAP 表数据,不要太方便
之前想了不少方法,为了在 Excel 中直接查看 SAP 表的结构和数据,本博文的介绍。本次基于 VSTO COM AddIn 的方式则是我认为最方便的。原创 2021-03-15 00:25:11 · 1353 阅读 · 0 评论 -
VSTO 系列(03)- WinForm作界面
微软在 .NET 平台基于 C/S 架构的界面技术,传统上是 Windows Forms (简称 WinForm),后来是 WPF 。WPF 不支持 VSTO,所以在界面中就只能使用 WinForm。本篇实现一个比较实用的功能,在 Excel 中,允许用户输入 SQL 语句,将数据导入到 Excel 工作表。运行时的界面如下:上篇我们已经实现了数据导入功能,本例接着上篇的例子来改造。将上篇博文源码的工程拷贝为一个新的工程,添加一个 WinForm,设计时界面如下:因为只有简单的 TextBox 和原创 2021-03-14 19:18:15 · 1239 阅读 · 2 评论 -
VSTO 系列(02)- 实现数据导入功能
之所以基于 Excel 开发插件,一个重要的原因就是 Excel 在数据展示、分析和处理的灵活性。本篇实现从数据库中基于 SQL 将数据导入到 Excel 工作表。按照上一篇介绍的操作方法创建一个 Excel VSTO Add-In 项目,添加一个 Ribbon,从工具箱中拖入一个 Button 控件,Label 属性设置为 Import Data。完成后 Ribbon 的界面如下:实现从数据库中获取数据考虑到 MS Access 是微软数据库,Visual Studio 天然支持,本例的数据库使用原创 2021-03-10 18:15:28 · 1126 阅读 · 1 评论 -
VSTO 系列(01)- Excel VSTO 开发入门
VSTO 是微软用于开发 Office 插件的一种技术,跟 VBA 比较起来,VSTO 开发更加简单,功能更加强大。本系列博客介绍利用 VSTO 开发 Excel 插件的方法。VSTO 开发的 Excel 插件 (Add-in)是 COM 加载项的一种。新的开发技术可以使用 Excel Web Add-In。开发环境:Visual Studio 2019新建一个 Excel VSTO Add-In 项目,因为 Visual Studio 2019 支持的项目类型较多,通过界面的开发语言、平台和项目类型进原创 2021-03-09 16:49:36 · 7094 阅读 · 1 评论 -
如何优雅地在 Word 中实现替换?
我们生活在一个程序的世界,编程并非是程序员的专利,每个人都可以通过编程来使自己的工作和生活更加轻松,减少对程序员的依赖。只要你愿意,用任何一种语言来辅助自己的工作都不是难事。当然,我们需要一个好的学习方法,多少人吐槽谭浩强先生的《C 语言程序设计》,说明了至少存在误导的因素。学习编程,要有一个明确的目的,根据目的选择合适的工具,而不是为了学习而学习。大家都知道,MS Office 套件带有一个宏语言:VBA。VBA 当然不是一门先进的语言,但因为在 Office 中内嵌,我们用它来解决问题还是可以的。今原创 2020-07-06 20:10:08 · 1362 阅读 · 0 评论 -
VBA + ADO 调用存储过程
最近对 pandas, Power Query 和 SQL 的数据处理和加工进行了一些类似的处理,希望通过比较看到各种处理方式的优点。之前笔者用的比较多的是 VBA + ADO,VBA + ADO 的方式其实离不开 Sql 语句,这种方式也有非常方便:前台有 Excel,后台有数据库就能实现...原创 2019-10-02 08:40:53 · 2743 阅读 · 0 评论 -
使用 Access 查询设计器轻松构造复杂 SQL 语句 (2)
介绍一个相对复杂的的场景。假设我们要编写一个查询,计算期间物料进出存的查询。使用 Access 查询编辑器完成复杂 SQL 语句的构建原创 2019-09-03 09:04:18 · 6047 阅读 · 1 评论 -
MS Outlook接收的附件显示文件损坏,真的吗?怎么办?
近期将 Office 升级到 365,一切 OK,但却有一件很奇怪的事情,Outlook 接收的邮件,附件经常显示文件损坏的情况,Excel 显示:PPT 显示这样:非常疑惑,总不至于是 Outlook 把附件损坏了吧。通过 Outlook Web 端打开邮件附件是没有问题的。经过查找,发现是因为微软的一个安全性设置造成的,不过设置不在 Outlook,而在 Excel 、Word 和 P...原创 2019-08-20 09:32:17 · 2717 阅读 · 0 评论 -
Python 调用 Outlook 发送邮件
微软 Office 提供基于 COM 接口的编程。Python 通过 pywin32 可以方便地调用各组件。如果下载和安装 pywin32 有困难,可以到 Sourceforge 的镜像网摘查找合适的版本。import win32com.client as win32def send_mail(): outlook = win32.Dispatch('Outlook.Applicat...原创 2018-12-12 11:00:52 · 10264 阅读 · 11 评论 -
如何在 VBA 中运行 Excel Add-in 中的代码
Excel Add-in 指使用 VBA 编写并且保存在 xlam 文件中的加载项(也经常被称作加载宏)。将 VBA 代码分散在各个 Excel 文件中不利于代码的管理,微软新的加载项编写技术 Web Add-in 也是希望代码的部署由分散到集中。用 VBA 编写的代码,如果存放在 Excel Add-in 中,也能实现一定程度的集中。那么,放在 xlam 的代码,其他的工作薄在 VBA 中如何...原创 2018-10-07 15:53:31 · 7113 阅读 · 0 评论 -
Excel 也可以玩 REST 系列 (03)
接下来,设计一个以 Excel 作为用户界面,通过 HTTP Request 对数据库进行 CRUD 操作的实现。我们在日常工作中,经常需要用 Excel 来记录事件和数据,比如,在项目实施的过程中,记录和跟进实施过程中的问题、任务分派等等。但如果不是专门的软件,如 Redmine ,使用基于文件的 Excel 记录还是有很多不便之处的。比如版本冲突,多个人员不能同时编辑数据等等。这个时候,...原创 2018-09-02 23:06:26 · 1611 阅读 · 0 评论 -
VLOOKUP 函数,你所不知道的用法
相信不少人看到标题,立即嗤之以鼻,VLOOKUP 谁不会?是的,大家都会,但用的好的人不多。相信我,这篇文章一定可以算得上通俗易懂,又有深度的一篇文章,熟练掌握本文所讲内容,一定会在日常 Excel 处理时如鱼得水。预备知识Excel 数组Excel 用 {a,b,c} 或 {a;b;c} 表示数组。数组的主要作用是用于有多个返回值的公式 (数组公式)或函数。我举一个必须用数组公式...原创 2018-08-21 23:27:38 · 2873 阅读 · 0 评论 -
Excel 也可以玩 REST 系列 (02)
本篇来做几个准备动作,讲解一下接下来需要用到的 VBA 转 Json 格式,以及涉及到的 VBA 字符串中 双引号 的处理方法。VBA 字符串的双引号问题首先我们来看看 双引号 问题。为什么要提到这个呢?因为如果使用 Ajax 原生 POST 请求,请求头里设置 Content-Type:application/json,请求的参数会显示在 Request Payload 中。Json...原创 2018-08-11 17:02:15 · 799 阅读 · 0 评论 -
Excel 也可以玩 REST系列(01)
随着 RESTFul API 的逐渐普及,如果能在 Excel 中直接调用这些 API,将会给我们处理和分析数据带来无尽好处。我们先来看一个在线的 OData Service 数据:https://services.odata.org/V3/OData/OData.svc/Products?$format=json,在 Chrome 浏览器中打开,显示结果如下图:这个 url 以 ODat...原创 2018-08-09 00:10:08 · 5027 阅读 · 2 评论 -
使用 Access 查询设计器轻松构造复杂 SQL 语句
Office 家族中,平时使用 MS Acess 的人非常少,如果从工作效率的角度来说,掌握了 Access,很多时候岂止是事半功倍啊!下面就介绍一种基于 Access 查询轻松构造 SQL 语句的方法。因为本文面向把 MS Office 作为办公工具的用户,熟练编写 SQL 语句的请忽略。假设我们有如下的员工工时记录表:目标是按固定月份 (1~12 月)的格式统计员工的工时,格式如下...原创 2018-07-29 18:39:18 · 9289 阅读 · 0 评论