我目前正在创建一个脚本,它将指定文件夹中的所有Excel工作表导入Microsoft访问中的唯一表。现在,事情是这个过程应该是每月或每两个月进行一次,这些excel表上的标题经常变化。我试图使用DoCmd.Transferspreadsheet方法,但我遇到的问题是字段与目标表不匹配。现在,我不能只使用适当的字段名称创建一个表,然后导入到该表中,因为正如我所说,excel文件的标题经常更改。
我想要一种方法将excel表格导入新表格,表格应该自动采用excel表格的字段,无论它们是什么。所以基本上每次导入时,都应该用适当的字段创建一个新表。
我唯一的解决方法是每次导入并遍历excel文件的第一行时创建一个新表,以查找字段的名称,然后在创建表时使用这些字段。
但这是一个混乱的解决方法。我知道可以使用microsoft access UI导入到全新的表中。只需点击几下,然后就可以了。
我想要一个程序化的解决方案。
.videobg {
margin:0;
padding:0;
width:100%;
height:100%;
position: static;
z-index: -100;
min-height: 250px;
max-height: 423px;
}
.videoheader {
margin:0;
padding:0;
width:100%;
height:100%;
}
@media (max-width: 767px) {
.videobg {
background: url('images/home/header.jpg') center center / cover no-repeat;
height:266px;
}
.videoheader {
display: none;
}
}
@media(max-width:768px){
.videobg {
height:266px;
}
}
@media (max-width: 884px) {
.videobg {
height:280px;
}
}
@media (max-width: 1000px) {
.videobg {
height:347px;
}
}
答案 0 :(得分:2)
一种可能的解决方案可能是使用“动态”链接到Excel数据,例如,
CurrentDb.Execute _
"SELECT * INTO myNewTable " & _
"FROM [Excel 12.0 Xml;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=C:\Users\Gord\Desktop\foo.xlsx].[Sheet1$]", _
dbFailOnError
或者,正如Parfait在上面的评论中所说,这似乎也有效......
DoCmd.TransferSpreadsheet _
TransferType:=acImport, _
SpreadsheetType:=acSpreadsheetTypeExcel12Xml, _
TableName:="myNewTable", _
FileName:="C:\Users\Gord\Desktop\foo.xlsx", _
HasFieldNames:=True
...其中[myNewTable]尚不存在。
答案 1 :(得分:1)
链接电子表格并阅读标题:
DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel12, "xlsTable1" , strPathFile, True
然后,您可以循环链接表的字段以读取字段名称。