打开Excel文件和格式以便导入以访问

打开Excel文件和格式以便导入以访问,excel,vba,ms-access,Excel,Vba,Ms Access,我正在准备导入Excel文件。 我使用宏记录器获取代码,以删除Access中temp表的标题,并将列标题的行上移 我试图在一列中找到一个特定的值,然后删除它下面的所有内容 公共函数FormatsXcel Dim-xl作为Excel.Application 将wb设置为Excel.工作簿 将ws设置为Excel.Worksheet 作为字符串的Dim strfile 变光r作为“范围”范围变量 将d标注为要删除变量的字符串行 设置fd=Application.FileDialog3 有fd .al

我正在准备导入Excel文件。 我使用宏记录器获取代码,以删除Access中temp表的标题,并将列标题的行上移

我试图在一列中找到一个特定的值,然后删除它下面的所有内容

公共函数FormatsXcel Dim-xl作为Excel.Application 将wb设置为Excel.工作簿 将ws设置为Excel.Worksheet 作为字符串的Dim strfile 变光r作为“范围”范围变量 将d标注为要删除变量的字符串行 设置fd=Application.FileDialog3 有fd .allowmultiselect=False .过滤器 .Filters.Add Excel文件,*.xls* 如果,那就表演吧 strfile=.selecteditems1 如果结束 以 Set xl=新建Excel.Application 设置wb=xl.Workbooks.Openstrfile 设置ws=wb.SheetsSheet0 '删除并清除标题 ws.Shapes.RangeArrayPicture 1.选择 选择。删除 行1:21。选择 选择。删除移位:=xlUp '删除页脚总计(含总计) 设置r=ws.RangeA:K.FindTotal,lookin:=xlValues 不闻不问 d=A:K&r行+30 ws.Ranged.Delete xlShiftUp 设置r=ws.RangeA:K.FindTotal,lookin:=xlValues 环 wb.保存 xl.退出 设置xl=无 端函数 这在ActiveSheet.Range.Delete xlShiftUp失败,并显示

应用程序定义或对象定义错误

我从StackOverflow和其他网站的各种东西中拼凑了这个。它正在查找行,但我认为我的删除部分做错了


我希望找到具有特定值的行,在本例中为Total,然后存储为字符串以删除该行及其下的一大块行。

当您在Excel中编程并编写ActiveSheet时,VBA编译器将自动将其转换为Application.ActiveSheet。类似地,工作簿被转换为Application.workbook,这是为Application对象的许多其他成员完成的


在Access中编程时,还有一个应用程序对象,但这次是一个具有不同成员的Access应用程序,CurrentDb就是其中之一

如果您在Access中,并且希望使用Excel.Application对象的成员,只需使用您在函数中将其命名为xl的Excel应用程序对象,因此请编写示例xl.ActiveSheet


然而,在您的情况下,甚至不需要使用ActiveSheet,因为您已经将工作表分配给了一个变量ws。最好编写ws.range.Delete xlShiftUp。

在范围内的a后面需要一个数字。不要使用全局Excel对象,如Selection或ActiveSheet。只有完全限定的局部变量,如ws。否则,您的代码只能工作一次。-避免使用.Select。可能包括这样一个事实:d=A:K&r.Row+30也不能生成有效的范围引用?我刚刚再次运行它,对ws进行了更改,但您是正确的。因为它不能产生一个有效的范围。现在我只需要找出我在这方面做得不对的地方。是的,还有其他问题,例如使用行而不是ws.rows@蒂迈尔斯:读一下我刚才用的宏记录器的删除标题部分。不过我应该把它清理干净。