Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将excel数据从一个文件复制到另一个文件并重新格式化_Excel_Vba_Formatting_Copy_Runtime Error - Fatal编程技术网

将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

我正在尝试将数据从一个excel复制到另一个excel,然后重新格式化。我使用的代码如下所示:

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)是姓名,下面的行是人名。我只是引用第一个值作为参考来阅读。有没有其他计划的方法来做同样的事情