1 名前:デフォルトの名無しさん mailto:sage [2019/12/02(月) 23:43:54.18 ID:ngrqyTy20.net] !extend:checked:vvvvv:1000:512 ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part63 https://mevius.5ch.net/test/read.cgi/tech/1568630099/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
232 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 19:58:54.81 ID:k7eftYc7x.net] そんなにハードル高いか? テキストファイルの読み込みの処理をスクラッチするより明らかに楽だし処理速度も速いと思うが 例えば4列のCSVをSJIS(Windows-J31)でデコードしてカンマ区切りで読み込んでSheet1のA1セルから書き出すとしたらこんな感じ Sub ReadCSV() With Worksheets("Sheet1") With .QueryTables.Add(Connection:="TEXT;ソースファイルのパス", Destination:=.Range("A1")) .TextFilePlatform = 932 .TextFileCommaDelimiter = True .RefreshStyle = xlOverwriteCells .TextFileColumnDataTypes = Array(xlTextFormat, xlTextFormat, xlTextFormat, xlTextFormat) .Refresh .Delete End With End With End Sub
233 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 20:07:37.72 ID:k7eftYc7x.net] PowerQueryだったらもっと簡単だろう Csv.Documentにソースのパスとメタ情報を渡してテーブルを取得するだけだしGUIでステップ記録できる
234 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 20:56:20.20 ID:LoHkYQxe0.net] CSV読み込みの話してんのになんで書き込みの回答してんだろうこの子
235 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 21:32:33.80 ID:k7eftYc7x.net] >>234 >>232 のコードについて言ってるなら、読み込んでシートに書き出してるわけで、クエリの使い方としてはオーソドックス処理だぞ 読み込んだ結果をシートに書き出さないならODCにデータモデルとして保存すれば良い
236 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 22:10:30.43 ID:k7eftYc7x.net] >>235 ODCにデータモデルとして→× データモデルとして→○
237 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 22:23:49.87 ID:X7hap7HH0.net] >>230 全然。 基本的にはリボンの機能使った操作が1つずつのステップになっていく。 ステップの1つ1つがマクロみたいなもの。 「詳細クエリー」を見て初めて「コードはこうなってるんだ・・・」 という感じ。 もっとも、M Functionのレファレンスやパラメータあたり説明が 英語でもまだ不親切なので、 使えてない部分が多分にはあるけど。 ただ、VBAのように出来る範囲が広範囲なわけではなく、 取得したデータの成形に特化してる。 スクレイピングについては Pythonみたいに取得対象のWeb画面で IDやパスワード入力するとか、 ボタンを押すみたいなことも出来ない模様。
238 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 22:43:05.12 ID:3zmXV6NNx.net] データの成形に特化と言ってもVBAでスクラッチすると恐ろしく面倒なJoinとかのSQLチックな処理は全て実行できるので、データ処理の面ではVBAより手軽で便利 あとAccessDBやSQL ServerやOBDCはもちろん、ファイルシステムとかExchangeサーバとかSharePointリストとか、およそデータベースとして扱えるデータストアの情報は全て取得できる フォルダ内のファイルの属性情報を取得する処理のためだけにいちいちFileSystemObjectのインスタンスとかを使ってスクラッチする必要がなくなると考えればめちゃくちゃ便利
239 名前:デフォルトの名無しさん [2020/01/04(土) 15:59:54.32 ID:dDunGyfu0.net] >>227 みています ご指摘の通り、\nでspritかけてました! \nってCR+LFじゃなかったんですね… この後都合があるのですぐには試せませんが、 その辺確認してみます。 ありがとうございます!
240 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 16:12:12.74 ID:8fEwlZFG0.net] \nはLFじゃなかったか windowsの改行は\r\nだったような
241 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 17:52:00.86 ID:ALZ03HNg0.net] EditBoxでは\r\nでRichEditBoxでは\nだねWindows
242 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 17:56:48.54 ID:+4weKQQc0.net] CR+LFの定数の vbCrLf か vbNewLine でいいんじゃね
243 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 18:04:55.94 ID:8fEwlZFG0.net] vbNewLineいいよね
244 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 18:23:56.78 ID:ZrFrOERU0.net] >>239 やっぱり。 >>240-241 の人もいうとおり、OSだけじゃなくAPI関数ごとに改行コードの取扱いが違ったりすることもあるし、 テキストエディタに内蔵されてる正規表現なんかでも「\n」でCRLFに対応させてる例もあったりするから、 その辺はトライ&エラーで覚えていくといいとおもうよ。
245 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 18:40:58.78 ID:HwWXKum00.net] 北海道のグラサンスーパーハゲザーはここにはこないのー?