首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将多个导入的工作表放置到不同的单元格中

将多个导入的工作表放置到不同的单元格中
EN

Stack Overflow用户
提问于 2021-03-25 09:39:10
回答 1查看 33关注 0票数 0

我可以导入多张图纸。每个导入的文件都有2列。我希望第一个文件放在A列和B列,第二个导入的文件放在同一张纸上的C列和D列。

下面是我导入多张工作表的代码。

代码语言:javascript
运行
复制
Sub ImportFiles()

   'Declare a variable as a FileDialog object.
   Dim fd As FileDialog
   Dim path As String
   Dim filename As String

   
   Set fd = Application.FileDialog(msoFileDialogFilePicker)
   Dim vrtSelectedItem As Variant
   With fd
       .AllowMultiSelect = True
       'Set the initial path to the C:\ drive.
       .InitialFileName = ActiveWorkbook.path
       'Add a filter that includes  the list.
       .Filters.Clear
       .Filters.Add "Text Files", "*.txt", 1
       'The user pressed the button.
       If .Show = -1 Then
       
           For Each vrtSelectedItem In .SelectedItems
               path = Left(vrtSelectedItem, InStrRev(vrtSelectedItem, "\"))
               filename = Right(vrtSelectedItem, Len(vrtSelectedItem) - InStrRev(vrtSelectedItem, "\"))
               
               Call Importfile(path, filename)
                                     

           Next vrtSelectedItem
       Else
       End If
   End With

   Set fd = Nothing

End Sub
Sub Importfile(path As String, filename As String)
   'Sheets.Add(After:=Sheets("Sheet1")).Name = "RawData"
   'ActiveSheet.Name = filename
   On Error Resume Next
   With ActiveSheet.QueryTables.Add(Connection:= _
       "TEXT;" & path & filename, Destination:=Range("$A$1"))
       .Name = filename
       .FieldNames = True
       .RowNumbers = False
       .FillAdjacentFormulas = False
       .PreserveFormatting = True
       .RefreshOnFileOpen = False
       .RefreshStyle = xlInsertDeleteCells
       .SavePassword = False
       .SaveData = False
       .AdjustColumnWidth = False
       .RefreshPeriod = 0
       .TextFilePromptOnRefresh = False
       .TextFilePlatform = xlWindows
       .TextFileStartRow = 1
       .TextFileParseType = xlDelimited
       .TextFileTextQualifier = xlTextQualifierDoubleQuote
       .TextFileConsecutiveDelimiter = False
       .TextFileOtherDelimiter = vbTab
       .TextFileDecimalSeparator = "."
       .TextFileThousandsSeparator = " "
       .Refresh BackgroundQuery:=False
   End With
End Sub

我确实尝试在"If .Show =-1 Then“之后放置一个for循环,例如

代码语言:javascript
运行
复制
Dim FileNames As String
Dim WSNew As Worksheet

For Each filename in FileNames
Set WSNew = ActiveWorkbook.Sheets.Add
Next filename 

但是它显示了一个错误,以至于它无法编译它。

EN

回答 1

Stack Overflow用户

发布于 2021-03-25 10:20:57

将现有的过程替换为以下过程:-

代码语言:javascript
运行
复制
Sub Importfile(path As String, filename As String)

    Dim Target      As Range
    Dim C           As Long
    
   'Sheets.Add(After:=Sheets("Sheet1")).Name = "RawData"
   'ActiveSheet.Name = filename
    On Error Resume Next
    With ActiveSheet
        C = .Cells(1, .Columns.Count).End(xlToLeft).Column
        If C > 1 Then C = C + 1
        Set Target = .Cells(1, C)
        With .QueryTables.Add(Connection:="TEXT;" & path & filename, _
                              Destination:=Target)
            .Name = filename
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = False
            .AdjustColumnWidth = False
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = xlWindows
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileOtherDelimiter = vbTab
            .TextFileDecimalSeparator = "."
            .TextFileThousandsSeparator = " "
            .Refresh BackgroundQuery:=False
        End With
    End With
End Sub

一切都和以前一样,但是新导入的文件将被写入到第一行中的下一个可用单元格。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66791868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档