2

次のコードは、列に含まれる先行ゼロを削除しています。PasteSpecial がこれを処理してくれると思いました。このサブが CSV に入力されるときに先行ゼロが保持されることを保証する方法はありますか?

Sub PasteStufff()

Dim myRange As Range
Dim outFile As String

outFile = "mypath\path\file.csv"

Set myRange = Sheets("base").Range("A1:G1")
Set myRange = Range(myRange , myRange .End(xlDown))
Sheets("base").Select
myRange.Select
Selection.Copy
    Workbooks.Add
    ActiveSheet.Cells(1, 1).PasteSpecial xlPasteValues
    ActiveWorkbook.SaveAs Filename:= _
    outFile _
    , FileFormat:=xlCSV, CreateBackup:=False
    Application.DisplayAlerts = False
    ActiveWorkbook.Close
    Application.DisplayAlerts = True

End Sub
4

2 に答える 2

3

先行ゼロに関しては、Excel は非常に厄介です。この作業を行うために私が見つけた唯一の方法は、貼り付けられたデータを受け取るすべてのセルを「テキスト」として事前にフォーマットすることです。「一般」などではなく、「テキスト」だけです。データを貼り付ける前に、セルを「テキスト」としてフォーマットする必要があります。データを貼り付けた後にそれを行おうとすると、先頭のゼロは既に失われています。

そのようにすれば、PasteSpecial も必要ありません。

貼り付け先のセルが正しくフォーマットされていない場合、PasteSpecial は効果がありません。Excel は常に、数値のように見えるものを数値として解釈しようとします。

これは絶対に理想的ではありません.すべてのデータを数えてから、ワークシート上のその数のセルだけをフォーマットする必要があるかもしれません.

于 2013-09-17T20:57:58.653 に答える