3

私はしばらく探していましたが、簡単な解決策を見つけることができません。vbaを使用してExcelに読み込み、結果を特定のワークシートの特定のセル範囲に出力したいcsvファイルがあります。

私は次のコードを使用していますが、Excelマクロを2回実行すると、基本的に、データをコピーするのではなく、次の空白の列に追加します。また、特定のシートではなく、アクティブなシートに貼り付けるだけです。

これを行う方法について何か提案はありますか?

ありがとう、

Public Sub Example()
    Const csPath As String = "starting_positions.csv"
    Dim ws As Excel.Worksheet
    Set ws = Excel.ActiveSheet
    With ws.QueryTables.Add("TEXT;" & csPath, ws.Cells(1, 1))
        .FieldNames = True
        .AdjustColumnWidth = True
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileCommaDelimiter = True
        ''// This array will need as many entries as there will be columns:
        .TextFileColumnDataTypes = Array(xlTextFormat, xlTextFormat)
        .Refresh
    End With
End Sub
4

1 に答える 1

4

CSVデータを収集する必要があるのと同じブックでコードを実行すると仮定して、次のことを試してください。

  1. またはに置き換えSet ws = Excel.ActiveSheetて、インデックスまたは名前を使用して特定のシートを定義します。Set ws = ThisWorkbook.Sheets(1)Set ws = ThisWorkbook.Sheets("Sheet1")
  2. ws.UsedRange.ClearContents のブロックを配置With...するとシート全体がクリアされるため、新しいデータは以前と同じ場所に配置されます。

もう1つのヒント:このマクロを何度も使用する場合は、新しい接続を毎回作成しないでください。すべてのオプションが類似している場合は、.Refreshメソッドのみを使用してください。

コード部分のマージで行き詰まっている場合は、マクロレコーダーを使用して、いずれかの手順を手動で渡してみてください。あなたの場合、これは問題の大部分を解決します。幸運を!

于 2013-01-29T20:37:56.167 に答える