将excel数据从一个文件复制到另一个文件并重新格式化
我正在尝试将数据从一个excel复制到另一个excel,然后重新格式化。我使用的代码如下所示:将excel数据从一个文件复制到另一个文件并重新格式化,excel,vba,formatting,copy,runtime-error,Excel,Vba,Formatting,Copy,Runtime Error,我正在尝试将数据从一个excel复制到另一个excel,然后重新格式化。我使用的代码如下所示: ActiveWorkbook.Queries.Add Name:="Export", Formula:= _ "let" & Chr(13) & "" & Chr(10) & " Source = Csv.Document(File.Contents(""C:\Users\Khawaja\Desktop\Export.csv""),[Delimit
ActiveWorkbook.Queries.Add Name:="Export", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Csv.Document(File.Contents(""C:\Users\Khawaja\Desktop\Export.csv""),[Delimiter="","", Columns=9, Encoding=65001, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & " #""Promoted Headers"" = Table.PromoteHeaders(Source, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & " #""Changed Type"" = Table.TransformColumnTypes(#""Promoted Headers"",{{""Name"", type text}, {""Surname"", type" & _
" text}, {""Email"", type text}, {""Action"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Changed Type"""
Sheets.Add After:=ActiveSheet
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Export;Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [Export]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = False
.ListObject.DisplayName = "Export"
.Refresh BackgroundQuery:=False
我的源文件中有以列表示的数据。每个colomumn都有一个名称、姓氏、电子邮件和操作的标题。但是,当我运行宏时,它无法检测列标头。错误如下:
找不到表的列“Name”。知道如何删除错误吗。在Listobjects.add中查找的参数是XLListObjectHashHeaders。对于该参数,必须键入xlListObjectHashHeaders:=xlYes。您还可以键入xlGuess,Excel将猜测表是否有标题。在您的例子中,头和数据中都有字符串数据,因此默认的xlGuess可能会因此失败
ActiveWorkbook.Queries.Add Name:="Export", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Csv.Document(File.Contents(""C:\Users\Khawaja\Desktop\Export.csv""),[Delimiter="","", Columns=9, Encoding=65001, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & " #""Promoted Headers"" = Table.PromoteHeaders(Source, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & " #""Changed Type"" = Table.TransformColumnTypes(#""Promoted Headers"",{{""Name"", type text}, {""Surname"", type" & _
" text}, {""Email"", type text}, {""Action"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Changed Type"""
Sheets.Add After:=ActiveSheet
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Export;Extended Properties=""""" _
, XlListObjectHasHeaders:=xlYes, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [Export]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = False
.ListObject.DisplayName = "Export"
.Refresh BackgroundQuery:=False
Listobjects.add中的第三个参数是XLListObjectHashHeaders。对于该参数,必须键入xlListObjectHashHeaders:=xlYes。我也尝试过这个。错误是一样的。我试着调试它并一步一步地运行。创建新工作表后,它会在“With”部分第一次运行。但是,它无法找到主列标题。我无法分析它是源文件还是目标文件。你确定这与标题有关吗?导入可能是空的,因此会处理头错误。导入的文件中充满了数据。导入的第一行用于处理其余行。例如:(1,1)是姓名,下面的行是人名。我只是引用第一个值作为参考来阅读。有没有其他计划的方法来做同样的事情