1つのスプレッドシートからデータをインポートし、再フォーマットしてから送信するVBAスクリプトに問題があります。Excel VBA US/UK日付変換の問題
ソースシートの日付エントリは、dd/mm/yyyy形式で入力されます。宛先シートは、次の行を使用して日付をインポートします。
If RolandSource.Worksheets(tFocus).Cells(rFocus, 2).Value <> "" And RolandSource.Worksheets(tFocus).Cells(4, cFocus) <> "" And RolandSource.Worksheets(tFocus).Cells(rFocus, cFocus) <> "" Then ThisWorkbook.Worksheets(1).Cells(rRecord, 6).Value = RolandSource.Worksheets(tFocus).Cells(rFocus, cFocus).Value
Excelを使用してデータをコピーし、日付として自動的に書式設定することが問題です。このプロセスでは、これが必要ではないにもかかわらず、英国と米国の日付形式のあいまいな日付が変換されています。
インポートされるデータセットに日付(dd/mm/yyyy)またはテキストエントリが含まれている可能性があります。通常の処理ルートではエラーが発生します。誰か提案はありますか?
ThisWorkbook.Worksheets(1).Cells(1,2).value = ThisWorkbook.Worksheets(1).Cells(1,1).Value
(ご注意:あなたは、私がイミディエイトウィンドウで次のコマンドを実行し、セルA1に「2003年1月2日」と入力し、テキストとしてセルA1をフォーマットすることにより、記述していますこの問題を見ることができます
このソリューションは、日付と単語を処理するループの一部として使用されます)。
ありがとうございます。
'ThisWorkbook.Worksheets(1).Cells(1,2).NumberFormat =" @ "'を実行した後、 'ThisWorkbook.Worksheets(1).Cells(1,2).Value = ThisWorkbook.Worksheets (1).Cells(1,1).Value'を使用して、ターゲットセルの自動フォーマットを防止します。 – omegastripes
Excelは日付を「1 Jan 1900」=「1」のシリアル番号として保存します。日付のように見えるものを入力すると、ExcelはWindows Regional Short Dateの設定に従ってそれを解析します。 'RolandSource'の日付が「実際の日付」である場合、解決策は日付のテキスト表現である場合とは異なります。テキスト表現の場合は、列をテキストとして事前にフォーマットし、ソースセルの '.Text'プロパティをコピーします。それらが実際の日付で正しい場合、この問題は発生しないはずですが、ソースセルの '.Value2'プロパティにアクセスすることができます。 –
@omegastripesありがとうございました。このソリューションを試しましたが、ループが失敗します。 – user3190686