ここから本文です

以下のようなVBAのコードを書いてほしいです。 画像のような表があるExcelのフ...

qhy********さん

2020/2/1215:04:23

以下のようなVBAのコードを書いてほしいです。

画像のような表があるExcelのファイルがあります。

このファイルが存在する同じフォルダ内に、東京.csv、京都.csv、という名前のcsvファイルがあります。

東京.csvは

2
3
4
1

2

と書き込まれていて、京都.csvは

3

4


0

と書き込まれています。
これらのcsvファイルの値を基に表の数値を更新する(書き換える)マクロを作成してほしいです。
この場合、B6=2、B7=3、B8=4、B9=1、B10=空白、B11=2、C6=3、C7=空白、C8=4、C9=空白、C10=空白、C11=0、となってほしいです。

5行目のそれぞれの「地名.csv」を同じフォルダ内から検索して、存在したときにファイルを開いて、表のデータを更新してほしいです。(存在しない場合は何もせずに終了。)


宜しくお願い致しますm(_ _)m

CSVファイル,フォルダ内,B11,C11,C10,Dim f As Object,Columns.Count

閲覧数:
35
回答数:
1
お礼:
25枚

違反報告

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

プロフィール画像

カテゴリマスター

hot********さん

2020/2/1217:26:34

こんなでしょうか。

Sub sample()
Dim fso As Object
Dim c As Integer
Dim file As String
Dim f As Object
Dim d As Variant
'
Set fso = CreateObject("Scripting.FileSystemObject") 'fso
For c = 2 To Cells(5, Columns.Count).End(xlToLeft).Column
file = ThisWorkbook.Path & "\" & Cells(5, c).Value & ".csv"
If Dir(file) <> "" Then
Set f = fso.OpenTextFile(file)
d = Split(f.ReadAll, vbCrLf)
f.Close
Cells(6, c).Resize(UBound(d) + 1).Value = Application.Transpose(d)
End If
Next
End Sub

  • 質問者

    qhy********さん

    2020/2/1711:30:15

    ありがとうございます。問題のないコードだと思います。非常に助かりました。

    無知ですみません、質問があります。

    CreateObject関数について調べていたところ、以下の記述を見かけました。

    「取得したオブジェクトを使い終わったら、必ず Nothing を設定します。これを忘れるとオブジェクトが解放されなくなりメモリに残り続けることになります。」

    Set fso = Nothing

    というコードはどこかに書かなくても良いのでしょうか?

  • その他の返信(3件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2020/2/17 13:24:59

ありがとうございます。

この質問につけられたタグ

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

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

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

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

閉じる

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

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

閉じる