ワークシート全体またはある範囲のデータをあるワークブックから別のワークブックにコピーしようとしています。データを含むすべてのセルを選択し、新しく作成したワークシートに貼り付けることで、これを手動で正常に行うことができます (日付形式は維持されます)。ただし、VBA を使用してこれを実行しようとすると、12 日を超える日付はすべてテキスト [米国 (m/dd/yyyy)/オーストラリア (dd/mm/yyyy) 形式の変更] に変換されます。最初にセルを米国形式の日付にフォーマットしようとしましたが、これは役に立ちません。何か提案はありますか?
参考までに - ソース データは VBA によって開かれた CSV ファイルからのものです - 日付の値はテキスト (例: "2/08/2013" または "31/07/2013") で、開くときに自動的に日付に変換されます (IsNumber = True およびIsText = False)。
開いている CSV は次のようになります (3000 奇数行のサンプル): 「日付」フィールドと「最終更新」フィールドは dd/mm/yyyy hh:mm 形式であることに注意してください。
Id Title Division Status Date Last update
REQ:7619 Job Details ICTIS InProg 31/07/2013 13:03 6/08/2013 15:51
REQ:7617 Job Details ICTIS InProg 31/07/2013 12:06 2/08/2013 11:34
REQ:6994 Job Details ICTIS Open 31/07/2013 12:05 31/07/2013 12:05
REQ:7613 Job Details MNHD User 31/07/2013 12:01 1/08/2013 15:59
INC:79210 Job Details ICTIS Open 31/07/2013 12:00 31/07/2013 12:00
コードの簡単な抜粋:
'Select all Data Cells
Sheets(1).Cells(1, 1).Activate
ActiveCell.SpecialCells(xlLastCell).Select
LastRow = ActiveCell.Row
'Format Date Fields to avoid automatic translation issue
'This does not help problem... so commented out
'Columns("M:M").Select
'Selection.NumberFormat = "m/d/yyyy"
'Select all data in sheet and copy
range("A2:" & LastCol & LastRow).Select
selection.Copy
'Rest of code moves to previous sheet and copies into cell A8
上記のコードを実行した後の同じファイル。day>12 の日付は、day<=12 の日付とは異なる方法で処理されることに注意してください。2013 年 7 月 31 日には「PM」が追加され、2013 年 6 月 8 日と 2013 年 2 月 8 日は日と月が入れ替わっています。
Id Title Division Status Date Last update
REQ:7619 Job Details ICTIS In Progress 31/07/2013 1:03:49 PM 8/06/2013 15:51
REQ:7617 Job Details ICTIS In Progress 31/07/2013 12:06:31 PM 8/02/2013 11:34
REQ:6994 Job Details ICTIS Open 31/07/2013 12:05:50 PM 31/07/2013 12:05:50 PM
REQ:7613 Job Details MNHD With User 31/07/2013 12:01:46 PM 8/01/2013 15:59
INC:79210 Job Details ICTIS Open 31/07/2013 12:00:52 PM 31/07/2013 12:00:52 PM
私の簡単な修正は、コードを 2 つの部分に分割することでした。MsgBox によってプロンプトが表示された手動のコピー/貼り付けです。あまりエレガントではありません!! そしてエラーになりやすい。