3

似たような投稿がたくさんありますが、私が理解する必要があるほど簡単に、私が望むことを正確に行うものはありません

Access 2007 VBA を使用して csv ファイルを開き、列見出し行を置き換えたい:

OldColumn1,OldColumn2

1,2

NewColumn1,NewColumn2

1,2

つまり、データの塊を乱すことはありません。

次に、保存して閉じます。

このコードを試しましたが、データが削除されます:

Sub WriteFile()


  Dim OutputFileNum As Integer
  Dim PathName As String

  PathName = Application.ActiveWorkbook.Path
  OutputFileNum = FreeFile

  Open PathName & "\Test.csv" For Output Lock Write As #OutputFileNum

  Print #OutputFileNum, "NewCol1" & "," & "NewCol2"


  Close OutputFileNum

End Sub
4

2 に答える 2

1
  1. Access 2007 データベースにレコードセットが含まれるように、.csv をインポートまたはリンクします。
  2. OldColumn[x] のエイリアスとして NewColumn[x] を使用してクエリを記述します。
  3. TransferText 機能を使用する vba コードを作成するか、同じことを行うマクロを作成してクエリを .csv ファイルとしてエクスポートします (必要に応じて元の csv を上書きします)。

明らかに、任意の数または種類のファイルに対してこの概念を自動化および再現するために実行できるボーナスがたくさんあります。ただし、上記のソリューションは、すべての MS Access 環境で機能するはずです。

これらの手順の詳細が必要な場合はお知らせください。

于 2012-12-10T18:15:10.410 に答える
0

私の以前のコメントに加えて、Excel 参照を使用する方法を参照してください。

Public Sub EditCsv()

Dim xlApp As Object
dim xlWbk As Object
Dim xlWst As Object

    Set xlApp = CreateObject("Excel.Application")
    Set xlWbk = xlApp.Workbooks.Open ".../Test.csv" 'Amend this to your needs
    Set xlWst = xlWbk.Sheets(1)

    'This assumes the columns are at the beginning of the file
    xlWst.Range("A1") = "My New Column Name"
    xlWst.Range("B1") = "My New Second Column Name"

    xlWbk.Close -1 'Close and save the file here
    xlApp.Quit

    Set xlApp = Nothing
    Set xlWbk = Nothing
    Set xlWst = Nothing

End Sub
于 2012-12-11T09:48:55.967 に答える