Excel VBA 質問スレ Part57

■ このスレッドは過去ログ倉庫に格納されています
2018/09/10(月) 21:42:39.57ID:K1uuwFLt
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK


※前スレ
Excel VBA 質問スレ Part56
http://mevius.5ch.net/test/read.cgi/tech/1534976724/
121デフォルトの名無しさん
垢版 |
2018/09/17(月) 00:44:37.73ID:27GPeyCI
>>120
エクセルの動作の話をしておられるわけですね
それについては異論はないっす

一般的なCSVの仕様として"を\でエスケープすることも
あるよねってことです

RFCは後付ですし
122デフォルトの名無しさん
垢版 |
2018/09/17(月) 00:48:00.11ID:dj7qSZnZ
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では読み込めない
コレはもう業界ではペケなワケ
もうデファクトスタンダードなワケ

それが分からないから
低学歴知恵遅れなワケ
123デフォルトの名無しさん
垢版 |
2018/09/17(月) 00:55:43.10ID:27GPeyCI
>>122
RFCができる前からCSVは存在してるよ
RFCとは違う仕様も存在するんよ

デファクトスタンダードはそれはそうだと思いますよ
規格として標準なわけではなく事実上の標準だから
"を\でエスケープするものがあってもおかしくないっすね
124デフォルトの名無しさん
垢版 |
2018/09/17(月) 00:56:49.34ID:27GPeyCI
""でエスケープしたらエクセルでインポートできるよってことを言いたいんですよね、わかりますよ
2018/09/17(月) 00:59:23.34ID:TeavGsnR
フォーマット微妙に変なのをExcelにインポートしたいってとこから話始まってるし

いくら世界がそうあるべきだと言ったって
現におかしなフォーマットのcsvが目の前にあったらどうにかしないといけない

半角君はどうするんだろう
126デフォルトの名無しさん
垢版 |
2018/09/17(月) 01:04:33.71ID:dj7qSZnZ
>>87のケースである場合、
どうしてもエクセルにインポートしてほしいという依頼がきたら
サクラエディタつかって正規表現使って最初のカンマの部分をタブに置換してコピペする

ファイルがクソでかいばあい、sedで正規表現使って最初のカンマの部分をタブに置換する
127デフォルトの名無しさん
垢版 |
2018/09/17(月) 01:08:02.43ID:27GPeyCI
サクラエディタもsedも使えない状況なら半角さんどうするんですか?
128デフォルトの名無しさん
垢版 |
2018/09/17(月) 01:09:43.54ID:dj7qSZnZ
wshでjavascript使って編集する
129デフォルトの名無しさん
垢版 |
2018/09/17(月) 01:10:23.76ID:dj7qSZnZ
sedが使えない = unixクローンは使えない
ということになるからな
130デフォルトの名無しさん
垢版 |
2018/09/17(月) 01:11:33.13ID:27GPeyCI
JScriptですか渋いっすね
131デフォルトの名無しさん
垢版 |
2018/09/17(月) 01:31:17.15ID:dj7qSZnZ
wshならどんな古いくさった端末でも入ってるからな
個人情報の問題で、データを格納できる計算機が制限される、アタリマエだが
2018/09/17(月) 02:09:43.67ID:+OwpPL9I
>>120
実際に出てきたcsvでやるしか無いんだから出来ない言い訳並べてもしょうがないでしょ
133デフォルトの名無しさん
垢版 |
2018/09/17(月) 02:40:44.60ID:DOsrYmK4
ある都合でVBAでプログラミングを学びたいんですが、おすすめの参考書やサイトありますか?
134デフォルトの名無しさん
垢版 |
2018/09/17(月) 03:00:28.28ID:dj7qSZnZ
できない言い訳なんか書いてないからな
それはcsvじゃないといってるワケ

低学歴知恵遅れの世界で呼称されてるcsvは
低学歴知恵遅れの世界のcsv()といってるワケ

わかった?
135デフォルトの名無しさん
垢版 |
2018/09/17(月) 03:01:56.29ID:dj7qSZnZ
ホントな低学歴知恵遅れは
低学歴知恵遅れのマイルールを押し付けようとするから困るワケ
2018/09/17(月) 03:29:18.86ID:KiXF7SKJ
>>133
>VBAでプログラミングを学びたい
VBA「の」じゃなくてVBA「で」?
学びたいのはプログラミング自体?

それならVBAはGUIがついてて便利なので入門用言語には良いが
最終的にはVBA以外のプログラミング言語も習得した方が良い

というのはあくまでVBAのベースはBASICなので
VBAプロパーだとプログラミングの筋が悪くなる


>おすすめの参考書やサイト
まずは大きな書店に行って
PC関係の売り場で中身をパラパラめくって
分かりやすそうな入門書を一冊買って読もう

もちろん「VBA」で検索して出てきたサイトを見れば
金は掛からないが説明が微妙なところもあり不安が残る
2018/09/17(月) 03:42:24.53ID:O0m9WfJA
CSV, TSV の仕様

delimiter : フィールド区切り。カンマ・タブが多い
quotechar : フィールドを囲む文字。" が多い

escapechar : フィールド内に、quotechar を含む場合に、その前に付けるエスケープ文字。
\ か、" が多い。

a\"b → "a\"b"
a""b → "a""b"
2018/09/17(月) 07:53:46.06ID:u5HISWee
そんな50レスも引き延ばすようなネタか?(呆
2018/09/17(月) 08:33:44.47ID:KWfY0Z4o
VBAスレならこれぐらいの話題がちょいどいいレベルでしょう
2018/09/17(月) 08:38:11.40ID:SBpxj18K
久々に食い付けるネタだったんだろ w
2018/09/17(月) 08:59:01.79ID:x2+cUCF9
あるファイルを修正する前に、そのファイルを_bak.csvみたいに同じディレクトリにバックアップしたいんだけど、vbaからだとどうすればいい?
filesystemobjectとか使うの?
142デフォルトの名無しさん
垢版 |
2018/09/17(月) 09:02:08.97ID:dEktkUWz
>>135
別にマイルール押しつけてるつもりはないよ。俺はプログラミング歴本当浅いし。
間違ってれば指摘して訂正すればいいだけの話じゃない?

それはさておき、なんだかんだで、答えてくれてるので、回答どうもw
2018/09/17(月) 09:40:45.98ID:u5HISWee
>>141
Private Sub Workbook_BeforeSave()
のサブプロシージャで適当に。バックアップ世代管理をどこまでやるかで変わるが簡単にやるならSaveCopyAsでいい。
2018/09/17(月) 09:45:04.21ID:x2+cUCF9
>>143
そのもののイベントがあるのね
ありがとう
145デフォルトの名無しさん
垢版 |
2018/09/17(月) 15:03:24.49ID:Z7EfKxAW
>>136
ありがとうごじゃります
おっしゃるとおりで!
古本屋には無かったのでネットでサンプルでも見ながら探します!
2018/09/17(月) 19:47:37.68ID:3YPJfo/c
どんなCSVでもテキスト処理すれば良いだろ。
Excelで開いて崩れるならそれは無理すじというもの。

見えるデリミタが既に嫌なので、見えない文字をデリミタに使ってCSVもどきとかにしてたこととかあったな。
2018/09/17(月) 20:21:50.63ID:u5HISWee
まだ引っ張るのかw
2018/09/17(月) 20:25:15.40ID:pGKPj11G
あんまり同じ話ばかりしてるとまた半角先生に低学歴知恵遅れって言われるぞ
149デフォルトの名無しさん
垢版 |
2018/09/17(月) 21:34:58.01ID:8X2LVp/6
「関数を使うかVBAを使うか」なんて文章を見てもにょらないのか?
2018/09/17(月) 21:48:19.81ID:3YPJfo/c
普通に一般的じゃないCSVなんてごまんとあるだろ。
3270が吐き出したCSV(といっても結局プログラムが吐き出してるわけだけど)とか、固定長CSVとか。
カンマ区切り以外は何でもアリと考えるべき。
どうせ、どんな仕様でも対応できるだろ。
大した話じゃない。

基本的な話だがCSV開く時はOpenTextって話がまだ無いようだが、それでダメなら自前でどうとてもするだろ。
2018/09/17(月) 21:50:33.98ID:3YPJfo/c
>>141
開く前にファイルコピーでも何でも良いじゃん。
2018/09/17(月) 22:29:17.24ID:nCCekO+f
https://qiita.com/areanoblog/items/095abe477fd04bbfc7c4
VBAからpowershell呼び出すのって↑こんなまわりくどいの?
powerhellの実行結果を一旦テキストファイルとかに出してそれをまたVBAで読み込むとか?
めんどくさ…('A`)
2018/09/17(月) 22:31:24.18ID:w2PHbw/n
固定長CSVとか言うパワーワード
2018/09/17(月) 22:52:13.82ID:nnZrg0Mh
固定長CSV笑った
でも世の中には実在するんだろうな
155デフォルトの名無しさん
垢版 |
2018/09/17(月) 22:57:01.63ID:AYOVQ736
なになに?またプロさん知ったかぶりしとんの?
2018/09/17(月) 23:15:23.57ID:pGKPj11G
>>152
こんなことやるならPS側で処理した方が絶対良いよな
PSから直接Excel触れるんだから
2018/09/17(月) 23:30:51.51ID:O0m9WfJA
Office は高い

Ruby で、VSCode の拡張機能の、Excel Viewer で十分
2018/09/18(火) 02:54:36.14ID:ziBnUm70
>>157
働いたこともないニートだったか
2018/09/18(火) 04:01:32.86ID:e8HHTJEv
>>152
>>156
オレもPS側から処理する方が基本的に筋が良いと思う
PSの方が汎用的で記述性が高いから
160デフォルトの名無しさん
垢版 |
2018/09/18(火) 05:54:19.55ID:QjGqbTDe
PSキチガイ、Rubyキチガイが登場したから、後はC#キチガイが出てくればいつもの通りの流れ
161デフォルトの名無しさん
垢版 |
2018/09/18(火) 05:56:46.48ID:KvvcKQiM
まだマッチポンプやってるんかお前?
2018/09/18(火) 06:07:52.72ID:RfbXDeCO
俺はC#の役も出来るから必要なら呼んでくれ
2018/09/18(火) 07:32:33.78ID:cnS9oStk
表形式もWPFのほうが安全で楽で表現力高いと気付いてから俺の中でVBAの出番は完全になくなった
VBAの使い道を必死で探してるが見つからない
2018/09/18(火) 08:05:31.56ID:RfbXDeCO
WPFはデータとプログラムソースを完全分離出来るからな
VSさえ自由に使えるなら安全で良い
2018/09/18(火) 08:14:28.81ID:/U1cQ/02
働いたこともないニートだったか
2018/09/18(火) 08:34:54.62ID:NAn2Eeof
自己紹介乙
2018/09/18(火) 08:53:19.81ID:RfbXDeCO
働いたことがないニートなのはこのスレの参加条件だからニート歴の年数で勝負すべき
2018/09/18(火) 09:11:00.17ID:6gy5jGhe
>>163
言語として使いやすいから、とか
2018/09/18(火) 12:06:42.40ID:oc0rxGPX
>>168
その皮肉はちょっとよくわからない
2018/09/18(火) 12:13:47.72ID:PpRa0G4r
面白いギャグだね
2018/09/18(火) 12:16:08.60ID:/U1cQ/02
>>163
君の作ったのがExcelの完全上位互換でもない限り、上司からセルの色が変えられないとか関数が使えないとか言われるのがオチ。

ニートの意味プログラムの世界では成立するかもね。
172デフォルトの名無しさん
垢版 |
2018/09/18(火) 12:22:42.63ID:Xx2CgWoL
そもそもエクセルの使い方わからんプロさん達やし致し方ない
2018/09/18(火) 12:34:01.22ID:PpRa0G4r
>>171
そういうエクセルを使うことが目的になってる残念上司にはエクセルをエクスポートして渡しておけばいいよ
こっちはあくまで生産性上げるためにやってるわけだからね
もちろん色を変えることにビジネス上の合理性があるなら実装するがね
色を変えて遊びたいだけじゃ話にならん
2018/09/18(火) 12:51:14.99ID:/U1cQ/02
>>173
それだったらExcel使う必要無いわけだ。
上司や社長にそう言ってみれば良いんじゃね。

色だけの問題じゃねえっての。
完全上位互換で気付かないかねえ。
だから二―トと言われるんだぞ。
2018/09/18(火) 13:59:55.38ID:oc0rxGPX
自分から具体的な事を言わずに相手の反応を待つ方法、
馬鹿が頭良く見せる時によくやるけどその内相手にされなくなるよ
2018/09/18(火) 15:33:00.72ID:6gy5jGhe
>>169
2018/09/18(火) 19:05:07.35ID:7cRL6s2e
初心者の典型的な勘違いだね
「なんでも出来る方が良いに決まってる」
でも、実際には逆なんだな

例えば標準エクセルの完全上位互換なら、すべてのセルの色を変えれることになるが
そうすると色を変えてほしくないセルまで変えてしまう人が現れる
色だけじゃなく、ありとあらゆる機能について似たようなことが言える
先人たちは失敗に学び、なんでも出来るツールよりも、僅かな仕事を上手くやるツールを組み合わせたほうが良い、という答えにたどり着いた

事務員のみんなは、学ぶべき先人が居ない環境でプログラミングを覚えてきた
だから、こういう基本的なことが身につかないままの人が多いんだ
2018/09/18(火) 19:09:22.99ID:/U1cQ/02
>>175
あれあれ?
「関数が使えない」を無視した上に、「完全上位互換でもない限り」の文意を読み取ろうともせずに「具体的なことを言わず」と相手を批判ですか?

何でも全て自分は悪くないですか。
そうですか。
2018/09/18(火) 19:10:47.69ID:/U1cQ/02
>>177
それじゃ既に誰もExcel使ってないっての。
ところが現実は違う。
2018/09/18(火) 19:22:55.63ID:7cRL6s2e
>>179
それだけリテラシーの低い人が多いということ
多数派が賢いというのも典型的な勘違いの一つだね
181デフォルトの名無しさん
垢版 |
2018/09/18(火) 20:11:57.47ID:WcZLZMlj
セル内の文字列をコピーする際、セルごとコピーしようとしたら、余計な情報までコピーするからやめろといわれた。本当ですか?
2018/09/18(火) 20:14:47.13ID:uHQ14XDu
>>181
コピペのやり方とどこに貼り付けるか次第かなー
2018/09/18(火) 20:38:53.34ID:dgXQ4G2s
>>181
値貼り付けならまぁなんとか
コピーしてそのまま貼り付けは鬱陶しいな
2018/09/18(火) 21:38:06.78ID:NAn2Eeof
書式貼付けとか出来るようになったのは嬉しいけど罫線そのままフォントとか背景色をコピーとかしたいわ

要望に限りはないな…
2018/09/18(火) 22:18:22.89ID:J2IpRlny
>>184
コピー元のセルとコピー先のセルをそれぞれRange型変数に格納して、あとはコピー元の任意のプロパティの定数値をコピー先のプロパティの値としてそのまま代入するだけ
2018/09/18(火) 22:25:10.68ID:dgXQ4G2s
>>184
罫線だけ貼り付けあるで
2018/09/18(火) 23:02:58.12ID:/U1cQ/02
>>180
???
多数派が賢いとは言ってない。
そもそもの話から理解出来ないなら引っ込んでろよ。

会社は君一人だけで成り立っているわけじゃない。
188デフォルトの名無しさん
垢版 |
2018/09/18(火) 23:05:19.45ID:oE0uJFU6
なんかVBAできる程度でイキってる低学歴知恵遅れがいるのか
2018/09/18(火) 23:12:46.57ID:/U1cQ/02
独りよがりの二―トならいるが。
190デフォルトの名無しさん
垢版 |
2018/09/18(火) 23:19:04.19ID:3Z5SLW4f
vba出来なくてイキられとるプロさん達w
2018/09/18(火) 23:32:08.88ID:dgXQ4G2s
>>188
そりゃ事務作業がほぼ0になるんだからイキってもいいよ
2018/09/18(火) 23:57:53.79ID:J2IpRlny
VBAは作ってからが本当の地獄だぞ
2018/09/19(水) 06:01:57.35ID:S2C8yCMr
おっと野田工房さんの悪口はそこまでだ
https://qiita.com/nodakoubou/items/1c92d33855cfd09ccc57
194デフォルトの名無しさん
垢版 |
2018/09/19(水) 06:47:53.78ID:wCu+CcEF
office.tanakaのコードには俺も前から疑問持ってた。vbaにクソコードが多い原因とまで言っちゃうのはちょっと言過ぎだが。
vbaの場合、入門書にロクなのが無いってのが大きいと思う。
2018/09/19(水) 08:11:46.01ID:3pMh17++
少なくともオブジェクトが解放されてないとか文句言ってるのは別言語に移行すれば解決するな
2018/09/19(水) 08:16:58.74ID:Q3mSx79m
他人のせいにしちゃいかんな
モダンな文法や機能の導入
Excel.Applicationのインターフェース改善
洗練されたIDEの導入
これらを怠った結果でしょう
特にIDEの影響が大きいと見たね
インテリセンス、サジェスチョン、ワーニング、リファクタリングツールが充実してると大分変わる
2018/09/19(水) 08:27:16.54ID:qT/e110f
すくなくともVBEは変えるよな
素人マクロじゃなくて業務開発ならば
2018/09/19(水) 08:30:56.76ID:LVCMaoiR
>>163
それでもスレに来るのは何なの
2018/09/19(水) 09:05:12.30ID:eB9Wvzp/
>>198
とにかくVBAをけなして自分のチンケなプライドを満足させたい、その一点のみ w
2018/09/19(水) 09:07:56.31ID:hRx0sgGQ
啓蒙してユーザー需要を減らせれば、皆がハッピーになると信じている…のかも
201デフォルトの名無しさん
垢版 |
2018/09/19(水) 11:59:42.56ID:9eFLiOtU
暇つぶしの問題
あるセルとその下のセルに数値データが入っている
この2つのセルの中身を他のセルを使わずに入れ替えてください
2018/09/19(水) 12:11:03.24ID:3D7E1PKU
○○では××できない!糞!って騒ぎ立てることで
いや○○でもこうすれば××できるんやでという回答を引き出すメソッドや
2018/09/19(水) 12:13:54.07ID:3D7E1PKU
なおVBAの場合ほんとにできないのであまり効果的でない模様
2018/09/19(水) 12:39:07.72ID:f2RidzcJ
>>201
Dim Rng_Target As Range
Dim Val_Target As Long

Set Rng_Target = 目的のセルを取得するexpression
Val_Target = Rng_Target.Value
Rng_Target.Value = Rng_Target.Offset(1, 0).Value
Rng_Target.Offset(1, 0).Value = Val_Target
2018/09/19(水) 18:17:37.52ID:r5xYEE0l
If Not RangeA Like RangeB then
RangeA = RangeA Xor RangeB
RangeB = RangeA Xor RangeB
RangeA = RangeA Xor RangeB
End If
2018/09/19(水) 18:40:15.75ID:AVetNhWj
xor交換て数値型全部に使えるんだっけ
2018/09/19(水) 18:41:10.33ID:5nElZyy0
>>198
確認だけど日本語は読めるよね?
VBAの使い道を探してるって書いてあるけど見えなかったのかな
2018/09/19(水) 18:52:28.00ID:0/ft7j2l
>>207
いや、必要もないのに探す意味がわからないし
暇なの?
2018/09/19(水) 18:58:31.13ID:5nElZyy0
>>208
ん?
高い金出して買ったExcelを使いこなさなきゃもったいないだろ
2018/09/19(水) 19:21:40.70ID:0/ft7j2l
>>209
プライベートで有効に活用できないかってことね
趣味にもよるしなあ
211デフォルトの名無しさん
垢版 |
2018/09/19(水) 23:25:17.18ID:J1A7PsDE
プロも実はエクセル使えないの悔しいんやなwプロさんのくせにw
212デフォルトの名無しさん
垢版 |
2018/09/19(水) 23:28:02.58ID:xLP4ypV2
プロはセルで関数つかっても
vbaはつかわない
2018/09/19(水) 23:34:32.23ID:f2RidzcJ
ワークシートでユーザー定義関数使いたいときはVBA使う
2018/09/19(水) 23:47:39.17ID:3pMh17++
>>193
なんやかんや言いつつ文句の対象がVBAだけなの草
2018/09/20(木) 00:20:27.12ID:EYF8wRp8
頭の悪い人がVBA覚えると数式でも工夫すればできることもVBAでやろうとするよね
VBAは所詮「実行できる操作手順」だから、慣れてしまえば頭が弱くても分かりやすい
数式の方が論理的な思考が必要で突き詰めれば難しい
2018/09/20(木) 00:23:10.21ID:5+Hsdig+
ハイハイ偉い偉い
2018/09/20(木) 00:37:45.52ID:grTR8BoD
まるでVBAで数式を表現できないみたいじゃないか
変なこというヤツだな
218デフォルトの名無しさん
垢版 |
2018/09/20(木) 00:41:53.76ID:zLqp8E23
むしろ数式の途中結果を使いながら何列もつかって最終結果にたどりつく
途中で確認するからな
複雑な数式を一行やろうとなんか考えない
2018/09/20(木) 01:26:44.94ID:SZObeV+C
語彙力、たぶん関数って書きたかったんだろ
2018/09/20(木) 01:42:01.91ID:iN76uuvx
VBの組み込み関数とワークシート関数のどっちの話をしてるんだか
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況