1 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 21:42:39.57 ID:K1uuwFLt.net] ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part56 mevius.5ch.net/test/read.cgi/tech/1534976724/
32 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 20:17:01.33 ID:/DsKfDfg.net] Worksheet.CellsとかRange.Offsetとか、引数に二次元配列をとるアクセサを使えない人は結構いる印象だよな
33 名前:デフォルトの名無しさん [2018/09/14(金) 23:44:55.63 ID:za5qG/O1.net] 配列の難しさがわからんのは配列すらわかっとらん証拠やぞプロさん達w
34 名前:デフォルトの名無しさん [2018/09/14(金) 23:53:34.83 ID:KNVYDbzH.net] >>32 どんなデータ構造にもそれなりに難しい点はある、と言われればそうだが、 配列で難しい点を具体的になにか挙げないと意味ないぞ。
35 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 23:54:08.70 ID:yt+m1AZF.net] ワークシートの配列の方が難しいよね
36 名前:デフォルトの名無しさん [2018/09/14(金) 23:56:00.89 ID:za5qG/O1.net] >>33 意味がない、ではなくおまえには意味がわからんのやろ 知ったことかそんなもんw甘ったれんなカスw
37 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 23:59:40.89 ID:KNVYDbzH.net] なるほど配列は易しいデータ構造ってことで
38 名前:デフォルトの名無しさん [2018/09/15(土) 00:26:05.12 ID:XNrqFkTO.net] excel vbaでテトリスとか作れるようになると、excel vbaを使いこなせられるようになったと思っていい?
39 名前:デフォルトの名無しさん [2018/09/15(土) 00:37:49.64 ID:0OTUBrr2.net] >>37 いくない、Excelはゲーム作成用ツールじゃない
40 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 07:26:48.93 ID:OUVvcRON.net] >>37 いいんじゃね テトリスができるようになれば次の課題が見えてくると思う
41 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 14:47:18.53 ID:kCggA2zW.net] テトリス作れるレベルならそこらへんの私VBA得意ですドヤよりスキル的に遥かに上だから、 VBAらしく事務処理の自動化をやるくらい楽勝だよ
42 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 14:58:06.40 ID:FpfMU/ZL.net] テトリス作る時間に他の勉強をするべき。 そこまで求められてないから無駄。
43 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 16:22:43.79 ID:MP3gARzS.net] >>37 字面だけでいえば、「Excel VBAでテトリスが作れるレベル」なら、「Excel VBAはそれなりに使いこなせる」と言える。 ただ、それを訊いて何をしようとしているのか分からない。内容次第ではおすすめしない。
44 名前:デフォルトの名無しさん [2018/09/15(土) 16:34:10.47 ID:oLja5sKR.net] VBAでテトリス作る意味って何?
45 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 16:36:20.47 ID:RH+0S0Ax.net] それなりというか世の中の自称VBAのプロのほとんど全員より上だろう それ以上の人はVBAできますなんて恥ずかしくて言わない
46 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 16:54:50.81 ID:g80wVNRI.net] エクセルVBAでテトリス作るのは芸ではあるけど実用的じゃない どうせならエクセルで機械学習とか実務に使う余地があるものやれば
47 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 16:55:58.42 ID:g80wVNRI.net] プログラマはVBAできます なんてわざわざ言わない 他言語ができればできて当たり前だから
48 名前:デフォルトの名無しさん [2018/09/15(土) 19:14:56.89 ID:XNrqFkTO.net] >>43 vbaを使いこなせられるというか、これが作れるようになれば、この先いろんなツールをつくろうが、 応用がきくという意味で、テトリスという題材を選んでみた。 俺、間違ってることいってる? vba使いこなせられるになる基準として、何かこういうの作ってみろ的なことがあればいってほしい。
49 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 19:25:00.03 ID:vKLFrcGU.net] 散らばった支社にプログラムを配るに
50 名前:オても、 完璧にシステム仕様が決まっていて、テストも十分終えたもの以外は、一つのExcelファイルに プログラム 設定データ 蓄積データ をまとめるのはやめとけって忠告したのに・・・。 プログラムのバグ修正のたびに、支社の端末を直接操作しているVBAマスターを自称する後輩が・・・。 土日ももう呼び出し呼び出し。完全に病んでしまった。 あれほど忠告したのに・・・。 安易な作りでデータ等々を抱えると、プログラムの修正だけしたくても、簡単にはいかないから、 せめて蓄積データだけは別のエクセルファイルなりに保存して開いて使うなりの仕様にしとけと・・・。 [] [ここ壊れてます]
51 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 19:56:51.35 ID:JWnql4hZ.net] >>47 勘違いしてるようだが、テトリスはプログラミングの練習ネタとしてはかなり難しい部類だ テトリスを自分で設計して作れたら、VBAを使いこなせるどころか世の中でVBAのプロを自称する連中の中でいきなり上位に入るレベル それくらいVBAのプロのレベルは低い つまり何が言いたいかっていうと、テトリスはやりすぎ 家計簿くらい作れたら十分面接でドヤっていいよ
52 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 20:11:22.09 ID:qQRjJW7l.net] >>48 どういういみかもう少し噛み砕いてほしい 私よく意味はわかってないけど今まさに同じ道を辿ろうとしてるような気がする
53 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 20:13:33.91 ID:kEjGAf/G.net] 多数ユーザー向けにマクロを配布するならもうアドインにした方がいいよな で、データの方はプログラムとのやりとりに支障が出ないようテーブル名、スキーマ、データフォーマットを固定したソースファイルに別途保存させる方がいい
54 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 20:52:56.93 ID:CRrc/VBu.net] アドインやCOMアドインのベンダーにインターンで行ったが、VBAどころか、C++でガリガリ開発するスーパープログラマが何人もいて、速攻で就職先から外したわ
55 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 21:12:36.41 ID:kEjGAf/G.net] C++でガリガリ開発ってそんなに凄い?
56 名前:デフォルトの名無しさん [2018/09/15(土) 21:16:07.93 ID:KIanXBkQ.net] C++でガリガリ開発しててもなんとも思わない VBやウンコスクリプトでガリガリ開発してるのは サルがオナニーしてるようにみえる もしくは奴隷が単調な動作を繰り返してるようにみえる
57 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 21:19:37.63 ID:CRrc/VBu.net] >>52 取っつきにくさでいうと、すでに子供の頃から馴染んでおかなければならないイメージ 俺みたいに遅蒔きで大学に入ってC++を初めてさわったレベルでは追い付けないな、と思った きっかけは分析ツールみたいなアドインってどう作るのか知りたかったという位、その程度の熱意じゃ無理
58 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 21:20:38.13 ID:CRrc/VBu.net] 間違った >>53
59 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 21:52:32.87 ID:wUMJLM3O.net] VBAのほうが文法、ライブラリ、コミュニティレベルがお粗末だから難しいかな モダンC++は昔とくらべてびっくりするぐらい生産性高いからね
60 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 21:57:22.88 ID:wUMJLM3O.net] >>48 アマチュアの限界が来たんだね 後はプロに引き継ぎなさい
61 名前:デフォルトの名無しさん [2018/09/15(土) 21:59:21.10 ID:XNrqFkTO.net] セル内に "aiueo" とか ≪aiueo≫ が格納されていたとして、 囲い文字だけを抽出するにはどうすればいいですか? "aiueo"の場合は、全部半角なので、配列に代入して、
62 名前:配列の先頭と末尾を参照すればいいのだが、 ≪aiueo≫の場合、全角・半角の区別がつかないので(どちらでもない?)、どうやればいいのか。 [] [ここ壊れてます]
63 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 22:10:32.77 ID:JUwQwotH.net] >>59 まともなプログラマなら正規表現を使う VBA厨止まりでいいならLeftとRightを使う
64 名前:デフォルトの名無しさん [2018/09/15(土) 22:18:05.27 ID:KIanXBkQ.net] A B 1 "aiueo" =(LEFT(A1,1))&(RIGHT(A1, 1)) ⇒ "" 2 ≪aiueo≫ =(LEFT(A2,1))&(RIGHT(A2, 1)) ⇒ ≪≫ オレならVBAなんか使わずにこうする
65 名前:デフォルトの名無しさん [2018/09/15(土) 22:28:08.97 ID:XNrqFkTO.net] >>60 正規表現を使う場合 @事前に囲い文字を把握しておく Aコード内では、囲い文字をキーにgrep Bgrepの結果から、先頭/末尾に囲い文字が含まれていれば確定。 という流れですか?
66 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 22:34:12.08 ID:kEjGAf/G.net] >>59 正規表現使えば何とかなるよ 基本的には、aiueoが見つかった場合に見つかった文字列の開始位置と終端位置からそれぞれ一文字分外側にオフセットさせた文字列を取ればいい "aiueo"のようにaiueoの中に2バイト文字が混在してる場合も抽出しなきゃならないような特殊な場合は文字列の範囲指定がちょっと面倒かもしれないが
67 名前:デフォルトの名無しさん [2018/09/15(土) 22:37:58.41 ID:XNrqFkTO.net] >>61 これ使えるね 全角の<、半角の<に入れ替えても、ちゃんと囲い文字だけを抽出してくれてる。。
68 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 22:41:36.90 ID:kEjGAf/G.net] >>62 囲い文字が特定できるならそれが正解
69 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 22:46:04.69 ID:JpPL0LlT.net] >>62 囲い文字以外を置き換えで消しちゃえばいいんじゃね 検索文字列は"[^\(\)\[\]\"\'「」『』《》]"みたいな感じで 最初の一文字と最後の一文字取るだけならもっとスマートに出来るけど囲い文字が無い場合は括弧以外を抽出しちゃうし
70 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 22:51:05.07 ID:h6vRwHat.net] LENBなどB付き関数を使わない限り、半角全角は考える必要ないだろ?Excelは内部では全部Unicodeで扱ってる
71 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 23:14:10.61 ID:VdLZkjGs.net] テトリスなんか複雑すぎて、VBA の奴に作れるわけないだろw 回転もあるし、壁にめり込んだり、 そもそも1秒に10回でも、描画できるか? そんな性能あるか?
72 名前:デフォルトの名無しさん [2018/09/15(土) 23:15:54.34 ID:8rxpHkWL.net] 一秒に1回しか動かんのになんで10回も描画せなあかんねんw
73 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 23:18:58.10 ID:h6vRwHat.net] 回転は最低3回/秒位必要だろうし、落ち速度が速くならないテトリスじゃかたておちだろ
74 名前:デフォルトの名無しさん [2018/09/15(土) 23:35:07.83 ID:XNrqFkTO.net] >>62 >@事前に囲い文字を把握しておく で、囲い文字があるかないか、事前に分類しておく 分類後、囲い文字があるものに対して、 vbaを使わずにleft、rightを使って抽出。 これで囲い文字の種類を全部押さえていることになる。 後は、コード内で正規表現(grep)使ってうまくやればなんとかなりそう。
75 名前:デフォルトの名無しさん [2018/09/16(日) 00:44:02.64 ID:sPpLNVSR.net] ちょっとよくわからんのだけど "aiueo≫ とか ≪"aiueo" とか ≪"aiueo≫ " はエラーとして除外するの?
76 名前:デフォルトの名無しさん [2018/09/16(日) 01:22:34.32 ID:k7pdoQET.net] >>72 エラーとして除外する。
77 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 02:44:47.45 ID:BKY25fNA.net] >>47 VBAテトリスって余興みたいなものだから 応用力を見る題材というならたとえば 在庫や売上の情報から在庫切れや長期在庫 利益率ランキングを算出するとか 株式情報から各種指標を算出するとか そういうのがビジネス寄りで適切だと思う >>49 テトリス自体はそんな難しくない しいていえばゲームは全部GUIに依存するから その部分が複雑になりがちなだけ
78 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 02:48:34.41 ID:BKY25fNA.net] >>48 >一つのExcelファイルに > プログラム > 設定データ > 蓄積データ >をまとめるのはやめとけって忠告したのに 分かる 要はハードコーディングでしょ
79 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 02:51:31.52 ID:BKY25fNA.net] >>59 正規表現がプログラミングの正攻法 なお「<a><b>c</b></a>」 こういうタグの入れ子構造は 正規表現で処理するのは難しい
80 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 07:54:39.60 ID:GNhjMZyx.net] ゲーム作れるから事務処理作れるっていう発想が実務浅いんだろうな
81 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 09:28:10.74 ID:e7XchwPX.net] VBAを使いこなしたいとは思っているようだけど、「事務処理に使う」とは言ってないのでは。 俺はそのままやってみたらいいと思ってる。Excel VBAでアニメーション作った動画とかもポロポロあるわけだし。 (https://twitter.com/excelprog/status/993022444221808640とか) 目標が分からないし、何をやりたいにせよ好奇心を止めることはできないし。 (deleted an unsolicited ad)
82 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 10:51:52.18 ID:SnNXv25N.net] 実用性で言ったら他の言語を使えばいいじゃんってなるから こうやってVBAを使うことそのものを目的にして遊ぶのは悪くないと思う
83 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 11:32:42.62 ID:gTaOdbFs.net] >>68 テトリスってそんなに複雑か? ゲームの中では簡単に制作できるほうだろ
84 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 12:11:54.55 ID:570fQ2zr.net] >>68 既に存在するけど、テトリス
85 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 12:38:30.87 ID:eHdm07t1.net] JavaのAPI仕様みたいな、VBAのプロパティやメソッドが一覧になってるサイトや書籍てありますか? 他人のソース読むとき、公式のやつが英語のみで辛いんです……
86 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 14:28:02.06 ID:gTaOdbFs.net] >>47 ゲームを題材にするならRPGが最適じゃないかな RPGならデータをこねくり回すしExcelVBAの勉強には良さそうだが キャラや地図のデータをワークシートに保存して VBAでそれにアクセスしながらゲームを進行させる感じで
87 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 18:44:46.22 ID:krLSHvzW.net] VBAマリオだってあるんだし 作ろうと思えば、ある程度までは可能だろう
88 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 20:14:07.75 ID:BKY25fNA.net] そもそもVBAはアクションゲームに向かないんだよ もう技術がある人がそれを承知で芸をやるのは良いけど 実用にしたいならビジネス用の題材を取った方が良い
89 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 20:17:15.86 ID:BKY25fNA.net] >>83 RRGはテトリスよりは題材としてマシだと思う ドラクエみたいな普通のGUIのRPGを エクセル方眼紙で再現するとかだと筋悪いけど そうじゃなくてCUIのRPGで アイテムとかデータ構造の構築と管理を中心に組めば ビジネスにも応用が利くと思う
90 名前:デフォルトの名無しさん [2018/09/16(日) 21:26:15.56 ID:k7pdoQET.net] csvファイルがあって、これをexcelに読みおませると 表が崩れてしまう。 csvの中身 -- 1,my name is taro 2,hello,world -- excelに読み込ませると以下のように表が崩れてしまう。 A B C 1 1 my name is taro 2 2 hello world 期待値は、hello,worldをコンマ(,)で区切らず、B1セル内に格納したい。 まずvbaを使わずになんとかできない?
91 名前:デフォルトの名無しさん [2018/09/16(日) 21:29:05.54 ID:k7pdoQET.net] >>83 確かにRPGのほうがワークシートの保存とかデータ構造の
92 名前:管理とか色々関わってくるのでテトリスよりは題材としてマシなレベルですね [] [ここ壊れてます]
93 名前:デフォルトの名無しさん [2018/09/16(日) 21:31:24.63 ID:k7pdoQET.net] 87ですが、vbaで加工しないといけない場合、どういった整形処理が考えられますか?
94 名前:デフォルトの名無しさん [2018/09/16(日) 21:31:41.83 ID:sPpLNVSR.net] >>87 CSVの意味わかってる?
95 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 21:33:00.45 ID:e7XchwPX.net] >>87 CSVデータの仕様が悪い気がする。 カンマを含むデータならダブルクォーテーション""で括られているべき。
96 名前:デフォルトの名無しさん [2018/09/16(日) 21:36:22.33 ID:k7pdoQET.net] >>90 CSV(コンマで区切って表示するもの)なので、 hello,world→helloとworldに分割されるのは当然と言えば当然ですが、、。
97 名前:デフォルトの名無しさん [2018/09/16(日) 21:40:43.38 ID:SOVIz+sV.net] 逆だ CSVはこうしたほうがいいというメモを 無視してるのはキミラ低学歴知恵遅れなワケ カンマか改行かダブルクォーテーションが項目に含まれる場合 ダブルクォーテーションでくくるべきだ さらにダブルクォーテーションが含まれる場合、 2個のダブルクォーテーションでエスケープするべきだ https://tools.ietf.org/html/rfc4180 6. Fields containing line breaks (CRLF), double quotes, and commas should be enclosed in double-quotes. For example: "aaa","b CRLF bb","ccc" CRLF zzz,yyy,xxx わかった?
98 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 21:45:22.98 ID:e7XchwPX.net] >>92 1,my name is taro 2,hello,world ↓ 1,"my name is taro" 2,"hello,world" ※my name is taroは括られている必要はないが、統一した方が良い
99 名前:デフォルトの名無しさん [2018/09/16(日) 21:45:42.24 ID:sPpLNVSR.net] >>87 そもそも何がしたいのか? 1列目:ナンバー 2列目:内容 という固定フォーマットで区切りがカンマだってならそのように分解すればいい。 InStrで最初のコンマを探せばいいだろうよ。
100 名前:デフォルトの名無しさん [2018/09/16(日) 21:45:49.49 ID:k7pdoQET.net] >>93 つまり、CSVデータの仕様が悪いので、これ作った人になんとかしろというしかないか。
101 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 21:48:00.44 ID:e7XchwPX.net] >>96 カラム数が一定かつ「hello,world」なカラムが一つしかないなら、泥臭いやり方で直すことはできなくもない。
102 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 21:52:12.15 ID:T59P/aqG.net] >>96 はっきり言ってCSVデータとして「壊れてる」 というかどのカンマが残ってどのカンマが区切りなのか 理論的に説明できないならVBAだろうと無理
103 名前:デフォルトの名無しさん [2018/09/16(日) 21:53:10.26 ID:SHD7Rtu/.net] VBAでダメならPowerShellの出番だな
104 名前:デフォルトの名無しさん [2018/09/16(日) 21:54:27.21 ID:SOVIz+sV.net] 仕様はまったく悪くない 適切に読み込める 普通に矛盾なく読み込めるようになってる ちゃんと読み込めないのは頭悪いから 自分が頭悪いのを棚にあげるのはよくない A B C D E AHO " hoge,huga boo CRLF foo CRLF woo BAKA baka ↓ AHO,"""","hoge,huga","boo CRLF foo CRLF woo",BAKA crlf baka この形式で出力されてないデータはそもそもcsvじゃない
105 名前:デフォルトの名無しさん [2018/09/16(日) 21:55:20.90 ID:k7pdoQET.net] >>95 最終的には表を 1列目:ナンバー 2列目:内容 にそろえたい。 2列目の内容には、英文が入る。英文には文章の区切り点としてコンマ(,)がよく使われる。
106 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 22:08:17.61 ID:e7XchwPX.net] >>101 ・1行の列数はn列 ・カンマが含まれる列は最も右の列だけ の場合なら、左からn-1個目のカンマから右の文字列は全て問題のフィールドと解釈して処理すれば良い。
107 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 22:16:05.95 ID:e7XchwPX.net] ああ、通常に考えるとまともに使えるCSVファイルではないので、 たぶん、CSVファイルを作成した後のことは何も考えないで作ったか、 あるいは特定のプログラム内でしか使わないことを想定したデータ(つまりCSVじゃない)かのどちらかだろうと思う。 もし前者なら、その仕様でCSVファイルを作成した(ツールを作成した)人には言っといた方がいい。
108 名前:デフォルトの名無しさん [2018/09/16(日) 22:24:51.91 ID:SHD7Rtu/.net] >>101 読み込む前に整形すれば良い PowerShellならワンライナー cat test.csv | % { $i = $_.IndexOf(",") ($_.Substring(0, $i), "`"$($_.Substring($i + 1, $_.Length - $i - 1))`"") -join "," } | Out-File "dest.csv"
109 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 22:33:25.75 ID:IXQKD+r/.net] カンマが嫌ならタブ区切りにする どちらにしろ元データは要修正だよ
110 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 22:42:58.47 ID:gTaOdbFs.net] >>86 そうそうCUIベースのRPG ワークシートごとにキャラデータやアイテムデータ、地図データなどを設定して CUIで画面構成して進行する感じ クエリワークシートなども用意して簡易データベース的に データを利用してゲーム進行してやれば結構いい勉強になると思う
111 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 22:44:29.60 ID:bux1ZB5P.net] tsv形式のcsvファイルに作り直した方が良いと思うわ
112 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 22:45:20.56 ID:mzkrOy05.net] >>104 powershellならget-content使え 置き換えも-replace一発で正規表現で出来るだろ
113 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 22:48:48.42 ID:+ao0anr7.net] >>104 そんなややこしい事しなくても cat test.csv | %{ $i = $_ -split ',',2; "$($i[0]),""$($i[1])""" } > dest.txt でいいでしょ
114 名前:デフォルトの名無しさん [2018/09/16(日) 22:48:54.01 ID:SHD7Rtu/.net] >>108 catはget-contentのエイリアス 正規表現使わなくてもできる 自分はこう書くっていうのがあるなら 僕にレスせずにそれを出すべきかと
115 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 23:09:32.96 ID:16Y59QgZ.net] powershellが便利でVBAの出るまくなしってのはよくわかったけど ここはVBAスレだからせっかくなのでVBAで解答を書いてみてよ だいたい5行ぐらいでできるかな?
116 名前:デフォルトの名無しさん [2018/09/16(日) 23:10:09.34 ID:k7pdoQET.net] Inputがtxtなので、中身をみてコンマ(,)で区切られているので、CSVと勘違いしてしまったかもしれない 作った人に、CSVか確認してみます。
117 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 23:27:45.95 ID:EK9e0hMh.net] CSV はカンマ区切りだから、列にカンマが入る可能性を考えて、各列を、" で囲む。 列内で、カンマを使いたい場合は、\ でカンマをエスケープする。\" 列内の文字列、a\"b 列、"a\"b" それか、TSV。タブ区切りを使う。 ただし、これも列内にタブを使わないようにすべき 基本、システムを知らない人には、設計(SE)はできない! こんなの誰でも知っている常識だからw
118 名前:デフォルトの名無しさん [2018/09/17(月) 00:05:45.07 ID:dj7qSZnZ.net] また低学歴知恵遅れがテキトーなこと書きこんでるわ。。。
119 名前:デフォルトの名無しさん [2018/09/17(月) 00:11:35.39 ID:dj7qSZnZ.net] 一般化すればこうなる 列のデリミタや行のデリミタ、もしくは引用符を含む場合 引用符で括る 引用符が含まれる場合、引用符は引用符の前に引用符を1つ記述する csvの場合、 列のデリミタはカンマ 行のデリミタはCRLF 引用符はダブルクォート になる タブ区切りの場合、列のデリミタはHTになる わかった?
120 名前:デフォルトの名無しさん [2018/09/17(月) 00:22:08.36 ID:27GPeyCI.net] >>111 Dim fs, src, dest, line, i Set fs = CreateObject("Scripting.FileSystemObject") Set src = fs.OpenTextFile("test.csv", 1) Set dest = fs.OpenTextFile("dest.csv", 2, True) Do Until src.AtEndOfLine line = src.ReadLine() i = InStr(line, ",") Call dest.WriteLine(Join(Array( _ Mid(line, 1, i - 1), _ """" & Mid(line, i + 1, Len(line) - i) & """"), ",")) Loop Call dest.Close() Call src.Close()
121 名前:デフォルトの名無しさん [2018/09/17(月) 00:26:30.19 ID:27GPeyCI.net] >>115 RFCはそうだけど "を\でエスケープするやり方もあるよね
122 名前:デフォルトの名無しさん [2018/09/17(月) 00:36:24.95 ID:dj7qSZnZ.net] そんな低学歴知恵遅れマイルールは 低学歴知恵遅れのマイルールが通用するシステムでないと通用しない 低学歴知恵遅れのやりかたの別のファイル形式になる 低学歴知恵遅れのやりかたとcsvの形式は一切関係ないからな なんで低学歴知恵遅れは 低学歴知恵遅れのマイルールを押しとうそうとすうんの? 低学歴知恵遅れの世界でしか通用しないのに
123 名前:デフォルトの名無しさん [2018/09/17(月) 00:38:15.86 ID:dj7qSZnZ.net] この内容のExcelをcsvに出力する A B C aho boo"foo baka aho boo"foo baka 普通に aho.csv aho,"boo""foo",baka aho,"boo""foo",baka と出力される
124 名前:デフォルトの名無しさん [2018/09/17(月) 00:42:08.45 ID:dj7qSZnZ.net] こんな内容のaho1.csvをExcelにインポートする aho,"boo\"foo",baka aho,boo\"foo,baka 結果はこうなる A B C aho boo\foo" baka aho boo\"foo=@baka こんな内容のaho2.csvをExcelにインポートする aho2.csv aho,"boo""foo",baka aho,"boo""foo",baka 結果はこうなる A B C aho boo"foo baka aho boo"foo baka 当然 はっきりいってな 低学歴知恵遅れのマイルールなんかどうでもいいわけ 低学歴知恵遅れが出力するファイルはそもそもcsvじゃない
125 名前:デフォルトの名無しさん [2018/09/17(月) 00:44:37.73 ID:27GPeyCI.net] >>120 エクセルの動作の話をしておられるわけですね それについては異論はないっす 一般的なCSVの仕様として"を\でエスケープすることも あるよねってことです RFCは後付ですし
126 名前:デフォルトの名無しさん [2018/09/17(月) 00:48:00.11 ID:dj7qSZnZ.net] https://tools.ietf.org/html/rfc4180 7. If double-quotes are used to enclose fields, then a double-quote appearing inside a field must be escaped by preceding it with another double quote. For example: "aaa","b""bb","ccc" RFCにもちゃんと書いてあるからな excelでは読み込めない コレはもう業界ではペケなワケ もうデファクトスタンダードなワケ それが分からないから 低学歴知恵遅れなワケ
127 名前:デフォルトの名無しさん [2018/09/17(月) 00:55:43.10 ID:27GPeyCI.net] >>122 RFCができる前からCSVは存在してるよ RFCとは違う仕様も存在するんよ デファクトスタンダードはそれはそうだと思いますよ 規格として標準なわけではなく事実上の標準だから "を\でエスケープするものがあってもおかしくないっすね
128 名前:デフォルトの名無しさん [2018/09/17(月) 00:56:49.34 ID:27GPeyCI.net] ""でエスケープしたらエクセルでインポートできるよってことを言いたいんですよね、わかりますよ
129 名前:デフォルトの名無しさん mailto:sage [2018/09/17(月) 00:59:23.34 ID:TeavGsnR.net] フォーマット微妙に変なのをExcelにインポートしたいってとこから話始まってるし いくら世界がそうあるべきだと言ったって 現におかしなフォーマットのcsvが目の前にあったらどうにかしないといけない 半角君はどうするんだろう
130 名前:デフォルトの名無しさん [2018/09/17(月) 01:04:33.71 ID:dj7qSZnZ.net] >>87 のケースである場合、 どうしてもエクセルにインポートしてほしいという依頼がきたら サクラエディタつかって正規表現使って最初のカンマの部分をタブに置換してコピペする ファイルがクソでかいばあい、sedで正規表現使って最初のカンマの部分をタブに置換する
131 名前:デフォルトの名無しさん [2018/09/17(月) 01:08:02.43 ID:27GPeyCI.net] サクラエディタもsedも使えない状況なら半角さんどうするんですか?
132 名前:デフォルトの名無しさん [2018/09/17(月) 01:09:43.54 ID:dj7qSZnZ.net] wshでjavascript使って編集する