【发布时间】:2012-04-02 11:38:16
【问题描述】:
我正在运行一个宏,它会自动获取 csv 文件并将它们导入到我的工作簿中的特定工作表中。但是,我希望通过让用户选择要导入的文件而不是让宏自动抓取 csv 文件来增加更大的灵活性,因为命名和目录一样可能会发生变化。我是 VBA 新手,一直在尝试更好地理解 MsoFileDialogType 和 GetOpenFilename,但很难将概念/实现掌握到我的代码中。
我最终想要的是用户单击工作簿前端的按钮。系统会提示您选择要导入的第一个 csv 文件。此 csv 文件将被导入到工作簿 temp1 中的预先命名的工作表中。但是,由于数据文件是成对出现的,我希望用户能够在第一个 csv 文件之后选择下一个 csv 文件进入 temp2。
我目前拥有的是:
Worksheets.Add
ActiveSheet.Name = "temp1"
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;MAC Directory path here" _
, Destination:=Range("A1"))
.Name = "temp 1 03.02.12"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlMacintosh
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
1, 1, 1)
.Refresh BackgroundQuery:=False
.UseListObject = False
End With
ActiveSheet.Move after:=Worksheets(Worksheets.Count)
谢谢。
【问题讨论】: