- 締切済み
Excelのマクロで同じ処理を実行
Excelのマクロについてです。 この度、フォルダ内にあるデータから傾きを抽出して、 データシートにまとめる作業を求められています。 一度ずつ開いて行うのが大変なので、マクロを用いようと思っています。 Sub マクロループ() Dim myPath As String Dim myFile As String myPath = "C:\test\" myFile = Dir(myPath & "*.CSV*") Do Until myFile = "" Workbooks.Open myPath & myFile ( ActiveWindow.ScrollRow = 2 ActiveWindow.ScrollRow = 3 ~ ~ ActiveSheet.Shapes("グラフ 1").IncrementLeft -125.25 ActiveSheet.Shapes("グラフ 1").IncrementTop 21.75 Application.CommandBars("Format Object").Visible = False ) ActiveWorkbook.Close True myFile = Dir() Loop End Sub ~の部分に省略した処理が入ります。 これでエラーなどは起きないのですが、開いて閉じるだけになってしまっています。 ()で括られた部分だけで実行すると、そのファイルで傾きを表示してくれます。 これを全ファイルでやりたいのですが、お力添えをお願いします。 また、それぞれで得られた傾きをデータシートに自動で入力することなどができればそれも教えていただければ幸いです。 どうかよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mt2015
- ベストアンサー率49% (258/524)
提示された範囲のソースを見る限りでは、フォルダ内のcsvを開いて、恐らくグラフを書いて傾きを求めて、開いたcsvを閉じると言うことをやっているようですね。 文中で「データシート」とあるのは自ブックのシート名でしょうか? ()で括られた部分の最後に、自ブックのシートに求めた傾きを記録すれば良いのでは? 一例ですが、自ブックのワークシート「データシート」のA列にCSVファイル名、B列に求めた傾きを記録したいならこんな感じです。 「求めた傾き」の部分は実際の変数名に変えます。 nRow = nRow + 1 ThisWorkbook.Sheets("データシート").Cells(nRow, 1) = myFile ThisWorkbook.Sheets("データシート").Cells(nRow, 2) = 求めた傾き 質問の意味を勘違いしていたらごめんなさい。
答えになってないけど。 1)マクロではなく、VBAと私は言ってます。 2)AciveWorkSheet ってことは、開いて見てるんですね?
補足
迅速な回答ありがとうございます。 はい、開いてみています。ただ開いて閉じるだけになってしまっています。 一つ一つのファイルでは上手くいったので、()内に問題はないと考えているのですが、、、