ChatGPT与Excel结合_编写VBA宏

news/2024/7/21 7:52:45 标签: excel

先来解释下什么是Excel vba宏

Excel VBA宏(Visual Basic for Applications)是一种用于在Microsoft Excel中自动化和扩展功能的编程语言。VBA允许用户编写自定义的脚本或宏,以便通过执行一系列指令来自动完成特定任务。

使用Excel VBA宏,你可以创建和编辑工作表、处理数据、执行计算、生成报表、自定义用户界面等。通过编写VBA代码,你可以利用Excel的各种功能和对象模型,以及相关的函数和方法,实现更高级的操作和自定义功能。

VBA宏可以通过录制宏的方式生成初始代码,也可以手动编写代码来实现更复杂的功能。你可以在Excel中的"开发者"选项卡中访问VBA编辑器,其中可以编写、修改和运行VBA宏。

借助Excel VBA宏的强大功能,用户可以提高工作效率、简化重复性任务,并根据自己的需求进行定制化操作。

🐇才知道原来excel也可以写代码,打开方式是:在开发工具中选择VB宏
在这里插入图片描述那怎么用ChatGPT与Excel结合来编写VBA宏呢?

案例1

💕比如我的需求是:写一个基本的Excel vba宏,用于将表格中的第3行到第9行每一行数据转换为一个新的工作簿
在这里插入图片描述
VBA宏如下:

Sub SplitRowsToNewWorkbooks()
    Dim sourceSheet As Worksheet
    Dim newWorkbook As Workbook
    Dim newRow As Range
    Dim rowIndex As Long
    
    ' 设置源工作表
    Set sourceSheet = ThisWorkbook.ActiveSheet
    
    ' 创建新工作簿
    Set newWorkbook = Workbooks.Add
    
    ' 循环复制行数据到新工作簿
    For rowIndex = 3 To 9
        ' 复制当前行数据
        sourceSheet.Rows(rowIndex).Copy
        
        ' 在新工作簿中粘贴数据
        newWorkbook.Sheets(1).Cells(rowIndex - 2, 1).PasteSpecial Paste:=xlPasteAll
    Next rowIndex
    
    ' 清除剪贴板内容
    Application.CutCopyMode = False
    
    ' 保存新工作簿
    newWorkbook.SaveAs "路径\文件名.xlsx" ' 替换为你想要保存的路径和文件名
    
    ' 关闭新工作簿
    newWorkbook.Close
    
    ' 提示完成信息
    MsgBox "已将行数据分割为新的工作簿并保存。"
End Sub

请将代码中的"路径\文件名.xlsx"替换为你希望保存的路径和文件名。运行该宏后,会将第3行到第9行的每一行数据复制到一个新的工作簿,并将其保存在指定的路径下。完成后会弹出一个提示框,显示操作已完成。

操作如下:
1️⃣
在这里插入图片描述
2️⃣需要注意修改代码的行数列数表格数,确定没啥问题
在这里插入图片描述3️⃣
在这里插入图片描述
4️⃣在这里需要注意“将代码中的"路径\文件名.xlsx"替换为你希望保存的路径和文件名”
在这里插入图片描述
5️⃣改完路径就会弹窗(要关闭这个弹窗才可以打开新的excel表格文件哦)
在这里插入图片描述
6️⃣执行完,打开刚刚设置的路径文件,程序执行pass~~
在这里插入图片描述

🐇虽然chatGPT没有理解我的命令是“每一行”生成新表格,但“回炉再造”一遍就好,重要的是学会ChatGPT与Excel结合来编写VBA宏


案例2

💕又比如我的需求是:编写一个Excel VBA宏,将工作薄,每个工作表中的图片,移动到A1单元格上

    Dim ws As Worksheet
    Dim shp As Shape    ' 循环遍历所有工表
    For Each ws ThisWorkbook.Worksheets
 ' 遍历当前工作表的所有形状(图片)
        For Each shp In ws.Shapes
 ' 判断形状是否为图片类型
            Ifp.Type = msoPicture Then
                ' 将图片移动到A1单元格位置
                shp.Top = ws.Range("A1").Top
                shp.Left = ws.Range("A1").Left
            End If
        Next shp
    Next ws
    
    ' 提示完成信息
    MsgBox "已将所有图片移动到A1单元格位置。"
End Sub

运行该宏后,它会遍历工作薄中的每个工作表,并将每个作表中的图片移动到A1单元格的位置。在移动图片之后,会弹出一个提示框显示操作已完成。

请注意,宏只会处理工作表中的图片形状,对于其他类型的形状(如图表等),需要根据实际情况进行适的修改。

这个操作也类似上面的。


案例3

💕我的需求是:编写一个Excel VBA宏,删除当前Excel工作簿里边所有的图片

Sub DeleteAllPictures()
    Dim ws As Worksheet
    Dim shp As Shape
    
    ' 循环遍历所有工作表
    For Each ws In ThisWorkbook.Worksheets
        ' 遍历当前工作表的所有形状(图片)
        For Each shp In ws.Shapes
            ' 判断形状是否为图片类型
            If shp.Type = msoPicture Then
                ' 删除图片
                shp.Delete
            End If
        Next shp
    Next ws
    
    ' 提示完成信息
    MsgBox "已删除所有图片。"
End Sub

运行该宏后,它会遍历当前Excel工作簿中的每个工作表,并删除每个工作表中的所有图片。在删除图片之后,会弹出一个提示框显示操作已完成。

请注意,宏只会处理工作表中的图片形状,对于其他类型的形状(如图表等),需要根据实际情况进行适当修改。


🐇代码不需要理解,可以跑,实现作用就好啦~~~
🐇不过看懂代码对大家应该很简单


http://www.niftyadmin.cn/n/1868618.html

相关文章

嵌入式Linux开发环境搭建-(3)配置Ubuntu16.04.2 LTS 系统

配置Ubuntu16.04.2 LTS 在使用ubuntu16.04进行嵌入式Linux开发前,需要对ubuntu进行一些配置,方便以后的开发。一、ubuntu系统设置root用户登录 1、使用快捷键“CtrlAltT”调出命令终端,执行“sudo passwd root”命令,添加root用…

Linux USB 串口传输速率提升设计

USB设备连接后,设备驱动发送URB-R/W请求进行数据收发。 内核原始的USB 串口驱动是为低速串口设备设计的,使用一个URB-R请求在USB总线上等待接收数据,这就好比是一辆车运输,每次接受数据返回后设备驱动将数据保存——卸载——在本…

车载芯片分类、用途、供应商

2021年车载芯片供应持续紧缺,本文梳理车载芯片相关基本知识。 车载芯片分类及用途列表 序号芯片类别用途1SoC系统级芯片,用于智能运算。即将能够完成某项功能的一整个系统集成在一块芯片上。SoC常由CPUGPUDSPNPU各种外设接口、存储类型等电子元件组成。…

Android HAL 例 蓝牙模块

1,hw module 设备模块类型定义: /hardware/libhardware/include/hardware/hardware.h 打开hw module hardware.c int hw_get_module(const char *id, const struct hw_module_t **module) 通过id获得module信息块--hmi io和so名称匹配及so存放路径查…

嵌入式Linux开发环境搭建-(4)安装交叉编译工具链

在ubuntu16.04.2中,安装交叉编译工具链 在ubuntu中进行嵌入式应用程序开发,安装交叉编译工具链是不可缺少的一个环节。 PC操作系统:ubuntu16.04.2 LTS 开发板:天嵌科技 TQ E9-V3 安装前准备: 1、参考嵌入式Linux开…

嵌入式Linux开发环境搭建-(5)安装和配置Qt Creator开发工具

在Ubuntu16.04.2 LTS中安装Qt Creator开发工具 (使用天嵌科技 TQ E9-V3 开发板进行示例,其他开发平台可供参考) 由于 TQ E9-V3 安装的文件系统支持 QT5 以上的运行环境,后续的应用程序开发,会涉及到嵌入式 QT 界面程序…

jni class no found

native 反射调用java接口出现class no found错误 应用自定义java类,java层调用native层接口所在线程可以找到java类; native自己创建的线程通过attach获得的evn找不到应用层java类; 解决: java线程访问native层时找到类对象后&…