
始めまして。
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのVBAについて とある...
-
アクセスと同フォルダのCSVファ...
-
大量のフォルダからひとつのフ...
-
特定フォルダ内のファイルを自...
-
コマンドプロンプトのエラーに...
-
コマンドプロンプトの「%1」と...
-
バッチでテキストファイルから...
-
ExcelVBAのDirでスペース含むフ...
-
win10の「フォト」で、「次へ」...
-
コマンドプロンプトで作成日時...
-
特定の拡張子以外のファイルを...
-
ファイルやフォルダのコピー、...
-
#include <Windows.h>というヘ...
-
これってパソコンの最適化が完...
-
.txtではなく.logの方が良いの...
-
自分で作成した重要ファイルを...
-
binファイルを解凍したいの...
-
VBAでPowerPointからExcelにデ...
-
Chrome HTML Document (.html)...
-
エクセル フォルダの画像を画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのVBAについて とある...
-
複数エクセルファイルの合成
-
Python CSVファイルについて
-
【Rコマンダー】データインポー...
-
FTPコマンド mgetでとまってし...
-
アクセスと同フォルダのCSVファ...
-
複数のcsvファイルを統合、でも...
-
AccessへのCSVファイルの取...
-
EXCELのKill処理について質問で...
-
MAC フォルダ内のPDF件数とペー...
-
CSVでの取り込み(?)
-
ファイルオープンの速度を速く...
-
エクセルマクロ、複数のCSVファ...
-
csvファイルを取り込み指定の形...
-
【Excel】 csvファイルを参照し...
-
エクセル 指定範囲をCSV出力
-
csvファイルを結合するバッ...
-
エクセルにまとめたcsvデータを...
-
コマンドによるzip圧縮
-
csv形式からbmpを作成
おすすめ情報