使用Excel中的VBA宏从文件名导入CSV文件

我对Excel和VBA还是很陌生,我正在尝试创建一个函数,该函数采用CSV文件的名称并将其导入到当前工作簿中。首先,我记录了这样做的宏,然后在编辑器中将其打开以尝试使其适用于任何文件名。我使用的原始文件名为“ t_0_20”,但我想仅用fileName替换它。它在大多数情况下都有效,但是在两个特定的实例中却不起作用。它首先在With语句期间发生。Location=t_0_20。它也发生在.CommandText。 .CommandText = Array("SELECT * FROM [t_0_20]")。我注意到在这两种情况下,t_0_20都没有用引号引起来来表明它是一个字符串,但是我不知道它是如何使用的。

当我尝试使用fileName替换t_0_20的两个实例来运行代码时,出现错误:

  

运行时错误“ 1004”   找不到查询“ fileName”

然后调试将我发送到.Refresh语句。任何有关此问题的帮助将不胜感激。谢谢!

Sub importct(fileName As String)
'
' importct Macro
'

'
    fileName = "t_0_20"

activeWorkbook.Queries.Add Name:=fileName,Formula:= _
    "let" & Chr(13) & "" & Chr(10) & "    Source = Csv.Document(File.Contents(""C:\Users\B\Documents\Automation Testing\" & fileName & ".csv""),[Delimiter="","",Columns=5,Encoding=1252,QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & "    #""Changed Type"" = Table.TransformColumnTypes(Source,{{""Column1"",type number},{""Column2"",Int64.Type},{""Column3"",{""Column4"",{""Col" & _
    "umn5"",Int64.Type}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Changed Type"""

activeWorkbook.Worksheets.Add
activeSheet.Name = fileName

With activeSheet.ListObjects.Add(SourceType:=0,Source:= _
    "OLEDB;Provider=microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=t_0_20;Extended Properties=""""" _,Destination:=Range("$A$1")).QueryTable

    .CommandType = xlCmdSql
    .CommandText = Array("SELECT * FROM [t_0_20]")
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .PreserveColumnInfo = True
    .ListObject.DisplayName = fileName
    .Refresh BackgroundQuery:=False
End With
 End Sub
sajensenhanyya 回答:使用Excel中的VBA宏从文件名导入CSV文件

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3121631.html

大家都在问