从Access运行VBA以改变Excelfile

我试图从我的访问数据库运行一个脚本来改变一个刚刚由同一个脚本生成的excelfile。 我想创build一个循环遍历每个创build的工作表和工作簿的模块,同时执行一些基本任务。 我对vba excel很新,所以我似乎无法find问题所在。 在Excel中,我使用macroslogging器编写了第一个脚本。 这工作正常。

我现在想要制作一个脚本来复制这个excelmacros的访问,为此我已经尝试写一个脚本(如下所示),但是这似乎停止在以下操作:剪切和自动填充。 同样,当忽略这些命令时,popup窗口显示我要求覆盖每个循环的现有文件,这是我想避免的。

非常感谢您的帮助!

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 ` 

访问代码:

 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` 

请尝试使用目标参数中的xlSh.Rangereplace范围。 – user3964075 5分钟前