ここから本文です

~エクセルでマクロを使って自動化してみたい~ 日頃よりお世話になっております...

mom********さん

2019/7/1006:03:50

~エクセルでマクロを使って自動化してみたい~
日頃よりお世話になっておりますm(__)m。

エクセルで、多くのcsvファイルからデータをワークシートに張り付ける作業をしているのですが、マクロで自動化できないかと思い質問いたします。
-☆-
インポート先のファイルはbook1.xlsxのdataワークシートで、こちらのファイルにマクロを保存したいです。
作りたいマクロの内容は、

book1.xlsxと同じ場所にあるcsvフォルダの中にある1.csvを開きa1:e30を選択してコピー。book1.xlsxのdataワークシートのa1に貼りつけし1.csvを閉じる。

book1.xlsxと同じ場所にあるcsvフォルダの中にある2.csvを開きa1:e30を選択してコピー。book1.xlsxのdataワークシートのf1に貼りつけし2.csvを閉じる。

book1.xlsxと同じ場所にあるcsvフォルダの中にある3.csvを開きa1:e30を選択してコピー。book1.xlsxのdataワークシートのk1に貼りつけし3.csvを閉じる。

これを1.csvから10.csvまで、貼りつけ先を右にずらしながら、csv10ファイル分行います。

-☆-
今までちょっと使っていたマクロの実行方法は、記録ボタンを押したあと実際にその操作をやってみて記録終了して、その後マクロを実行する、というかんじでしたが、上記ですと、記録の途中でおそらく操作ミスをしてしまうと思われ、正しくマクロの記録をできる自信がありません。
出来れば、いったん1.csv分のマクロを記録した後に、1ファイル分の構文を、内容を変えながら増殖させていって一括マクロを作り上げられればと思うのですが、こういった内容に関しましてご存知の方いらっしゃいましたらご教授頂けると幸いです。

閲覧数:
42
回答数:
3
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

2019/7/1009:58:00

Sub sample()
Dim xFld As String, xFile As String
Dim sh As Worksheet, i As Long
Const cAdr As String = "A1:E30"
Const cSh As String = "data"
Const cExt As String = "*.csv"

With ThisWorkbook
xFld = .Path & "\CSV\"
Set sh = .Worksheets(cSh)
End With
i = -4

Application.ScreenUpdating = False
xFile = Dir(xFld & cExt)
Do While xFile <> ""
With Workbooks.Open(xFld & xFile)
i = i + 5
With .Worksheets(1)
.Range(cAdr).Copy sh.Cells(1, i)
End With
.Close False
End With
xFile = Dir()
Loop
Application.ScreenUpdating = True
End Sub

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

tok********さん

2019/7/1009:45:01

Sheet1のA列にファイル名(拡張子込み、パス無し)がリストアップされているとして、Sheet2に貼り付ける場合の一例です。アレンジはご自分で。

Sub test()
Dim i As Long, cnt As Long
Dim fld As String
Application.ScreenUpdating = False
cnt = 1
'基本フォルダ
fld = "D:\VBA\"
'A列にあるファイルリストの最終行まで繰り返す
With Sheets("Sheet1")
For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
If i <> 1 Then cnt = cnt + 5
If Dir(fld & .Cells(i, 1)) <> "" Then
Workbooks.Open fld & .Cells(i, 1), ReadOnly:=True
Range("A1:E30").Copy ThisWorkbook.Sheets("Sheet2").Cells(1, cnt)
Workbooks(.Cells(i, 1).Value).Close False
Else
MsgBox .Cells(i, 1) & "が見つかりません。"
End If
Next i
End With
Application.ScreenUpdating = True
MsgBox "END"
End Sub

chi********さん

2019/7/1009:18:40

> こちらのファイルにマクロを保存したいです。
xlsxファイルにマクロは保存できません。

CSVファイルってことは書式も何もない値でしょうから いちいち
ファイルを開いてコピーなんてせずに数式で参照したものを 後で
値に戻せばいいでしょう。

いずれにしてもマクロでやりたいなら VBAの基礎的な勉強をやっ
てからにした方がいいと思います。それなら

> 1ファイル分の構文を、内容を変えながら増殖させていって
こんな無駄なことをしなくてよくなります。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる