点群データファイルより、任意の範囲の点データを取得し、
平均標高を求めるマクロを「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.1
- 回答日時:
(´・ω・`) だったら1.8GBずつに分割して処理すれば良いと思うんだ。
同じ処理を10回繰り返すことになるけど、その方が回答を待つよりも早く処理が終わると思うよ。
No.2
- 回答日時:
改行コード変換ツールを使って、一旦、LFをCRLFに変換し、
そのファイルを今まで通りの方法で処理するのは、だめなのでしょうか。
改行コードコード変換ツールの1例です。
https://www.vector.co.jp/soft/winnt/util/se40651 …
お探しの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も見ています
-
風水の観点で選ぶ観葉植物とは?置き場所や上げたい運気ごとの注意点を紹介!
観葉植物で運気をアップするコツを、風水デザイン1級建築士の福島昌彦さんに伺った。
-
マクロVBAについてご教授いただけましたらと存じます。
Visual Basic(VBA)
-
csvファイルを列数ごとに分割するExcelマクロが書けずに困っています
Visual Basic(VBA)
-
excelのVBAについて、以下のコードに追加をお願いいたします。
Visual Basic(VBA)
-
-
4
自動VBAマクロって会社の中で禁止なんですか?
Visual Basic(VBA)
-
5
Microsoft VBAで2GBを超えるファイルサイズのバイナリデータを読み込みたい。
Visual Basic(VBA)
-
6
Excel VBAでの数値の計算についておしえてください
Visual Basic(VBA)
-
7
ExcelのVBAのことで質問です。 以下のコードを入れ、ボタンを押せば作動させると写真のように画面
Visual Basic(VBA)
-
8
VBAコードが作動しません。修正したいのですが何処に原因かあるか教えて下さい。
Visual Basic(VBA)
-
9
Cellsのコードが打てません
Visual Basic(VBA)
-
10
2013Excel保存済みファイルグレーアウト Excelを開こうとするとメニュー以外全てグレーにな
Excel(エクセル)
-
11
Excelマクロで空白セルの大小比較処理について
Visual Basic(VBA)
-
12
一つのフォルダーに50個のエクセルファイルがあります。 各ファイルにはAとBのシートがあります。 5
Visual Basic(VBA)
-
13
select case について
Visual Basic(VBA)
-
14
環境依存文字?をEnumで定義したい
Visual Basic(VBA)
-
15
VBA とびとびの列を結合させる
Visual Basic(VBA)
-
16
エクセル VBAでの転記の方法について
Visual Basic(VBA)
-
17
エクセル 条件付き書式設定
Excel(エクセル)
-
18
データから単位文字を除去して計算する方法は?
Excel(エクセル)
-
19
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
20
Excel マクロについて
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
小数点を含む数値かどうか判断...
-
Excelでのセル内容の高速消去方法
-
SQLの速度をあげるには・・・
-
win10で、正確な待ち時間の作り方
-
Excel VBAにて、2GB超の点群デ...
-
ヤフーファイナンスからデータ...
-
プログラミングの授業でPython...
-
再帰呼び出しを使いますか?
-
プログラム上のCPU稼働率低減に...
-
偶数次魔方陣のプログラム
-
絶対パスの取得について
-
ゲームプログラミングの乱数で...
-
ノットイコールを教えて下さい
-
PCの並列化
-
WebBrowserの読み込み待ちの処...
-
LINUX QT上でパソコンのシャッ...
-
DoEvents関数って何?
-
ナップザック問題?をエクセル...
-
関数呼び出しの処理
-
C言語 時刻差分の算出方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelでのセル内容の高速消去方法
-
DoEvents関数って何?
-
SQLの速度をあげるには・・・
-
小数点を含む数値かどうか判断...
-
win10で、正確な待ち時間の作り方
-
Excel(VBA)でSetTimer関数を使...
-
絶対パスの取得について
-
WebBrowserの読み込み待ちの処...
-
Excel VBAにて、2GB超の点群デ...
-
VBでの簡易電卓の作成(減算方...
-
テキストファイルの空行をスキ...
-
ノットイコールを教えて下さい
-
ナップザック問題?をエクセル...
-
If Not c Is Nothing Then ~延...
-
プログラム上のCPU稼働率低減に...
-
逆ポーランド記法における単項...
-
符号付きにすべきか、符号なし...
-
C言語 時刻差分の算出方法
-
C言語:関数を使うメリットとデ...
-
Excel VBA データ削除の高速化
おすすめ情報
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
'
.... (結果出力)