2013-02-02 99 views
2

我在嘗試理清我的VBA代碼時發現此論壇。到目前爲止,我在VBA編程方面只有很少的經驗。這就是爲什麼我自兩天以來一直在研究解決我的問題,但沒有成功的原因。但是,我非常有興趣提供我的編程技巧,我希望你能幫助我做到這一點。使用VBA將Excel txt文件導入(具體列)到表格中

基本上我想導入一個TXT文件到名爲「TblDataImport」的表末尾的活動Excel工作簿中,名爲「DataImport」的工作表。

的TXT文件由13列,其由製表符分隔的:

  1. 行:公司
  2. 行:日期名稱 CustomerGroup CustomerNo SalesOrder ItemNumber的ItemGroup LineStatus 數量價格折扣 DiscountPercentage NetAmount
  3. 行:所有相應的值...

我dont't需要進口,因爲在這裏我想導入的表中的第一和第二排要存在的數據包括標題。另外,我只需要13列中的7列,這些列以粗體形成。如果用戶可以使用打開的文件對話框選擇文本文件,那將是完美的。

如果我手動打開TXT文件並將其內容粘貼到Excel中,它已經包含
在正確的列中。所以在格式化方面不應該有任何缺陷。

我很好奇你提出的解決方案。

隨着宏錄製我只能滿足我的一些條件:

Sub DataImport() 
' DataImport Makro 
    Sheets("DataImport").Select 
    With ActiveSheet.QueryTables.Add(Connection:= _ 
     "TEXT;C:\Users\Sales.txt", Destination:=Range _ 
     ("$A$1")) 
     .Name = "AxaptaSales" 
     .FieldNames = True 
     .RowNumbers = False 
     .FillAdjacentFormulas = False 
     .PreserveFormatting = True 
     .RefreshOnFileOpen = False 
     .RefreshStyle = xlInsertDeleteCells 
     .SavePassword = False 
     .SaveData = True 
     .AdjustColumnWidth = True 
     .RefreshPeriod = 0 
     .TextFilePromptOnRefresh = False 
     .TextFilePlatform = 850 
     .TextFileStartRow = 1 
     .TextFileParseType = xlDelimited 
     .TextFileTextQualifier = xlTextQualifierDoubleQuote 
     .TextFileConsecutiveDelimiter = False 
     .TextFileTabDelimiter = True 
     .TextFileSemicolonDelimiter = False 
     .TextFileCommaDelimiter = False 
     .TextFileSpaceDelimiter = False 
     .TextFileColumnDataTypes = Array(4, 1, 9, 9, 1, 9, 9, 9, 1, 1, 1, 9, 1) 
     .TextFileTrailingMinusNumbers = True 
     .Refresh BackgroundQuery:=False 
    End With 
End Sub 

但是這個代碼只粘貼所有列到單元格A1(而不是在表的末尾)。還包括第一行和第二行以及我不需要的列。

+0

是否有一個原因,你不能使用另一個工作表來簡單地進行數據導入和手動刪除不必要的列? – ApplePie

+0

使用宏記錄器,並嘗試使用功能區「數據>來自文本」選項導入您的TXT。那麼你應該修改記錄的代碼來實現你的願望) –

+0

哇,你很快:) – Samuel

回答

0

如果添加以下代碼上面這已經在工作表添加到數據的末尾

Sub DataImport() 

    Dim LastRow As Integer 
    Dim LastRow2 As integer 
    LastRow = Range("A65536").end(xlup).row 
    LastRow = LastRow + 1 
' DataImport Makro 
Sheets("DataImport").Select 
With ActiveSheet.QueryTables.Add(Connection:= _ 
    "TEXT;C:\Users\Sales.txt", Destination:=Range _ 
    ("$A" & LastRow)) 
    .Name = "AxaptaSales" 
    .FieldNames = True 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = False 
    .RefreshStyle = xlInsertDeleteCells 
    .SavePassword = False 
    .SaveData = True 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .TextFilePromptOnRefresh = False 
    .TextFilePlatform = 850 
    .TextFileStartRow = 1 
    .TextFileParseType = xlDelimited 
    .TextFileTextQualifier = xlTextQualifierDoubleQuote 
    .TextFileConsecutiveDelimiter = False 
    .TextFileTabDelimiter = True 
    .TextFileSemicolonDelimiter = False 
    .TextFileCommaDelimiter = False 
    .TextFileSpaceDelimiter = False 
    .TextFileColumnDataTypes = Array(4, 1, 9, 9, 1, 9, 9, 9, 1, 1, 1, 9, 1) 
    .TextFileTrailingMinusNumbers = True 
    .Refresh BackgroundQuery:=False 
End With 
Range("A" & LastRow & ":A" & LastRow + 1).entireRow.delete 
LastRow2 = Range("A65536").end(xlup).row 
Range("H" & LastRow & ":M" & LastRow2).entirecolumn.delete 

末次

我認爲你需要這個應該做的(但我自己仍然是一個新手)

相關問題