0

私はこれを検索して検索しましたが、近づいてきましたが、完璧ではありません。ほら…

私が必要としているのは、他の Excel ワークブックを連続して処理し、データをコピーするためのコードです。ファイルには 1、2、3、4 などの名前が付けられ、最大で約 60 個までです。私のすべてのファイルを開くコードがいくつかありますが、これはうまく機能します。次に、すべてのワークブックに移動してセットアップデータをコピーし、それをメインのワークブックに戻す必要があります。これも同様に実行できました。ここに私の問題があります...

  1. コードを 1 回記述して、残りのファイルで機能させる方法が必要であることはわかっています。すなわち。最初のファイルの名前が 1.csv の場合、コードは 1.csv でそれを実行し、次に 1.csv + 1 で 2.csv を意味し、ループアウトすることができますか? それができるはずのようです。1.csv から 60.csv までコピーするために同じコードを手動で作成する必要はありません。

  2. それをループする方法がある場合は、最後の if 部分を終了する方法を教えてください。IE では、1 週間で 37 個のファイルがあり、次は 40 個という具合です。ファイル 1.csv で開始し、37.csv または 60.csv のいずれかの最後のアクティブなファイルに到達するまで動作し、38.csv ファイルがない場合は終了するようにします。

これが私が持っている基本的な記録されたコードです。

   Public Sub testr()
  Dim filenum As Integer
  Dim lastrow As Long

  filenum = 1
  On Error GoTo my_handler

  Do
    Windows(filenum & ".CSV").Activate
    Range("A25").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.Copy
    Windows("test.xlsm").Activate
    Range("A1").Select
    lastrow = Worksheets("Data").Cells(1, 1).End(xlDown).Row
    ActiveSheet.Paste
    filenum = filenum + 1
  Loop

my_handler:
  MsgBox "All done."
  Exit Sub
End Sub

誰かが私に与えることができるどんな助けも素晴らしいでしょう! よろしくお願いします〜

4

2 に答える 2

0

さて、あなたが今持っているコードのために、少なくとも次のように編集する必要があります:

Public Sub testr()
  Dim filenum As Integer
  filenum = 1
  On Error GoTo my_handler

  Do
    Windows(filenum & ".CSV").Activate
    Range("A25").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.Copy
    Windows("test.xlsm").Activate
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    filenum = filenum + 1
  Loop

my_handler:
  MsgBox "All done."
  Exit Sub
End Sub
于 2013-09-05T14:15:55.157 に答える
0

これらすべてを DO...LOOP でラップしてみることができます。作業する .csv ファイルの数がわからない場合は、エラー ハンドラを挿入して、ファイルが見つからなくなったら終了します。

文字列連結を使用してファイル名を変更できます。たとえば、filenum という変数を使用すると、filenum = 1 の場合、filenum & ".csv" は "1.csv" になり、filenum = 2 の場合、filenum & ".csv" になります。 「2.csv」などになります。

例えば:

Public Sub testr()
Dim filenum As Integer
filenum = 1
On Error GoTo my_handler
Do
  Windows(filenum & ".CSV").Activate
  'rest of code goes here
filenum = filenum + 1
Loop

my_handler:
  MsgBox "All done."
Exit Sub
于 2013-09-04T19:08:11.253 に答える