gpt4 book ai didi

excel - 从 Access 运行 VBA 以更改 Excelfile

转载 作者:行者123 更新时间:2023-12-04 20:42:46 25 4
gpt4 key购买 nike

我正在尝试从我的 Access 数据库运行脚本来更改刚刚由同一脚本生成的 excelfile。
我想制作一个循环遍历每个创建的工作表和工作簿的模块,同时执行一些基本任务。我对 vba excel 很陌生,所以我似乎找不到问题所在。在 excel 中,我使用宏记录器编写了第一个脚本。这工作正常。

我现在想制作一个脚本,在 access 中复制这个 excel 宏,我已经尝试为此编写一个脚本(如下所示),但这似乎在以下操作中停止:剪切和自动填充。
此外,当省略这些命令时,会显示一个弹出窗口,要求我覆盖每个循环的现有文件,这是我想避免的。

非常感谢您的帮助!

Excel 代码:

Sub Macro1()
Range("A1:A200").Select
Selection.Copy
Range("A201").Select
ActiveSheet.Paste
Range("A401").Select
ActiveSheet.Paste
Range("A601").Select
ActiveSheet.Paste
Range("V1:AO200").Select
Application.CutCopyMode = False
Selection.Cut
Range("B201").Select
ActiveSheet.Paste
Range("AP1:BI200").Select
Selection.Cut
Range("B401").Select
ActiveSheet.Paste
Range("BJ1:CC200").Select
Selection.Cut
Range("B601").Select
ActiveSheet.Paste
Rows("2:2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("V1").Select
ActiveCell.FormulaR1C1 = "=IF(OR(AND(RC[-6]=FALSE,RC[-11]=FALSE,RC[-16]=FALSE,RC[-1]=FALSE),AND(RC[-6]="""",RC[-11]="""",RC[-16]="""",RC[-1]="""")),0,1)"
Range("V1").Select
Selection.AutoFill Destination:=Range("V1:V800")
Range("V1:V800").Select
Range("A1").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$V$800").AutoFilter Field:=22, Criteria1:="0"
Rows("2:1000").Select
Selection.Delete Shift:=xlUp
Selection.AutoFilter
Columns("V:V").Select
Selection.Delete Shift:=xlToLeft
Range("A1").Select
End Sub `

Access 代码:
For i = 1 To 7
For j = 1 To 4
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, sCoun(i) & sQuer(j), myPath & sCoun(i) & ".xlsx"
Set xlApp = New Excel.Application
Set xlWB = xlApp.Workbooks.Open(myPath & sCoun(i) & ".xlsx")
Set xlSh = xlWB.Sheets(sCoun(i) & sTab(j))

xlSh.Range("A1:A200").Copy
xlSh.Range("A201").PasteSpecial
xlSh.Range("A401").PasteSpecial
xlSh.Range("A601").PasteSpecial
xlApp.CutCopyMode = False
xlSh.Range("V1:AO200").Cut Destination:=Range("B201")
xlSh.Range("AP1:BI200").Cut Destination:=Range("B401")
xlSh.Range("BJ1:CC200").Cut Destination:=Range("B601")
xlSh.Rows("2:2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
xlSh.Range("V1").FormulaR1C1 = "=IF(OR(AND(RC[-6]=FALSE,RC[-11]=FALSE,RC[-16]=FALSE,RC[-1]=FALSE),AND(RC[-6]="""",RC[-11]="""",RC[-16]="""",RC[-1]="""")),0,1)"
xlSh.Range("V1").AutoFill Destination:=Range("V1:V800")
xlSh.Range("A1").AutoFilter
xlSh.Range("$A$1:$V$800").AutoFilter Field:=22, Criteria1:="0"
xlSh.Rows("2:1000").Delete Shift:=xlUp
xlSh.Range("A1").AutoFilter
xlSh.Columns("V:V").Delete Shift:=xlToLeft
xlSh.Range("A1").Select

xlWB.Save
xlWB.Close
xlApp.Quit
Set xlApp = Nothing
Next j
Next i`

最佳答案

请尝试在 Destination 参数中将 Range 替换为 xlSh.Range。 – user3964075 5 分钟前

关于excel - 从 Access 运行 VBA 以更改 Excelfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29076225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com