こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

~の部分に省略した処理が入ります。
これでエラーなどは起きないのですが、開いて閉じるだけになってしまっています。
()で括られた部分だけで実行すると、そのファイルで傾きを表示してくれます。
これを全ファイルでやりたいのですが、お力添えをお願いします。

また、それぞれで得られた傾きをデータシートに自動で入力することなどができればそれも教えていただければ幸いです。
どうかよろしくお願いします。

投稿日時 - 2017-12-19 17:30:14

QNo.9409541

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

提示された範囲のソースを見る限りでは、フォルダ内のcsvを開いて、恐らくグラフを書いて傾きを求めて、開いたcsvを閉じると言うことをやっているようですね。
文中で「データシート」とあるのは自ブックのシート名でしょうか?

()で括られた部分の最後に、自ブックのシートに求めた傾きを記録すれば良いのでは?

一例ですが、自ブックのワークシート「データシート」のA列にCSVファイル名、B列に求めた傾きを記録したいならこんな感じです。
「求めた傾き」の部分は実際の変数名に変えます。

nRow = nRow + 1
ThisWorkbook.Sheets("データシート").Cells(nRow, 1) = myFile
ThisWorkbook.Sheets("データシート").Cells(nRow, 2) = 求めた傾き

質問の意味を勘違いしていたらごめんなさい。

投稿日時 - 2017-12-20 17:12:13

答えになってないけど。
1)マクロではなく、VBAと私は言ってます。
2)AciveWorkSheet ってことは、開いて見てるんですね?

投稿日時 - 2017-12-19 17:54:51

補足

迅速な回答ありがとうございます。
はい、開いてみています。ただ開いて閉じるだけになってしまっています。
一つ一つのファイルでは上手くいったので、()内に問題はないと考えているのですが、、、

投稿日時 - 2017-12-19 18:06:07

あなたにオススメの質問