よねさんのWordとExcelの小部屋 なんでも掲示板

HOME HELP 新規作成 新着記事 ツリー表示 トピック表示 検索 過去ログ

■12985 / 1階層)  CSVデータ→エクセル(ソート)
□投稿者/ よねさん -(2016/04/14(Thu) 09:07:36)
    CSVファイルの書き出し部分が書いてなかったので追記しました。
    ややこしいのはCSVでの項目順番と書き出し先の順番が異なるところです。
    各項目ごとにコードを書く必要があるのでちょっと長くなります。
    
    また、sort部分のコードは2007以降は変化しています。
    こちらでは2010or2013でしたので、sortのコードを修正しています。
    お書きになっていた元のコードはコメントアウトしていますので
    バージョンに合わせて適切に修正してください。
    
    
    Sub SheetCopy()
    
    Dim myBook As Workbook
    Dim OpenFileName As String
    Dim myb_name1 As String
    Dim myb_name2 As String
    Dim mySh_name As String
    Dim mySh1 As Worksheet, mySh2 As Worksheet
    Dim mySh_name1 As String
    Dim wSheetName As Variant
    Dim wNewSheetName As Variant
    Dim NewDate As Date
    Dim Sh As Worksheet
    Dim wLastGyou As Long
    
    
        'アクティブなシート名を取得
        wSheetName = ActiveSheet.Name
        NewDate = DateAdd("m", 1, Range("A1").Value)
        wNewSheetName = Format(NewDate, "yyyy.m")
        '同名シートの有無を確認
        For Each Sh In ThisWorkbook.Worksheets
            If Sh.Name = wNewSheetName Then
                MsgBox "すでに同名のシートが有りますので終了します "
                Exit Sub
            End If
        Next Sh
    
        'ワークシートのコピー
        ActiveSheet.Copy after:=ThisWorkbook.Sheets(Sheets.Count)
    
        'コピーしたシート名を変更する
        ActiveSheet.Name = wNewSheetName
        Range("A12:O119").ClearContents
    
    
         'A1セルに新しい日付を入力
        Range("A1").Value = NewDate
    
        '転記先シートを変数にセット
        myb_name1 = ThisWorkbook.Name
        mySh_name1 = ActiveSheet.Name
        Set mySh1 = Workbooks(myb_name1).Sheets(mySh_name1)
        'CSVファイルを開く
        OpenFileName = Application.GetOpenFilename("CSV ファイル (*.csv),*.csv")
        If OpenFileName <> "False" Then
            Workbooks.Open OpenFileName
        End If
        myb_name2 = ActiveWorkbook.Name
        mySh_name = Left(myb_name2, Len(myb_name2) - 4)
        'CSVシートを変数にセット
        Set mySh2 = Workbooks(myb_name2).Sheets(mySh_name)
        
      '--------書き出し
        With mySh1
    Dim Fcn As Long
    Dim i As Long
    Dim buf As String
    Dim tmp As Variant
        Open OpenFileName For Input As #1
            Fcn = 9
            Do Until EOF(1)
                Line Input #1, buf
                Fcn = Fcn + 1
                tmp = Split(buf, ",")
                If Fcn >= 11 Then
                    For i = LBound(tmp) To UBound(tmp)
                        If i = 2 Then
                            .Cells(Fcn + 1, 13).Value = tmp(i)
                        ElseIf i = 3 Then
                            .Cells(Fcn + 1, 1).Value = tmp(i)
                        ElseIf i = 4 Then
                            .Cells(Fcn + 1, 4).Value = tmp(i)
                        ElseIf i = 5 Then
                            .Cells(Fcn + 1, 15).Value = tmp(i)
                        End If
                            
                    
                    Next i
                End If
    
            Loop
            Close #1
    
        End With
     '-------------
        
    
        '並べ替えを実行する
        wLastGyou = mySh1.Cells(Rows.Count, 1).End(xlUp).Row
    '    mySh1.Range("A12:O" & wLastGyou - 1).Sort _
            Key1:=Range("O12"), _
            Order1:=xlDescending, _
            Header:=xlNo
        mySh1.Sort.SortFields.Add Key:=Range("O12:O" & wLastGyou) _
            , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    
        With mySh1.Sort
            .SetRange Range("A12:O" & wLastGyou)
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    
    End Sub
    
    

記事引用 削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←CSVデータ→エクセル(ソート) /佐藤 →Re[2]: CSVデータ→エクセル(ソート) /佐藤
 
上記関連ツリー

Nomal CSVデータ→エクセル(ソート) / 佐藤 (16/04/13(Wed) 16:53) #12984
Nomal CSVデータ→エクセル(ソート) / よねさん (16/04/14(Thu) 09:07) #12985 ←Now
  └Nomal Re[2]: CSVデータ→エクセル(ソート) / 佐藤 (16/04/14(Thu) 11:44) #12988
    └Nomal Re[3]: CSVデータ→エクセル(ソート) / よねさん (16/04/14(Thu) 17:48) #12991
      └Nomal Re[4]: CSVデータ→エクセル(ソート) / 佐藤 (16/04/18(Mon) 15:47) #12994
        └Nomal Re[5]: CSVデータ→エクセル(ソート) / よねさん (16/04/19(Tue) 08:17) #12996
          └Nomal Re[6]: CSVデータ→エクセル(ソート) / 佐藤 (16/10/18(Tue) 15:18) #13089
            └Nomal Re[7]: CSVデータ→エクセル(ソート) / よねさん (16/10/18(Tue) 16:53) #13090
              └Nomal Re[8]: CSVデータ→エクセル(ソート) / 佐藤 (16/10/19(Wed) 13:40) #13091
                └Nomal Re[9]: CSVデータ→エクセル(ソート) / よねさん (16/10/20(Thu) 07:46) #13092
                  └Nomal Re[10]: CSVデータ→エクセル(ソート) / 佐藤 (16/10/21(Fri) 16:46) #13097
                    └Nomal Re[11]: CSVデータ→エクセル(ソート) / よねさん (16/10/22(Sat) 08:22) #13098

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Pass/

HOME HELP 新規作成 新着記事 ツリー表示 トピック表示 検索 過去ログ

- Child Tree -