2

VBA コードを整理しようとしているときに、このフォーラムを見つけました。これまでのところ、VBA プログラミングの経験はほとんどありません。そのため、問題の解決策を 2 日間調査しましたが、成功しませんでした。しかし、私は自分のプログラミング スキルを向上させることに非常に関心がありますa。

基本的に、TXTファイルをアクティブなExcelワークブック、「TblDataImport」という名前のテーブルの最後にある「DataImport」という名前のシートにインポートしたいと思います。

TXT ファイルは、タブで区切られた 13 列で構成されています。

  1. 行: 会社名
  2. 行:日付 名前CustomerGroup CustomerNo SalesOrder ItemNumber ItemGroup LineStatus数量 価格 割引DiscountPercentage NetAmount
  3. 行: 対応するすべての値...

データをaredyにインポートしたいテーブルが見出しを含めて存在するため、1行目と2行目をインポートする必要はありません。また、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 に貼り付けるだけです (テーブルの最後ではありません)。また、1 行目と 2 行目、および不要な列も含まれています。

4

1 に答える 1

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  

サブ終了

これは必要に応じて行う必要があると思います(ただし、私はまだ初心者です)

于 2013-03-20T23:45:39.890 に答える