始めまして。
VBA初心者です。
2枚のCSVファイルをダイアログで各々指定し、保存する2枚のシートを1ブックにまとめたいのですが、うまくいきません。
現状は以下のようなマクロですが、別々のシートとなります。
よろしくお願い致します。
Sub 選択されたPDPファイルを開いて読み込む()
With Application.FileDialog(msoFileDialogOpen)
.Title = "ファイルを選択して[OK]ボタンをクリックしてください"
.AllowMultiSelect = False '複数選択不可
.Filters.Clear
.Filters.Add "1枚目", "*.csv", 1
If .Show = -1 Then .Execute 'キャンセルでなければ開く
End With
With Application.FileDialog(msoFileDialogOpen)
.Title = "2つめのファイルを選択して[OK]ボタンをクリックしてください"
.AllowMultiSelect = False '複数選択不可
.Filters.Clear
.Filters.Add "2枚目", "*.csv", 1
If .Show = -1 Then .Execute 'キャンセルでなければ開く
End With
End Sub
No.5ベストアンサー
- 回答日時:
こんにちは。
こちらにはレスはつかないかもしれませんが、コードを出しておきます。
ファイルオープン・ダイアログで、複数のCSVファイルを選択してください。
マルチセレクトにしてあります。
'標準モジュール
Sub CSVImportSheets()
Dim FileNames As Variant
Dim fn As Variant
FileNames = Application.GetOpenFilename _
("CSV(*.csv),*.csv", MultiSelect:=True)
If VarType(FileNames) = vbBoolean Then Exit Sub
For Each fn In FileNames
Worksheets.Add After:=Worksheets(Worksheets.Count)
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & fn, _
Destination:=Range("A1"))
.Name = ActiveSheet.Name
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 932
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileCommaDelimiter = True
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
ActiveSheet.UsedRange.QueryTable.Delete
Next fn
End Sub
早速のご回答有難うございました。
早速試してみましたが私の思うような内容でした。
大変参考になりました。
また、機会ありましたらよろしくお願い致します。
No.4
- 回答日時:
こんにちは。
>選択したcsvファイルを1ブックに複数シート作成したかったのですが、ご質問の書き方が不十分でした。
QueryTable で、シートにインポートすればよいのでは?
No.3
- 回答日時:
こんばんは。
VBAで作らなくてはも、単に、二つのCSV を足すなら、コマンドプロンプトでしてしまえばよいのではありませんか?
copy test01.csv+test02.csv test03.csv
これで、test03.csv という結合ファイルが出来ますけれども。
もし、VBAで行いたいなら、それぞれのファイル名を確保して、Shell で行えばよいだけです。
No.2
- 回答日時:
#01です。
読み込むCSVが2つなら先のコードで問題がありませんが、将来的に数が増えることを想定し最後から6行目を変更します変更前
ActiveSheet.Cells(Selection.Rows.Count + 1, 1).Select
変更後
ActiveSheet.Cells(ActiveCell.CurrentRegion.Rows.Count + 1, 1).Select
なお余談ですがファイルの選択もFor~Nextに入れてしまえば、コードもすっきりすると思いますよ
早速のご回答有難うございました。
非常に参考になりました。
選択したcsvファイルを1ブックに複数シート作成したかったのですが、ご質問の書き方が不十分でした。
研究してみます。
ありがとうございました。
No.1
- 回答日時:
考え方としては2つのCSVファイルを開いて、それぞれのシートをコピーして、マクロが登録されている元のブックに貼り付ける方法が素直だと思います。
ちょっとベタですがこんな具合ですSub Test()
Dim bkName(2) As String
Dim wb As Workbook
Dim idx As Integer
Set wb = ActiveWorkbook
Range("A1").Select
With Application.FileDialog(msoFileDialogOpen)
.Title = "ファイルを選択して[OK]ボタンをクリックしてください"
.AllowMultiSelect = False '複数選択不可
.Filters.Clear
.Filters.Add "1枚目", "*.csv", 1
If .Show = -1 Then .Execute 'キャンセルでなければ開く
End With
bkName(1) = ActiveWorkbook.Name
With Application.FileDialog(msoFileDialogOpen)
.Title = "2つめのファイルを選択して[OK]ボタンをクリックしてください"
.AllowMultiSelect = False '複数選択不可
.Filters.Clear
.Filters.Add "2枚目", "*.csv", 1
If .Show = -1 Then .Execute 'キャンセルでなければ開く
End With
bkName(2) = ActiveWorkbook.Name
For Idx = 1 To 2
Workbooks(bkName(Idx)).Activate
Cells.CurrentRegion.Copy
wb.Activate
ActiveSheet.Paste
ActiveSheet.Cells(Selection.Rows.Count + 1, 1).Select
Next Idx
Application.CutCopyMode = False
Workbooks(bkName(1)).Close False
Workbooks(bkName(2)).Close False
End Sub
またFSO(FileSystemObject)を使って1行ずつデータを読み込み、","をタブに変換してクリップボード経由でセルに貼り付ける方法もあります。こちらはコードは上げませんが、慣れてきたら調べてみたら良いと思います
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのVBAについて とある...
-
Python CSVファイルについて
-
複数のcsvファイルを統合、でも...
-
複数エクセルファイルの合成
-
【Rコマンダー】データインポー...
-
エクセル 指定範囲をCSV出力
-
バッチでテキストファイルから...
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトのエラーに...
-
大量のフォルダからひとつのフ...
-
アクセス 壊れた? 「ファイ...
-
多数のサブディレクトリ内のフ...
-
ファイルの最後に文字列挿入
-
バッチファイルで以下のような...
-
バッチ処理でファイルの中身を...
-
バッチファイル 特定ウインドウ...
-
バッチファイル 文字列にスペ...
-
バッチファイルで昨日の日付を取得
-
.txtではなく.logの方が良いの...
-
拡張子を元に戻す
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのVBAについて とある...
-
Python CSVファイルについて
-
アクセスと同フォルダのCSVファ...
-
FTPコマンド mgetでとまってし...
-
【Rコマンダー】データインポー...
-
エクセル 指定範囲をCSV出力
-
バッチ処理でcsvファイルの文字...
-
エクセルマクロ、複数のCSVファ...
-
複数のcsvファイルを統合、でも...
-
EXCEL マクロが正常に動かなく...
-
MAC フォルダ内のPDF件数とペー...
-
gnuplotで複数csvファイルから...
-
複数エクセルファイルの合成
-
シェルスクリプトで文字コード変換
-
エクセルにまとめたcsvデータを...
-
複数のCSVファイルを読み込んで...
-
Excelの帳票形式をアクセスに取...
-
excelでMac(-)⇒Win(?)文字化け...
-
csvファイルを結合するバッ...
-
csvファイルを統合する方法を教...
おすすめ情報