A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
以下のコードは、新規のブックにインポートされます。
256 列を越えた分を、次のシートに貼り付けされます。こちらで試験したのは、300列です。論理的には、シートエラーを起こすまでということになるのですが、それは、常識的な範囲でお願いします。
一本しかない横のデータは、無理だと思います。というか、いわゆる時系列データは、Cells(i) で入れていきますね。1シートで、論理的に16,777,216個のデータが扱えることになります。
Alt+ F11 で、Visual Basic 画面を開いて、挿入-標準モジュールで、新しい画面が出たら、以下を貼り付けます。
なるべく、速い貼り付けができるように、以前あったものを改編してみました。しかし、思ったほど、速くなりませんでした。ハングしたかと思われては困るので、インポートは、見えるようにしました。
'---------------------------------------------------------
'<標準モジュールに登録してください>
Option Explicit
Sub OverColumnCSV()
Dim i As Long, j As Long, k As Long, m As Long, n As Long
Dim rw As Long, col As Long, FNo As Integer
Dim Fname As String
Dim TextLine As String
Dim LineBuf As Variant, arbuf() As Variant
Dim ShtCount As Integer
Dim UB As Long
Dim AddFlg As Integer
'
rw = 1 '最初の行数
Fname = Application.GetOpenFilename("CSV ファイル(*.csv),*.csv")
If Fname = "False" Then
Exit Sub
End If
Workbooks.Add '新規ブック作成
With ActiveWorkbook
FNo = FreeFile()
Open Fname For Input As #FNo 'ファイルインポート
Do Until EOF(FNo)
Line Input #FNo, TextLine
'「""」 の除去
TextLine = Application.Substitute(TextLine, """", "")
LineBuf = Split(TextLine, ",")
UB = UBound(LineBuf) '上限の添え字
ShtCount = .Worksheets.Count
'シート数の確認
If j \ 257 > ShtCount Then .Worksheets.Add _
After:=.Worksheets(ShtCount), Count:=(j \ 257) - ShtCount
'ハングと間違えられるので、画面に出す
'Application.ScreenUpdating = False
If UB Mod 255 Then AddFlg = 1
For j = 1 To (UB \ 257) + AddFlg
With .Worksheets(j)
If UB - j * 255 > 0 Then
col = 256
Else
col = UB Mod 256
End If
k = k + col
For m = (j - 1) * 256 To k - 1
ReDim Preserve arbuf(n)
arbuf(n) = LineBuf(m)
n = n + 1
Next m
.Range(.Cells(rw, 1), .Cells(rw, col)).Value = arbuf
ReDim arbuf(0): n = 0
End With
Next j
rw = rw + 1: k = 0: m = 0
Loop
'Application.ScreenUpdating = True
Close #FNo
End With
MsgBox "終了しました", 64
End Sub
'---------------------------------------------------------
No.1
- 回答日時:
EXCELの仕様が横が256セルですからそのままでは難しいですね。
多分ACCESSならば読めるとは思うのですがEXCELしかなくどうしてもということであれば、面倒ですが下記の方法でカットされたデータを読み込むのはどうでしょうか?1.まずCSVファイルの拡張子をTXT等に変更します(コピーを作ってやって下さい)。
2.次に上記で拡張子を変更したファイルを開きますと「テキストファイルウィザード」が開きますので「タブやカンマ~」にチェックが入っていることを確認して次へ。
3.「区切り文字」に「カンマ」を追加して次へ。
4.「列のデータ形式」で257列以降を残して削除にチェックを入れて完了。
これでカットされた257列以降分のデータが読み込めるはずです。ただデータの順番のずれには気をつけてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) csvファイルをExcel形式で読み込むには 2 2023/07/03 13:09
- Access(アクセス) accessでexcelを読み込む時のデータ型 1 2022/03/28 19:45
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Excel(エクセル) csvに別のExcelの文章を差し込む 2 2023/04/01 16:06
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの指数を無効にしたい
-
複数のCSVファイルを横に並べて...
-
VBAでCSVの1行目だけを書き換え...
-
大量のCSVデータを1つのエ...
-
excelインポート時の「実行時エ...
-
複数のcsvファイルを1つのEXCEL...
-
「ほかのアプリケーションを無...
-
EXCELで外部データの取り込みが...
-
複数のエクセルファイルをひと...
-
EXCELLの動きが遅い
-
EXCELにcsv形式の外部データを...
-
複数のデータ系列の線の太さを...
-
cellsで特定の離れた範囲を選択...
-
フォルダ内の全ブックのシート...
-
エクセルでツールバーに「縮小...
-
エクセルVBA Workbook変数に変...
-
VBAを一度起動するとずっと出て...
-
VBA マクロ実行時エラー’1004Ra...
-
エクセル終了時の保存確認メッ...
-
コピーしたファイルのマクロを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの指数を無効にしたい
-
複数のCSVファイルを横に並べて...
-
excelインポート時の「実行時エ...
-
「ほかのアプリケーションを無...
-
大量のCSVデータを1つのエ...
-
VBAでCSVの1行目だけを書き換え...
-
CSVファイルの結合(重複データ...
-
複数のcsvファイルを1つのEXCEL...
-
二つのCSVファイルを照らし合わ...
-
datファイル→csvファイル→datフ...
-
EXCELにcsv形式の外部データを...
-
VBAでユーザーフォーム上に参照...
-
【VBA初心者】同じフォルダ内の...
-
【エクセル VBA】CSVファイルの...
-
EXCELLの動きが遅い
-
複数個のascファイルを1つ...
-
複数の同じ様式のエクセルデー...
-
Excel VBAを使った複数のCSVフ...
-
破損したExcelファイルの内容を...
-
エクセル マクロ で助け下さい...
おすすめ情報