2017-06-20 10 views
0

最近、FoxPro 7.0を使用してcsvデータファイルを生成しました。そこで、VBAを使用してA.csvのデータをxlsm形式のレポートExcelファイルBにコピーします。Excel VBA日付エラー付きデータのコピー

Workbooks("A") 
Range("A2:AB300000").Copy 
Workbooks("B").Activate 
Sheets("C").Select 
Range("B6").Select 
ActiveSheet.Paste 
Workbooks("A").Close 

私にコピーする複数のファイルがあります。 私の問題は、一般的な形式または日付形式のランダムに生成された米国/英国の日付を含む日付列に異なる種類の結果があることです。 事前にお手伝いいただきありがとうございます!

+2

あなたは問題を説明していないか、特定の質問をしました。何が問題なのですか?あなたは* error *と言っても、エラーを説明したり、エラーメッセージを出すことはありません。あなたは*助けてください。しかし、質問はしていません。 [ask]と[mcve]を参照して投稿を編集して、あなたが何を求めているのかをより明確に説明してください。 –

+0

私の問題は、日付を含む列がランダムに間違っていたことです。日付は英国の書式になっているはずです。しかし、VBAを使用してコピーすると、一部の日付は通常で、一部は米国形式で、一部は一般形式です。 –

+0

1つの方法:オリジナルの.csvファイルが英国形式の日付であると仮定して、CSVファイルをExcelに 'インポート 'する必要があります。ファイルを開くと、ExcelはWindows地域の短い日付設定に従って日付を解析します。イギリスの設定ではない場合は、あなたが記述した問題が表示されます。ファイルを 'Import'すると、テキストインポートウィザードが開き、解釈のための日付設定を定義することができます。 –

答えて

0

私はこのコードを使用します。

Sub TransToXLSFromCSV() 
Dim vFile As Variant 
Dim vDB 
Dim fn As String 
Dim strPath As String 
Dim i As Long 
Dim Wb As Workbook 
    strPath = ThisWorkbook.Path 
    vFile = Application.GetOpenFilename("Csv Files *.csv,*.csv;*.csv", _ 
     Title:="Select the Csv Files!", MultiSelect:=True) 
    If TypeName(vFile) = "Boolean" Then Exit Sub 
    Application.ScreenUpdating = False 

    For i = 1 To UBound(vFile) 
     fn = Dir(vFile(i)) 
     fn = Left(fn, Len(fn) - 4) 

     Set Wb = Workbooks.Open(Filename:=vFile(i), Format:=2) 
     vDB = Wb.ActiveSheet.UsedRange 
     Wb.Close 
     Set Wb = Workbooks.Add 
     With Wb 
      .ActiveSheet.Range("a1").Resize(UBound(vDB, 1), UBound(vDB, 2)) = vDB 
      .SaveAs Filename:=strPath & "\" & fn & ".xlsx" 
      .Close (0) 
     End With 
    Next i 
    Application.ScreenUpdating = True 
End Sub 
関連する問題