使用 Microsoft.ACE.OLEDB.12.0 设置工作表名称
Use Microsoft.ACE.OLEDB.12.0 to SET a worksheet name
以下作品:
cnStg = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & oFile.Path & "; Extended Properties='Excel 12.0 Xml;HDR=YES';"
cn.Open cnStg
Set adoWbkAsDatabase = CreateObject("ADOX.Catalog")
adoWbkAsDatabase.ActiveConnection = cn
For i = 0 To adoWbkAsDatabase.Tables.Count
If Mid(adoWbkAsDatabase.Tables(i).Name, 2, 10) = "XXXXXX XXX" Then
vSheetName = Split(Trim(Mid(adoWbkAsDatabase.Tables(i).Name, 12, 100)), "$")(0)
但以下内容:
Set adoWbkAsDatabase.Tables(i).Name = "XXXXXX XXX"
给予
Microsoft VBScript runtime error: Object required: 'adoWbkAsDatabase.Tables(...).Name'`
我有点意识到我的方法应该行不通,但是有没有办法使用 Provider=Microsoft.ACE.OLEDB.12.0'
更改工作表的名称?
据我所知,无法通过 OLE 数据库接口重命名 Excel 工作表。为此,您需要 Excel COM 对象(即在计算机 运行 脚本上运行 Excel 安装):
Set xl = CreateObject("Excel.Application")
Set wb = xl.Workbooks.Open(oFile.Path)
wb.Sheets(1).Name = "XXXXXX XXX"
wb.Save
wb.Close
xl.Quit
以下作品:
cnStg = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & oFile.Path & "; Extended Properties='Excel 12.0 Xml;HDR=YES';"
cn.Open cnStg
Set adoWbkAsDatabase = CreateObject("ADOX.Catalog")
adoWbkAsDatabase.ActiveConnection = cn
For i = 0 To adoWbkAsDatabase.Tables.Count
If Mid(adoWbkAsDatabase.Tables(i).Name, 2, 10) = "XXXXXX XXX" Then
vSheetName = Split(Trim(Mid(adoWbkAsDatabase.Tables(i).Name, 12, 100)), "$")(0)
但以下内容:
Set adoWbkAsDatabase.Tables(i).Name = "XXXXXX XXX"
给予
Microsoft VBScript runtime error: Object required: 'adoWbkAsDatabase.Tables(...).Name'`
我有点意识到我的方法应该行不通,但是有没有办法使用 Provider=Microsoft.ACE.OLEDB.12.0'
更改工作表的名称?
据我所知,无法通过 OLE 数据库接口重命名 Excel 工作表。为此,您需要 Excel COM 对象(即在计算机 运行 脚本上运行 Excel 安装):
Set xl = CreateObject("Excel.Application")
Set wb = xl.Workbooks.Open(oFile.Path)
wb.Sheets(1).Name = "XXXXXX XXX"
wb.Save
wb.Close
xl.Quit