複数のシートを含むExcelファイルがあります。私は以下のことをするマクロが必要です。Excel VBAデータをCSVとしてエクスポート
- 指定したシート名のシートを選択します。
- 1列目のデータの長さが1より大きいシートからすべての行を選択します。
- 選択したデータを指定されたディレクトリにCSVファイルとしてエクスポートします。
私はExcel VBAに関する非常に基本的な理解を持っており、助けていただければ幸いです。
ありがとう、
複数のシートを含むExcelファイルがあります。私は以下のことをするマクロが必要です。Excel VBAデータをCSVとしてエクスポート
私はExcel VBAに関する非常に基本的な理解を持っており、助けていただければ幸いです。
ありがとう、
サンプルコードを提供します。ここではコード全体を記述するのではないので、コードをいっしょにすることはあなたの仕事です。
1.シートを選択する場合は、Select
シートオブジェクトのメソッドを呼び出す必要があります。シートを参照するには複数の方法がありますが、最も一般的なもの(IMO)はSheets("Name of the sheet").Select
です。
2a。セルを選択するには手順は同じですが、シートの代わりにセルオブジェクト、つまりCells(r, c).Select
を使用する必要があります(もう一度、これはセルを参照する唯一の方法ではありません:Range("A1").Select
)。r
とc
行と列をそれぞれ表す整数です。一般的にRange
タイプのオブジェクトにSelect
を呼び出す必要があります。
概要はこれまでのところ、私は、ブック内の特定のオブジェクトを選択する方法をカバーし、それはそれを行うための最適な方法ではありません。明示的に物事を選択する必要がない限り、私はそれをしません。代わりに、次の構文を使用して、特定のシート内の特定のセルの値を取得できます。
Sheets("SheetName").Cells(r, c).Value
これは、何も選択せずに、SheetName
という名前のシートに行r
のセルの値とカラムc
にアクセスするコードの前の部分を、合成され。この方法で、値を設定または取得できます。
2b。条件のようなものをテストする場合は、If
ステートメントを使用してください。あなたは、いくつかの文字列変数、あなたのテストに合格した細胞からのすべてのデータを追加したいDim content As String
のようなものを作成する必要があります
If Len(Sheets("SheetName").Cells(r, c).Value) > 1 Then
'do something if it's true
Else
'do something if it's false
End If
3.:あなたのケースでは、それは次のようになります。結局のところ、このテキスト変数をファイルに書き込むことができます。これは便利かもしれません。詳細についてはこちらを参照してください、How to create and write to a txt file using VBA
はまた、あなたはすべての行をループする必要があるので、あなたは、ループ・ステートメントが必要になります。Loops in VBA
私はそれがあなたに何をすべきかについていくつかの手掛かりを与えることを願っていますし、する方法:
これはあなたがしたい場所にかなり近づくはずです。
Public Sub SaveWorksheetsAsCsv()
Dim xWs As Worksheet
Dim xDir As String
Dim folder As FileDialog
Set folder = Application.FileDialog(msoFileDialogFolderPicker)
If folder.Show <> -1 Then Exit Sub
xDir = folder.SelectedItems(1)
For Each xWs In Application.ActiveWorkbook.Worksheets
xWs.SaveAs xDir & "\" & xWs.Name, xlCSV
Next
End Sub