先来解释下什么是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工作簿中的每个工作表,并删除每个工作表中的所有图片。在删除图片之后,会弹出一个提示框显示操作已完成。
请注意,宏只会处理工作表中的图片形状,对于其他类型的形状(如图表等),需要根据实际情况进行适当修改。
🐇代码不需要理解,可以跑,实现作用就好啦~~~
🐇不过看懂代码对大家应该很简单