点群データファイルより、任意の範囲の点データを取得し、
平均標高を求めるマクロを「Excel VBA」で作りました。
ただ、今回点群データファイル(CSVファイル)の改行コードが
「X,Y,Z(CR+LF)」から「X,Y,Z(LF)」に仕様変更になったため、
Line Inputステートメントで読み込めなくなりました。
Getステートメントで1バイトずつ読み込むように改変しましたが
今度は、点群データファイルの2GB制限により
「アドレスが不正です」のエラーメッセージが出てしまい、処理が中断してしまいます。
(なお、今回の解析要な点群データのファイルサイズは17GB超です。)
' バッファの初期化
strBuf = ""
Open "点群.csv" For Binary Access Read As #1
Do Until EOF(1)
Get #1, , bytCode ' ここで中断
If bytCode <> 10 Then
' LF以外の場合
strBuf = strBuf & Chr(bytCode)
Else
' LFの場合
varBuf = Split(strBuf, ",")
'
.... (解析処理)
' バッファの初期化
strBuf = ""
End If
Loop
Close #1
'
.... (解析結果を出力)
まとめると、以下の条件のファイルを高速に読み込みたいです。
1. 2GBを超えるCSVファイル
2. 改行コードがLFのみ
サンプルプログラムを教えていただければありがたいです。
よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
改行コード変換ツールを使って、一旦、LFをCRLFに変換し、
そのファイルを今まで通りの方法で処理するのは、だめなのでしょうか。
改行コードコード変換ツールの1例です。
https://www.vector.co.jp/soft/winnt/util/se40651 …
No.1
- 回答日時:
(´・ω・`) だったら1.8GBずつに分割して処理すれば良いと思うんだ。
同じ処理を10回繰り返すことになるけど、その方が回答を待つよりも早く処理が終わると思うよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA CSV取り込みについて 3 2021/12/30 22:40
- Access(アクセス) accessでexcelデータを一部変換してインポートするVBAコードを教えてください。 2 2021/12/14 08:31
- Visual Basic(VBA) Excel VBAでフォルダ内の全テキストファイルの任意データを取得について 7 2021/12/18 16:00
- Visual Basic(VBA) csvファイルを列数ごとに分割するExcelマクロが書けずに困っています 8 2023/10/09 12:12
- Visual Basic(VBA) VBA 毎日取得するデータを反映させる方法 の応用 2 2023/09/05 16:32
- Visual Basic(VBA) 【VBA】エクセルで値のみクリップボードにコピーするコードについて(貼り付け時の空白削除) 3 2023/09/06 23:37
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) Excelでセル内の一部のみ同じセルを検索し、そのセルと同じ行で任意の列のセルを選択する方法 2 2021/12/17 11:01
- Visual Basic(VBA) 転記先VBA 一致しているセルがコピーされない 5 2021/11/15 17:23
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
【VBA】エクセルで最後の不要な改行コードを削除するコードについて
Visual Basic(VBA)
-
csvファイルを列数ごとに分割するExcelマクロが書けずに困っています
Visual Basic(VBA)
-
マクロVBAについてご教授いただけましたらと存じます。
Visual Basic(VBA)
-
-
4
excelのVBAについて、以下のコードに追加をお願いいたします。
Visual Basic(VBA)
-
5
自動VBAマクロって会社の中で禁止なんですか?
Visual Basic(VBA)
-
6
Excel VBAでの数値の計算についておしえてください
Visual Basic(VBA)
-
7
ExcelのVBAのことで質問です。 以下のコードを入れ、ボタンを押せば作動させると写真のように画面
Visual Basic(VBA)
-
8
Cellsのコードが打てません
Visual Basic(VBA)
-
9
VBAコードが作動しません。修正したいのですが何処に原因かあるか教えて下さい。
Visual Basic(VBA)
-
10
Microsoft VBAで2GBを超えるファイルサイズのバイナリデータを読み込みたい。
Visual Basic(VBA)
-
11
[Excel] 以下のような、行がズレている2つの表を関数を使って同値チェックを行いたいです。 欲し
Excel(エクセル)
-
12
【VBA】エクセルで値のみクリップボードにコピーするコードについて(貼り付け時の空白削除)
Visual Basic(VBA)
-
13
「ChatGPT-3.5」の回答ですが
Excel(エクセル)
-
14
Excel:文字との間に数字の組合せ、次のセルの数字を1ずつ増やすには?
Excel(エクセル)
-
15
2013Excel保存済みファイルグレーアウト Excelを開こうとするとメニュー以外全てグレーにな
Excel(エクセル)
-
16
select case について
Visual Basic(VBA)
-
17
Excelマクロで空白セルの大小比較処理について
Visual Basic(VBA)
-
18
一つのフォルダーに50個のエクセルファイルがあります。 各ファイルにはAとBのシートがあります。 5
Visual Basic(VBA)
-
19
エクセル VBAでの転記の方法について
Visual Basic(VBA)
-
20
VBA とびとびの列を結合させる
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C言語 数独】 C言語で9×9の数...
-
符号付きにすべきか、符号なし...
-
C言語 時刻差分の算出方法
-
再帰呼び出しを使いますか?
-
C言語 再帰処理のメリットとデ...
-
SQLの速度をあげるには・・・
-
Excel VBAにて、2GB超の点群デ...
-
Cのプログラムに無性にイライラ...
-
DoEvents関数って何?
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
-
家電製品の電力周波数を変える機械
-
大容量のメモリ確保をスワップ...
-
Mac 乗数の入力方法
-
Excel-VBAのmsgBox()の不思議
-
VBA
-
変換のプログラムを教えてくだ...
-
tex 郵便記号のだしかた
-
英数文字列のうちの数値を4桁に...
-
ソケット通信の送受信遅延-02 ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelでのセル内容の高速消去方法
-
DoEvents関数って何?
-
win10で、正確な待ち時間の作り方
-
小数点を含む数値かどうか判断...
-
SQLの速度をあげるには・・・
-
絶対パスの取得について
-
Excel VBAにて、2GB超の点群デ...
-
VBでの簡易電卓の作成(減算方...
-
C言語:関数を使うメリットとデ...
-
テキストファイルの空行をスキ...
-
プログラム上のCPU稼働率低減に...
-
Excel(VBA)でSetTimer関数を使...
-
ナップザック問題?をエクセル...
-
If Not c Is Nothing Then ~延...
-
プログラム 擬似コードとはどん...
-
基本情報技術者試験詳しい方へ...
-
ノットイコールを教えて下さい
-
符号付きにすべきか、符号なし...
-
C言語 時刻差分の算出方法
-
実行時のCPU使用率を増やしたい
おすすめ情報
tatsumaru77さん、銀鱗さん
早速の回答ありがとうございます。
作ったマクロですが、社内で共有してます。
今までは、それこそマクロボタンをワンクリックで
結果が得られるようにしてました。
そういう訳で、他の社員に対して手順が増えたことを
説明することがかなりハードルが高いです。
(結局、私が全部介入することとなり、それも困難です。)
今、CreateFileとReadFileを使ってできないか思考錯誤してますが
現状まだ上手くいってません。。。。
情報が不足していて申し訳ありません。
自己解決しました。皆さん、どうもありがうございます。
17GB超の点群データ(CSVファイル,改行コードLFのみ)でしたが
TextStreamクラスのReadLineメソッドで行単位取得ができました。
処理も1時間35分あまりで、比較的に高速処理できていると思います。
'
set objFso = CreateObject("Scripting.FileSystemObject")
set objTs = objFso.OpenTextFile(Filename:="点群.csv", IOMode:=1)
'
Do Until objTs.AtEndOfStream
varBuf = Split(objTs.ReadLine , ",")
'
.... (解析)
Loop
'
objTs = Nothing
objFso = Nothing
'
.... (結果出力)