|    | 
     ▼inoue さん: 
>ここでヒントは差し上げましたが1からやり直しですか? 
>何も進んでいないのですか? 
お世話になります。 
一応できるところまでやってみましたが、できればご教授下さい。 
 
マクロを記録したりして、下記のところまで、テキストをインポートできましたが、 
F1という注文NOの最後の場所から30台分のF1の注文No分を省く部分をどういれて 
よいかわかりかねております。 
すみませんが、よろしくお願い致します。 
 
Sub インポート()  'データインプット 
 
' データのインポート Macro 
 
   
  Dim OpenFile As String 
  Dim TBL() As Long, DataCnt As Long, STRow As Long 
  Dim ReadDete As String, DData As Variant 
  OpenFile = Application.GetOpenFilename("テキストファイル (*.txt;*.dat),   *.txt;*.dat")  
  If OpenFile = "False" Then 
    End 
  End If 
  Stime = Now()          '現時点 
  Open OpenFile For Input As #1  '1レコード毎読込み 
  Line Input #1, ReadDete     '読込んだレコードをReadDeteに保存 
  DataCnt = DataCnt + 1      '最終行を検索 
  Do Until EOF(1) 
    Line Input #1, DData 
    DataCnt = DataCnt + 1 
  Loop 
  Close #1 
  CNT = 0: WFlg = 0 
  Range("A1000").Value = ReadDete  '1レコードの長さを計測し貼り付け保存 
  For i = 1 To Len(ReadDete) 
    Range("A3").Value = Mid(ReadDete, i, 1) 
    If Mid(ReadDete, i, 1) = "," And (WFlg = 0 Or WFlg = 2) Then 
      CNT = CNT + 1 
      ReDim Preserve TBL(1 To CNT) 
      If WFlg = 0 Then 
       TBL(CNT) = 1 
      Else 
       TBL(CNT) = 2 
      End If 
      WFlg = 0 
      カンマ数 = カンマ数 + 1 
    ElseIf Mid(ReadDete, i, 1) = Chr(34) And WFlg = 0 Then 
      WFlg = 1 
    ElseIf Mid(ReadDete, i, 1) = Chr(34) And WFlg = 1 Then 
      WFlg = 2 
    ElseIf Mid(ReadDete, i, 1) = "," And WFlg = 2 Then 
      WFlg = 0 
      カンマ数 = カンマ数 + 1 
    ElseIf i = Len(ReadDete) Then 
      CNT = CNT + 1 
      ReDim Preserve TBL(1 To CNT) 
      TBL(CNT) = 1 
    End If 
  Next 
  
  Range("B2").Resize(, カンマ数 + 1).Value = TBL 
  
  STAdd = StartAddSet 
  
  huhu = Range(STAdd).Row 
  popo = (Range(STAdd).Row + DataCnt - 1) 
  yuio = Cells.Rows.Count - (Range(STAdd).Row + DataCnt - 1) 
  STRow = 1 
  If DataCnt > Cells.Rows.Count * 2 Then 
    MsgBox DataCnt & "以上は、このマクロでは無理です。" 
    End 
  ElseIf Cells.Rows.Count - (Range(STAdd).Row + DataCnt - 1) >= 0 Then 
    LPC = 1 
  Else 
    Ag = (Range(STAdd).Row + DataCnt) - Rows.Count 
    LPC = 2 
  End If 
   
  'End 
  
  For i = 1 To LPC                     
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & OpenFile, _ 
       Destination:=Range(STAdd)) 
    .TextFilePlatform = xlWindows 
    .TextFileStartRow = 1 
    .TextFileParseType = xlFixedWidth 
    .TextFileTextQualifier = xlTextQualifierDoubleQuote 
    .TextFileConsecutiveDelimiter = False 
    .TextFileTabDelimiter = True 
    .TextFileSemicolonDelimiter = False 
    .TextFileCommaDelimiter = False 
    .TextFileSpaceDelimiter = False 
    .TextFileColumnDataTypes = Array(1, 1, 1, 1, 9, 9, 9, 9, 9, 1, 9) '2は文字列、1は標準、9は削除 
    .TextFileFixedColumnWidths = Array(9, 6, 2, 10, 16, 22, 15, 10, 10, 6)   'セルの幅 
    .Refresh BackgroundQuery:=False 
    End With 
    If LPC = 2 And i = 1 Then 
      '3537 
      'STRow = DataCnt - (Range(STAdd).Row + DataCnt - 1) - Rows.Count 
      STRow = Rows.Count - Range(STAdd).Row + 1 
      AcShNam = ActiveSheet.Name 
      Worksheets.Add(After:=ActiveSheet).Name = AcShNam & "-2" 
      Application.DisplayAlerts = False 
    End If 
  Next 
  Application.DisplayAlerts = True 
  Erase TBL 
End Sub 
 | 
     
    
   |