0

アクティブな Excel ワークシートの行をループするマクロを作成したいと考えています。各ループ反復は、列 A、B、および C の値をコピーします。最初のセルが空白の場合、空のセルが行 2 にある場合を除き、ループを終了します。次に、ループを続けたいと思います。最終的に、すべてのデータがコピーされた後、そのコピーされたデータを CSV ファイルに書き込みたいと考えています。これは可能ですか?

Excel ワークシート

マクロを記録しようとしましたが、ループを使用せず、ハードコーディングされているため、ソリューションはまったく堅牢ではありませんRange Selects

Sub Export_to_CSV()
'
' Export_to_CSV Macro
'

'
    Range("A1:C1,A3:C27").Select
    Range("A3").Activate
    Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste
    Sheets("Sheet2").Select
    ActiveWindow.SelectedSheets.Delete
    Sheets("Sheet3").Select
    ActiveWindow.SelectedSheets.Delete
    ChDir "C:\CSV"
    ActiveWorkbook.SaveAs Filename:="C:\CSV\MacroCSV.csv", FileFormat:=xlCSV, _
        CreateBackup:=False
End Sub

ありがとう!

4

1 に答える 1

2

あなたの要件があなたが書いたとおりであれば、これはうまくいくはずです

Option Explicit

Sub Export_To_CSV()

Dim wkbMain as Workbook, wkbCopy as Workbook
Dim wksMain as Worksheet, wksCopy as WOrksheet

Set wkbMain = ThisWorkbook
Set wkbCopy = Workbooks.Add

Set wksMain = wkbMain.Sheets("mySheet")
Set wksCopy = wkbCopy.Sheets(1)

With wksMain
  .Range(.Range("A3"),.Range("C3").End(xlDown)).Copy wksCopy.Range("A1")
End With

With wkbCopy

    Application.DisplayAlerts = False

    Dim x as Integer
    For x = 2 to .Worksheets.Count
        .Sheets(x).Delete
    Next

    Application.DisplayAlerts = True

    .SaveAs Filename:="C:\CSV\MacroCSV.csv", FileFormat:=xlCSV, CreateBackup:=False

End With

End Sub
于 2013-01-10T20:43:03.537 に答える