Excel VBA 質問スレ Part56at TECH
Excel VBA 質問スレ Part56 - 暇つぶし2ch2:デフォルトの名無しさん
18/08/23 07:27:46.16 AvT0Y0lS.net
>>1


3:デフォルトの名無しさん
18/08/23 08:14:37.79 bUr0Kcqf.net
昔、JAVAでレイアウトというのを初めて知った時、何でこんなゴミ屑な仕組みになってんのと思ったことが有った。
Web系なんかではサイズが変わることが多く、それでレイアウトが崩れることがあるからなんだろうなと思ったが、Excel上で必要になったことは一度も無いや。

4:デフォルトの名無しさん
18/08/23 08:42:36.29 kThmoP0z.net
エクセルでFormという時点で、あっこいつエクセルが何のツールかわかってないな、一緒に仕事したら大変そうだな、と思われそう

5:デフォルトの名無しさん
18/08/23 09:08:14.03 4Howibg1.net
>>4
何の仕事かにもよるけど普通の人はそんなこと思わないよ

6:デフォルトの名無しさん
18/08/23 11:02:04.08 neL0YzB6.net
エクセルで仕事ですか?
エクセルってメモ帳みたいなですよね?
あんなオモチャで仕事させられたらバカだと思われますよ

7:デフォルトの名無しさん
18/08/23 11:14:34.25 B354cjvS.net
バカじゃ無い方々は何を使ってお仕事されてるんですか?

8:デフォルトの名無しさん
18/08/23 11:54:21.34 azcqrZDb.net
ここに来てわざわざそんなこと言う人間はExcelに精�


9:_を削られた経験でもあるんだろうよ。



10:デフォルトの名無しさん
18/08/23 12:15:55.01 neL0YzB6.net
削られるも何もエクセルなんてインストールもしてない
必要ないじゃん
いつの時代に生きてるの?
googleスプレッドで問題なし

11:デフォルトの名無しさん
18/08/23 12:20:01.40 mnxNa0AO.net
>>5
同レベル帯にいるってことかな

12:デフォルトの名無しさん
18/08/23 12:21:37.83 bUr0Kcqf.net
世界で一番仕事で使われているソフトウェアを使わない選択肢も有るよな。
そんな会社とは付き合いたくないが。

13:デフォルトの名無しさん
18/08/23 12:24:53.48 JvbJckIq.net
何のためにわざわざこのスレに来てそれを言わなければならないのか、
についての悲しい物語

14:デフォルトの名無しさん
18/08/23 12:36:38.56 mnxNa0AO.net
世の中にはエクセルに異存せずにクリエイティブな仕事をしてる人はたくさんいるよ
毎日エクセル事務作業ばかりやってると想像できないかな?

15:デフォルトの名無しさん
18/08/23 12:53:45.47 iNuWULI+.net
>>13
> 世の中にはエクセルに異存せずにクリエイティブな仕事をしてる人はたくさんいるよ
そういう人たちはこんなスレを覗かないだろ w

16:デフォルトの名無しさん
18/08/23 12:53:52.04 neL0YzB6.net
マジでエクセルなんて必要ねー
つかエクセル形式でなんて言われたこともない
メモ帳だろ?

17:デフォルトの名無しさん
18/08/23 12:55:20.85 VIt1epE4.net
それは良かったね。
で、ここはExcelを便利に使おうとする人が集まるスレ。他ツールの話がしたい人は余所でやってね。
邪魔が入ったけど、、PSコードをExcelから呼ぶときはどうしてるの?
VBAから呼び出し?

18:デフォルトの名無しさん
18/08/23 18:09:34.45 QrjyoFcH.net
>>11
そういうことを言う人とも付き合いたくないな

19:デフォルトの名無しさん
18/08/23 18:28:38.62 bUr0Kcqf.net
>>17
全然困らないから良いよ。
ごくごく稀な、PC使わないような会社とは業種がまるっきり違うんでね。

20:デフォルトの名無しさん
18/08/23 18:30:05.10 bUr0Kcqf.net
>>13
そういう人達はPC使って無いんだろ。

21:デフォルトの名無しさん
18/08/23 18:54:08.74 b+vV9Eld.net
ビジネス界の常識って話ならそれで良いのに
技術的に比較しようとするから荒れる

22:デフォルトの名無しさん
18/08/23 19:02:27.29 RN48dlFj.net
で前提条件は変わったの?
エクセル以外は何もインストールも出来ない特殊な環境で働かされてる人向けってのVBAだったよね?
そんな人は極少数とか言ってたやつ
極少数の人しかVBAって使ってないの?

23:デフォルトの名無しさん
18/08/23 19:34:43.54 8FHoLqVu.net
使ってないよ

24:デフォルトの名無しさん
18/08/23 20:16:31.88 1ATD5kR7.net
世間にこれ程エクセルコンプレックスを持ったパソコン博士が居ったとは
正直驚いている

25:デフォルトの名無しさん
18/08/23 20:45:49.20 woFPjL3r.net
>>21
そういう極限状態ですらPowerShellという強力なライバルがいる
VBAはもはや本気でビジネスに活用するような言語じゃない
もちろんPowerShellがなかった、あるいは普及してなかったXP時代だったらVBAもビジネスで通用した
でも今はもう便利な道具が揃ってる

26:デフォルトの名無しさん
18/08/23 22:05:21.42 5czy+V1T.net
PSって簡単に1ファイルにできるんだな
1ファイルおじさん涙拭けよ

27:デフォルトの名無しさん
18/08/23 22:06:49.39 Dg6LSkki.net
だが、伸びないPowershellスレw

28:デフォルトの名無しさん
18/08/23 22:33:07.38 mr/xvEY6.net
うちの会社ではPowerShellがデフォルトでは使えないだけど、作ったものは動かせるのかな?

29:デフォルトの名無しさん
18/08/23 22:40:39.71 SlWSkCRM.net
お前の会社のことをここで聞かれてもな

30:デフォルトの名無しさん
18/08/23 22:42:09.05 EIhBcxjq.net
>>28
同じ会社かもしれないだろ、お前の会社のことを言えよ

31:デフォルトの名無しさん
18/08/23 22:42:39.62 VIt1epE4.net
で、とうやってExcelとPS連携するの?
PowerShell押しの人、ノウハウ教えて。
(普段はVBAだけど固執するつもりはないので)

32:デフォルトの名無しさん
18/08/23 22:47:42.13 SlWSkCRM.net
>>29
ここはVBAのスレであってPowerShellのスレではない。
お前、字も読めないバカ?

33:デフォルトの名無しさん
18/08/23 22:51:44.59 EIhBcxjq.net
>>31
だったら最初からPowerShellのことをここで言われてもなと言えよ
会社がどうとかふざけたこと抜かしやがって

34:デフォルトの名無しさん
18/08/23 22:52:11.76 EIhBcxjq.net
PowerShellもここで良いだろ逆に

35:デフォルトの名無しさん
18/08/23 23:02:01.12 mr/xvEY6.net
>>28
それって会社によるのか?
PowerShell自体が使えない環境でも作ったスクリプトが動くなら
どこか1箇所だけ使える環境を用意してやれば済むんだけど。

36:デフォルトの名無しさん
18/08/23 23:11:41.91 VIt1epE4.net
>>31
ちげーよ、VBAとPSをどう連携できるのか聞いてんのよ。どっちがいいとかの雑談にはウンザリだけと、出来る範囲を広げるのはいいだろ?
なのでPS押しの人たちが普段どうしているか知りたいわけ。

37:デフォルトの名無しさん
18/08/23 23:23:18.86 8FHoLqVu.net
PSを煽る気満々のやつにわざわざ教えるわけねーだろ

38:デフォルトの名無しさん
18/08/23 23:31:56.28 dogWJKVx.net
Powershell利用のマルウェアが多いため、Powershellはセキュリティリスクという考えの社が多い。
やっと去年のWin10からかなり監査が出来るようになったので、今後は順次開放されるのではと思うが

39:デフォルトの名無しさん
18/08/23 23:32:50.94 XWjfkmKJ.net
PSめんどくさいんだよ
バッチファイルと同じで、なんか変なとこで管理者権限が必要だったりするから、
一般事務の子に「これダブルクリックしたらok~」とか気軽に言えない
URLリンク(ledsun.hatenablog.com)
何だかんだで気軽に扱えるのはVBSとvba
特にエクセル+vbaの相性が良すぎてサクッと使い捨てコード書くならこれ以外考えられない

40:デフォルトの名無しさん
18/08/23 23:40:01.25 qUZ5eK5Q.net
PowerShell(PS) で、Excel を起動して読み書きするとか、
PSで、データベースからExcelへ、データを読み込むとか

41:デフォルトの名無しさん
18/08/24 00:02:12.55 zdXjL1Gc.net
>PowerShell(PS) で、Excel を起動して読み書きするとか、
これは最悪
素直にvbaで良い

42:デフォルトの名無しさん
18/08/24 00:36:36.97 2VotvySN.net
>>27
動く
>>30
好きにすればいい
URLリンク(github.com)
ここ充実してるので参考にするといい
>>37
んなこと言ったらVBAもなにもかもリスク
メールで気軽に送受信してしまう1ファイルVBAは比較的リスクが高いと言える
>>38
管理者権限は不要
>>39
VBAはブックに埋め込んでブックを開かないと動かせないから面倒くさい

43:デフォルトの名無しさん
18/08/24 05:48:18.65 xDm94xVe.net
VBAの最大のデメリットは
自分: プログラム書けます!
他人: C#? Java?
自分: .........
恥ずかしくてVBAだって言えない事
今時VBAってwww

44:デフォルトの名無しさん
18/08/24 07:09:42.


45:47 ID:srP6ovAZ.net



46:デフォルトの名無しさん
18/08/24 07:30:56.58 bUYoJBbe.net
>>43
お前が言うな

47:デフォルトの名無しさん
18/08/24 07:50:15.08 g+y0M0OA.net
>>41
なるほど基本、外部から起動して一処理完結型の目的に使うイメージですね。ボタンやイベント駆動に割り付けるのではなく。
リンクありがとう。ちょっと覗いていろいろ遊んでみます。

48:デフォルトの名無しさん
18/08/24 07:59:11.40 srP6ovAZ.net
>>44
思わず反応しちゃうということはさてはお前VBAしか使えないな w

49:デフォルトの名無しさん
18/08/24 08:08:55.41 zdXjL1Gc.net
vbaって普通、事務用途なんだから他言語使える人は少ないよ

50:デフォルトの名無しさん
18/08/24 08:14:56.26 RA0Vn5Gg.net
外部から起動するのがダメダメだろ。
それだったらどんな言語でもOK。
C#とかにするね。
昔、VBAからShellで別言語で作ったプログラムを呼び出して、そのプログラムが特定のテキストファイルを残して終了するまで待ってからVBAでテキストファイルを読み込むなんてかっこ悪いことしてたことが有るんだけどPowerShellも同じ匂いがするんだよな。
.netのフォームが使えるのは良いかもと思ったけど、ここでも同じ匂いがする。
VSTOの方がよっぽど良い。

51:デフォルトの名無しさん
18/08/24 08:15:03.43 LUWnMn3S.net
こマ?

52:デフォルトの名無しさん
18/08/24 08:15:30.07 LUWnMn3S.net
>>47
これマジ?

53:デフォルトの名無しさん
18/08/24 08:17:17.16 iPiTj0p3.net
UI部品やイベントでゴテゴテに装飾したエクセルGUIを使う場面ってビジネス上そんなにないよね

54:デフォルトの名無しさん
18/08/24 08:19:21.36 iPiTj0p3.net
>>48
発想がチープっすね
おじいちゃんPGが好きそうな構造

55:デフォルトの名無しさん
18/08/24 08:41:40.00 HeVrgcXD.net
Powershell(またはバッチ),vbsは必須だろ...単なるファイル処理にVBA書く奴の気が知れん

56:デフォルトの名無しさん
18/08/24 08:44:24.10 RA0Vn5Gg.net
>>51
そう。
だからVBA標準のフォームで十分。

57:デフォルトの名無しさん
18/08/24 08:45:13.75 RA0Vn5Gg.net
>>53
そう。
Excelが絡まないなら他言語の方が良い。

58:デフォルトの名無しさん
18/08/24 08:48:03.57 RA0Vn5Gg.net
でもここはExcelVBAのスレなのでExcelが絡むのが基本。
そうすると他言語はどれもダメダメ。
Excelから起動出来ないとか、かっこ悪い匂いしかしない。

59:デフォルトの名無しさん
18/08/24 08:51:53.95 iPiTj0p3.net
>>54
?
.netあるのになぜエクセルでフォーム?ギャグなの?

60:デフォルトの名無しさん
18/08/24 09:02:02.23 RA0Vn5Gg.net
>>57
バか?
Excel上で使うフォームのことを言ってるんだが。
そこに.netの高機能なフォームなんて必要無い。

61:デフォルトの名無しさん
18/08/24 09:05:39.56 PRwKDkO6.net
>>47
俺はexcelでやる作業を楽したいからVBA覚えたけど(関数覚えるようなものだし)、他のプログラム言語なんて大学生のときに教養の授業で少しやっただけで、必要なかったし、今後も全く必要ないと思う

62:デフォルトの名無しさん
18/08/24 11:47:05.80 DLTYmqpl.net
エクセルは多くの一般人に便利に使われている一方で、多くのプログラマに嫌われている言語ですね

63:デフォルトの名無しさん
18/08/24 12:27:48.07 RA0Vn5Gg.net
>>60
嫌われているのじゃなくて碌にプログラムが組めない奴、もしくは他言語の初心者が自分能力の低さが悔しくて憂さを晴らしやすいのがVBAなんだろう。

64:デフォルトの名無しさん
18/08/24 12:34:00.31 AkhzDIRR.net
PowerShellからインタラクティブにExcelいじるのが便利
VBAって対話的に実行できないんだよね

65:デフォルトの名無しさん
18/08/24 12:51:53.83 RA0Vn5Gg.net
そりゃ、今でも何でもコマンドラインの方が良いという人はいる。

66:デフォルトの名無しさん
18/08/24 16:27:42.29 9KBmVSUv.net
対話的


67:インタフェースってあまりありがたくないけどな



68:デフォルトの名無しさん
18/08/24 16:47:35.08 AkhzDIRR.net
俺はありがたいんだよ

69:デフォルトの名無しさん
18/08/24 17:42:03.82 Ia7dcRVj.net
みんな好きな方法でやれよ。
外からのコントロールも覚えれば幅も広がるかな?勉強しよっと。
でも、Excel介さずにファイル操作するほうが効率的ってならこのスレに関係ない話だな。
全く関係ないスレで暴れてる人たちって何がしたいんだろ。
好きな方法で好きなことさせればいいのに。

70:デフォルトの名無しさん
18/08/24 18:25:12.83 Yv7qaAWo.net
>>62
さすがにそれは・・・イミディエイトウィンドウ知らんの?

71:デフォルトの名無しさん
18/08/24 18:47:05.36 Tb9uhLLL.net
流れを読まずに、、皆さんListObjectって使ってます? Oracleとかからクエリするとできあがるアレ。
2007あたりからの機能だと思うけど、慣れないから範囲に変換して独自のアクセス方法で使ってた。
もしかしてリストで表組みすればプログラムでスゲー便利だったりします?
ここが便利とか、こんな使い方があるよ、ってのがあったら教えてください。

72:デフォルトの名無しさん
18/08/24 19:14:05.46 eMTWpNIK.net
>>67
自分は作業をイミディエイトウィンドウでこなすことが多いんだけど、
あれって対話的インタフェースっていうもんなの?

73:デフォルトの名無しさん
18/08/24 19:22:15.85 n2aXOJxU.net
イミディエイトで日常作業とか苦行だろ
冗談キツイよ

74:デフォルトの名無しさん
18/08/24 19:26:58.79 zdXjL1Gc.net
みんなが作るvbaのUIってどんな感じなの?
俺はいつもこう。設定縦一列に並べてボタン押せばokって感じにしてる
URLリンク(i.imgur.com)

75:デフォルトの名無しさん
18/08/24 19:29:26.52 zdXjL1Gc.net
イミディエイトウィンドウを対話的インタフェースってのは面白い言い方だな
ただ、あれは普通のコンソールとしか呼ばないと思う

76:デフォルトの名無しさん
18/08/24 19:34:39.13 zdXjL1Gc.net
>>68
知らなかった
テーブルをobjyect扱いにしているのか?
便利そうっちゃ便利そう

77:デフォルトの名無しさん
18/08/24 19:45:02.42 n2aXOJxU.net
ここにいるVBAerってPSerよりVBA知識少ないみたいだな
ListObjectも知らないとかまじかー

78:デフォルトの名無しさん
18/08/24 20:39:07.26 zdXjL1Gc.net
>>74
そもそもテーブルをvbaで触ることがない
システムから吐き出されたデータをvbaで集計して、vbaで体裁整えて、vbaでファイル分割してコピーして、vbaで所定のフォルダに入るようにして終わり
ListObjectとか頑張って使う人は結構たいへんな環境だと思う

79:デフォルトの名無しさん
18/08/24 20:44:55.61 Tb9uhLLL.net
PSでの対話的処理って具体的にどんなするの?(定義に行き違いがありそう)

80:デフォルトの名無しさん
18/08/24 20:51:02.74 Tb9uhLLL.net
>>74
お?詳しそうだね。
便利な使い方があったら教えて!

81:デフォルトの名無しさん
18/08/24 21:00:09.88 eMTWpNIK.net
>>70
なんで?
環境を整えればワンライナーでガシガシいけるyo!

82:デフォルトの名無しさん
18/08/24 21:24:35.45 2VotvySN.net
>>78
指定フォルダを再帰的に検索してファイル名が*.csvにマッチするCSVファイルを列挙
各CSVからX列, Y列, Z列を読み取ってD := (X^2 + Y^2 + Z^2)^(1 / 2)を計算する
Dの大きい順に並び替えてX, Y, Z, Dを新規Excelブックに出力して
出力した全行をテーブルレイアウトに変更する
例えば↑のような処理があったとしてイミディエイトのワンライナーだとどういうコマンドになるの?

83:デフォルトの名無しさん
18/08/24 21:29:18.23 H0CBQlWs.net
ぼくが考えた目一杯難しいプログラムみたいでワロタw平和やなあ


84:w



85:デフォルトの名無しさん
18/08/24 21:30:26.97 zdXjL1Gc.net
そんなもんワンライナーで書くわけ無いだろ・・・

86:デフォルトの名無しさん
18/08/24 21:37:29.53 2VotvySN.net
>>80
え? VBAユーザーの感覚だとこの程度の処理が難しいの?
>>81
ファイルの検索、解析、整形、出力なんて日常茶飯事だろう
こんな典型的な基本パターンすらワンライナーで書かないならなにをワンライナーで書くんだよ

87:デフォルトの名無しさん
18/08/24 21:41:19.42 H0CBQlWs.net
マウンティングワナビー剥き出しのナイーブなレスでワロタw平和やのうw

88:デフォルトの名無しさん
18/08/24 21:49:06.20 2VotvySN.net
やっぱりイミディエイトじゃ大したことできないじゃん

89:デフォルトの名無しさん
18/08/24 22:02:01.47 bUYoJBbe.net
いやまあ向き不向きはあるでしょ
不向きなもの取り上げてダメだというのは自作自演ですよん

90:デフォルトの名無しさん
18/08/24 22:02:51.21 eMTWpNIK.net
>>79
ごめんなさいごめんなさいそれはワンライナーでは無理でした
実力もないくせにワンライナーとか言ってごめんなさい

91:デフォルトの名無しさん
18/08/24 22:03:18.60 bUYoJBbe.net
>>82
ちなみにPowerShellではどう書くんだい?

92:デフォルトの名無しさん
18/08/24 22:20:36.13 H0CBQlWs.net
なんやワナビーwせっかくのマウンティングチャンス見送ってまうんかw

93:デフォルトの名無しさん
18/08/24 22:36:32.96 eMTWpNIK.net
ごまんなさいオレには無理でした教えてください
そういう関数を作ってイミディエイトから呼び出せばそりゃできるけどそれじゃワンライナーとは言えないですよね...

94:デフォルトの名無しさん
18/08/24 22:45:50.22 2VotvySN.net
gci . -Recurse -Filter *.csv | % { ipcsv $_ } | % { $_ | Add-Member -PassThru -MemberType NoteProperty D ([math]::sqrt([math]::pow($_.X, 2) + [math]::pow($_.Y, 2) + [math]::pow($_.Z, 2))) } | Sort-Object D -Descending | Export-Excel -Now

95:デフォルトの名無しさん
18/08/24 22:47:49.25 zdXjL1Gc.net
>>90
うおおおおおおwwwwwwwwwwwwwww
って試してないけどそれっぽいから驚愕しとくぜ!
ってかvbaってそもそも
「提携業務の自動化」
がコンセプトだと思うんだけど、
そこにワンライナーを持ち出す意味がわからないぜ。やれるならすげー!って思うけど、エクセルのファミコンエミュみたいな大道芸と変わらん

96:デフォルトの名無しさん
18/08/24 22:52:49.94 eMTWpNIK.net
>>79
冷静に考えたら「新規Excelブックに出力して~ 」の部分を除けば
イミディエイトウィンドウ上のワンライナーでもいける気がしてきた

97:デフォルトの名無しさん
18/08/24 22:56:59.98 eMTWpNIK.net
>>90
ん?
X列, Y列, Z列ってなんの事だ?

98:デフォルトの名無しさん
18/08/24 22:58:35.81 2VotvySN.net
>>91
自動化はプログラミング言語共通の目的なので、VBAのコンセプトと言うにはビミョー
というか大道芸に見えるか?
ファイル漁って解析して整形して出力ってごく日常的な作業だから、大道芸でも何でもないし、
息吸って吐くみたいな作業をいちいちスクリプトファイル化したくないので、ワンライナーで書くんだよ

99:デフォルトの名無しさん
18/08/24 23:01:55.40 2VotvySN.net
>>93
X, Y, Z
1, 2, 3
1.5, 0, 100
こういう形式のCSVがあると思ってくれればいい

100:デフォルトの名無しさん
18/08/24 23:10:09.34 RA0Vn5Gg.net
何かPowerShellユーザーが哀しくなるようなレベルの奴が来てるな。
そんな簡単なものを自慢して何になるんだ?
PowerShellってのはそんなに使えないもんじゃ無いだろうに。
見た瞬間に組めると思うかどうかだよ。
簡単かどうかってのは。
ワンライナーかどうかは関係ない。

101:デフォルトの名無しさん
18/08/24 23:10:55.71 RA0Vn5Gg.net
まったくもってクダラナイ。

102:デフォルトの名無しさん
18/08/24 23:25:36.43 H0CBQlWs.net
まだマウンティング終わっとらんのかよw
最近はダラダラ時間ばかりかけて主旨のようわからんアホが多すぎるわ

103:デフォルトの名無しさん
18/08/24 23:49:03.30 2VotvySN.net
>>96
自慢に見えるならキミの潜在意識では、なんかすごいことやってるな、って感じてるってことだろうね
でもこの程度で自慢してるとか言われてもネ
呼吸することを自慢する人間はいない

104:デフォルトの名無しさん
18/08/24 23:51:12.91 bUYoJBbe.net
ブルーボトル日本開店おめでとう。西海岸で飲む、いつもの味。僕にとって新鮮みがないことが、成功の証だと思う。

105:デフォルトの名無しさん
18/08/25 00:16:21.97 r5O9PJUC.net
>>99
> 呼吸することを自慢する人間はいない
そうだな、呼吸することをいちいちこんなスレに書くやつもいないわな w

106:デフォルトの名無しさん
18/08/25 01:48:48.16 i/FnC0mp.net
>>90
おお、便利そうですね。勉強になります。
Excel絡んでるの、最後のとこだけ?
PowerShellも腰据えて勉強しようかな?

107:デフォルトの名無しさん
18/08/25 01:54:18.00 i/FnC0mp.net
でも、ここVBA質問スレなので、別スレに分かれてるとうれしいな。
Excel PowerShell 質問スレ とか作ってそこでご指導いただけると
ありがたいです。

108:デフォルトの名無しさん
18/08/25 05:01:12.37 gxBSyOuw.net
>>79
そういう複雑なものは、PowerShell では難しいから、Ruby を使う
Dir.glob('C:/Users/Owner/Documents/Ruby/test/**/*.csv') do |file| # 再帰的に
next if File.directory? file # ファイルだけを処理する
CSV.foreach( file ) do |row| # 各行
# row[0] ~ row[2] (列0~2)を使って計算する
end
end

109:デフォルトの名無しさん
18/08/25 11:15:08.47 qAZZDdLI.net
>>104
> 新規Excelブックに出力して
> 出力した全行をテーブルレイアウトに変更する
要件満たしてなくない?

110:デフォルトの名無しさん
18/08/25 11:31:23.83 2t4MGrQo.net
>>79
>>82
これVBAはおろか、そもそもエクセル案件ですら無い件。
せめてファイル形式くらいxlsxにしないと・・・

111:デフォルトの名無しさん
18/08/25 11:38:28.45 RyVjXt1l.net
>>106

新規Excelブックに出力して出力した全行をテーブルレイアウトに変更する
て書いてあるじゃん

112:デフォルトの名無しさん
18/08/25 11:40:32.66 t7aLMQyu.net
Excelから始まってExcelに終わる
Excel以外の外部環境とは隔離
これがエクセル案件
VBAはエクセル案件のためにある

113:デフォルトの名無しさん
18/08/25 11:54:03.16 2t4MGrQo.net
>>107
何故か見落としてた。すまんな。

114:デフォルトの名無しさん
18/08/25 12:32:54.50 +ZJnaWB8.net
>>108
データ量を考えた場合、RDBとの連携は認めても良いとは思うのだけどね。いちいち>>104みたいにRubyを持ち出すバカは別にして

115:デフォルトの名無しさん
18/08/25 12:34:48.30 t7aLMQyu.net
>>110
認めたら他の言語が優位になってしまう
エクセルでやるならエクセルだけで完結させる
これは絶対的なルールで例外は認められない

116:デフォルトの名無しさん
18/08/25 12:41:34.89 0r5h6/lL.net
普通にdll作ってexcelからdllの関数読んで作るような案件ないくらでもあるかな
追うのが困難な知恵遅れ大量クソVBAを知恵遅れが書くのを防止することもできる
excelでvbaを書くぐらいしかできない知恵遅れ無能に
できるだけ余計な事をさせない事前策にもなってる

117:デフォルトの名無しさん
18/08/25 13:28:24.31 bGX52BVk.net
自分用のちょっとしたツール
 スプレッドが必要
  操作補助が必要
   補助の内容が複雑->.NET(COM)+VBA(イベント, フォーミュラひも付けのみ)
   補助の内容が単純->VBA
  操作補助が不要->自分の環境で使用可能な任意の言語
 スプレッドが不要->自分の環境で使用可能な任意の言語
他人に配布するツール
 依存関係(※1)が揃っているとわかっている->その依存関係で使用可能な任意の言語
 依存関係(※1)が揃っているかわからない->PowerShell 2.0
※1 Excelは依存関係の1つと


118:数える



119:デフォルトの名無しさん
18/08/25 13:30:13.57 uy5cTArP.net
RDBとの連携 ← 必須
dll作って呼ぶ ← 普通にやる
テキストファイルの読み書きをする ← あんまりやらない

120:デフォルトの名無しさん
18/08/25 18:46:09.73 8J3vBuCl.net
>>99
呼吸することをわざわざ宣言するバカはいない。
なんでPowerShellバカばかり来るんだろう。

121:デフォルトの名無しさん
18/08/25 18:49:03.73 8J3vBuCl.net
実際、VBAじゃどうにもならないこともある。
なんで他言語自慢はVBAでも出来ることばかりなんだ?
他言語でもレベルの低い奴ばかり来てるんだろうな。

122:デフォルトの名無しさん
18/08/25 19:21:39.09 bGX52BVk.net
>>115
呼吸みたいなこともできんので驚いたって話だよ

123:デフォルトの名無しさん
18/08/25 19:38:40.64 zQ0fIRr+.net
自分から驚きにいってあえて驚いたと言いたがるアホw

124:デフォルトの名無しさん
18/08/25 19:40:49.82 DCt62qfA.net
VBAの何が良いって、適当に書いたプログラムを他人に渡しても、受け取った人(IT系では無い一般事務員)がその場で治せることが一つのメリットだと思う。
Powershellみたいに一行に何でもかんでも押し込まれたら、読めるもんも読みたくないわ
ましてや電話越しにデバッグして貰うとかVBAか関数にしか無理

125:デフォルトの名無しさん
18/08/25 19:48:19.41 zQ0fIRr+.net
>>119
別にパワーシェルやから一行に何でもおしこめる訳ちゃうわw
ワンライナーに童貞を奪われた厨房ってのは何時の時代も一定数おんねんw

126:デフォルトの名無しさん
18/08/25 20:12:22.32 RyVjXt1l.net
ワンライナーは人に渡すもんではなく、自分用だよ、きちんとps1ファイルに書くことも可能

127:デフォルトの名無しさん
18/08/25 20:14:43.66 t7aLMQyu.net
>>119
かつて無いほどアホくさいレス

128:デフォルトの名無しさん
18/08/25 20:27:16.37 t7aLMQyu.net
試しに同じ処理をVBAで書いてどっちがわかりやすいか、変更・拡張しやすいか、比べてみませんか
ハンデとしてワンライナーじゃなくても構いません
VBAユーザーの皆さんさあどうぞスマートなコードを書けるものならぜひ書いてみてください
もちろん尻尾巻いて逃げるのは構いませんがそんな情けない人はここには居ないと信じています

129:デフォルトの名無しさん
18/08/25 20:34:55.96 KMExyDFm.net
>>123
>>79の話? ああ良いですよ書いてあげましょう

130:デフォルトの名無しさん
18/08/25 20:35:18.16 KMExyDFm.net
VBAの全力をお見せしましょう

131:デフォルトの名無しさん
18/08/25 20:36:24.71 t7aLMQyu.net
>>125
その意気です
さあ書いてください
他の様子見してるチキンの皆さんも参加しても構いませんよ

132:デフォルトの名無しさん
18/08/25 20:41:37.12 r5O9PJUC.net
>>117
呼吸みたいなことをわざわざ書くとか驚きなんですけど w

133:デフォルトの名無しさん
18/08/25 20:42:30.57 KMExyDFm.net
できました
Files = ReadCsvFiles("*.csv")
Data = ReadCalcPower(Files)
Sort Data, "desc"
ExportExcel Data

134:デフォルトの名無しさん
18/08/25 20:44:48.11 t7aLMQyu.net
>>127
例えば隣に座ってるおじさんが呼吸してなかったら驚くし声をかけるだろう?
ねえねえVBAくんさっきから息してないけど大丈夫?生きてる?
まあだいたいそういう感じ

135:デフォルトの名無しさん
18/08/25 20:49:05.28 Nh0ThV6Y.net
powershellは凄いぞ!ワンライナーで何でも掛ける!
って言ってる奴が出てきた時はまともなpowershellユーザーがちょっと可愛そうではあった

136:デフォルトの名無しさん
18/08/25 20:50:11.46 RyVjXt1l.net
>>128
Subも書けよww

137:デフォルトの名無しさん
18/08/25 20:51:53.55 KMExyDFm.net
>>131
PowerShellと粒度を揃えましてん

138:デフォルトの名無しさん
18/08/25 20:52:42.36 KMExyDFm.net
VBAの書き方がわからないおじさんに教えてあげましてん

139:デフォルトの名無しさん
18/08/25 20:57:11.08 zQ0fIRr+.net
>>130
まともなパワーシェルユーザーなんか居らんわwバカかとんでもないバカだけやw

140:デフォルトの名無しさん
18/08/25 20:57:11.62 t7aLMQyu.net
>>128
素晴らしい
ReadCsvFiles、ReadCalcPower、Sortの実装が見


141:えないけどバグかな?



142:デフォルトの名無しさん
18/08/25 20:58:25.40 t7aLMQyu.net
誰とは言わないけど負け犬敵前逃亡兵がきゃんきゃん吠えとるのw

143:デフォルトの名無しさん
18/08/25 21:01:55.54 KMExyDFm.net
>>135
バグではないよVBAではこのように抽象化することで
コードをわかりやすく書くの
PowerShellでもExcelExportがどうなってるかは見えないよね
それと一緒

144:デフォルトの名無しさん
18/08/25 21:07:45.78 RyVjXt1l.net
検証できないから意味がない >>90は誰でも検証可能

145:デフォルトの名無しさん
18/08/25 21:10:25.06 3sYR2W/i.net
今までそーっとしといたけどVBAにソートないんだよね

146:デフォルトの名無しさん
18/08/25 21:13:56.58 KMExyDFm.net
>>138
検証してやるから全部のソース出してよ
Export-Excelもそう、Sort-Objectもそう、それらのソースコードを
提出していただこうか、粒度を合わせるんだよ

147:デフォルトの名無しさん
18/08/25 21:14:46.00 KMExyDFm.net
>>139
ソートはないよ、自分で作るなりネットから拾ってくるなりで

148:デフォルトの名無しさん
18/08/25 21:15:13.16 KMExyDFm.net
粒度の違うものを比較しても仕方がない

149:デフォルトの名無しさん
18/08/25 21:24:30.80 bGX52BVk.net
>>137
いやいや抽象化は構わないけど
中身がないとバグだよ
はいソース
URLリンク(github.com)
URLリンク(github.com)
キミは誠実な人だから惨めに言い訳して逃げないでVBAで実装してくれるよね

150:デフォルトの名無しさん
18/08/25 21:26:10.63 ZKioV505.net
ここ来るとVBAのおかげで飯が食えてる俺は先が無いなって思わされる

151:デフォルトの名無しさん
18/08/25 21:30:20.04 KMExyDFm.net
>>143
長すぎて読む気にならない
無駄なものを貼るな

152:デフォルトの名無しさん
18/08/25 21:38:17.09 bGX52BVk.net
>>145
あれれーキミも言い訳して逃げちゃう人だったんだ

153:デフォルトの名無しさん
18/08/25 21:49:32.83 KMExyDFm.net
>>146
僕は一切言い訳をしないし逃げることもない
ずっとここにいる、君はなぜここに居る

154:デフォルトの名無しさん
18/08/25 21:49:50.30 KMExyDFm.net
なぜPowerShellのソースコードを貼る

155:デフォルトの名無しさん
18/08/25 21:54:36.91 t7aLMQyu.net
>>147
>>137

156:デフォルトの名無しさん
18/08/25 21:58:36.58 KMExyDFm.net
>>149
僕が言ってることには完全に筋が通っている
粒度を合わせることによってVBAとPowerShellの比較を可能にして
VBAのコーディング方法をPowerShellユーザに伝授した
もっと丁寧なお礼をいただいても良いと改めて読み返してそう思った

157:デフォルトの名無しさん
18/08/25 22:18:30.20 t7aLMQyu.net
>>150
えーつまりVBAのコーディング作法では
未定義の関数を呼び出してエラーが出るのを眺めるのが正義、ということですか
流石vbaerは言うことが一味違いますね

158:デフォルトの名無しさん
18/08/25 22:19:12.23 KMExyDFm.net
>>151
誰もそんなこと言ってないですね
あなた誰ですか?

159:デフォルトの名無しさん
18/08/25 22:22:37.73 t7aLMQyu.net
というかことの起こりは
>>79
このレスだぞ
このレス自体はPowerShellとは無関係な純粋なVBAの質問だろ?
そのあとでPowerShellだとどうやるのと聞き返されたから答えたまで
ということで純粋なVBAの質問である>>79への解答を待ってます
VBAでは実現不可能でしたら解答しなくても結構です

160:デフォルトの名無しさん
18/08/25 22:24:42.27 KMExyDFm.net
>>153
VBAで実現可能です
純粋なVBAの最終解答をお示しします
Files = ReadCsvFiles("*.csv")
Data = ReadCalcPower(Files)
Sort Data, "desc"
ExportExcel Data

161:デフォルトの名無しさん
18/08/25 22:29:22.06 t7aLMQyu.net
>>154
動きませんでした
嘘をつかれては困ります

162:デフォルトの名無しさん
18/08/25 22:29:54.81 KMExyDFm.net
ワークシートの名前を変更するにはどうしますか?
VBAでどうやるのか聞き返されたら答えるまでですけど
PowerShellではどうやるのか教えてください

163:デフォルトの名無しさん
18/08/25 22:30:42.72 KMExyDFm.net
>>155
だったらPowerShellのプログラムも僕の環境ではピクリともしません
それを嘘つきというならPowerShellの方が嘘つきです

164:デフォルトの名無しさん
18/08/25 22:31:13.63 KMExyDFm.net
>>156
に答えてください

165:デフォルトの名無しさん
18/08/25 22:38:12.10 t7aLMQyu.net
>>156
$app = New-Object -ComObject Excel.Application
$book = $app.Workbooks.Open($targetFilePath)
$book.Worksheets($targetSheetIndex).Name = "NewName"
$book.Close($true)
$app.Quit()
こちらは答えましたよ
あなたもはぐらかさないで真面目に>>79に答えてください

166:デフォルトの名無しさん
18/08/25 22:41:51.71 KMExyDFm.net
>>159
VBAではこうです
ActiveSheet.Name = "合計"
ワンライナーで一撃です
>>79に答えます
VBAではこう書きます
Files = ReadCsvFiles("*.csv")
Data = ReadCalcPower(Files)
Sort Data, "desc"
ExportExcel Data

167:デフォルトの名無しさん
18/08/25 22:45:42.55 t7aLMQyu.net
>>160
あなたのコードには致命的な欠陥があります
対象とするブックを手作業で開かなければならなりません
これでは自動化を検討する程度の数のブックを相手にした時に間違いなく腱鞘炎になってしまいます
>>79への解答は不適切です
このコードには未定義の関数・サブルーチンが含まれているため動作しません
関数・サブルーチン化するならその実装も解答に含めて下さい

168:デフォルトの名無しさん
18/08/25 22:46:32.76 Jrsn7acQ.net
確かに、なんでもワンライナーで出来るかのような表現を使うよね、Powershellユーザー。
多分、そうは書いてない、思い込みだろうってレス着くと思うけど。

169:デフォルトの名無しさん
18/08/25 22:51:17.33 KMExyDFm.net
PowerShellとCOMってGCの方式が違いますよね
一方は世代別GC、一方は参照カウント
GC方式の違うものを混ぜるとメモリリークしますよ
>>159はメモリリークしますよ

170:デフォルトの名無しさん
18/08/25 22:51:56.89 Jrsn7acQ.net
>>159のソースはそのままで動くの?

171:デフォルトの名無しさん
18/08/25 22:52:25.25 t7aLMQyu.net
>>162
あなたの主張はデタラメです
パワーシェルはワンライナーであらゆる処理を書けるほど表現力が高く、基本ライブラリが充実していることは確かに事実ですが
だからと言ってなんでもワンライナーで書くわけではありません
パワーシェルのユーザーは
1つのコマンドで1つの仕事を上手くこなす
コマンドを組み合わせて大きな複雑な仕事をこなす
というシェルプログラミングの良い習慣をもちろん知っています
論より証拠ということで>>143のリンクをみてください

172:デフォルトの名無しさん
18/08/25 22:53:00.08 t7aLMQyu.net
>>163
しませんよ
リークするなら証拠を提示してMicrosoftに報告してください

173:デフォルトの名無しさん
18/08/25 22:53:11.40 KMExyDFm.net
>>161
いま開いてるExcelのシート名変えるってことなら問題ないですよね
じゃあそれで、むしろそれで
現在開いてるExcelのシート名をPowerShellで変えるにはどうしますか?

174:デフォルトの名無しさん
18/08/25 22:53:42.68 r5O9PJUC.net
>>99 > 呼吸することを自慢する人間はいない

>>129 > 例えば隣に座ってるおじさんが呼吸してなかったら驚くし声をかけるだろう?
こんな脈絡のないことを言い出してて驚くわ
まあ気味悪いから対面してたら放置するけど w

175:デフォルトの名無しさん
18/08/25 22:55:26.08 KMExyDFm.net
>>166
マイクロソフトも認識してます
だから.NETにはReleaseComObjectという
COMのためのメソッドが用意されてます
あなたのコードにはメモリリークのバグが存在します、僕はあなたにそれを報告します

176:デフォルトの名無しさん
18/08/25 22:59:43.30 t7aLMQyu.net
>>167
[Runtime.Interopservices.Marshal]::GetActiveObject('Excel.Application').ActiveSheet.Name = "NewName"
逆に聞きますが、エクセルが起動していない時に、指定のブックの指定のシートの名前を変えるVBAコードは、どうやって書けばいいのですか?

177:デフォルトの名無しさん
18/08/25 23:01:55.95 KMExyDFm.net
>>170
まずExcelを起動します
開発のボタンを押してマクロエディタを起動します
そしてワンライナーの一撃コードを実行します
これがVBAの正規の手順です

178:デフォルトの名無しさん
18/08/25 23:03:45.08 KMExyDFm.net
[Runtime.Interopservices.Marshal]::GetActiveObject('Excel.Application').ActiveSheet.Name
これ暗記してるん? すごい

179:デフォルトの名無しさん
18/08/25 23:04:21.09 KMExyDFm.net
メモリリークしてますけど

180:デフォルトの名無しさん
18/08/25 23:04:53.64 3sYR2W/i.net
便乗で聞きたいんだけど
powershellでVBAの定数はそのまま使えるの?定数をCOMか何かからロードしたりするの?
あと名前付き引数とかどう処理するの?

181:デフォルトの名無しさん
18/08/25 23:05:39.78 t7aLMQyu.net
>>169
ReleaseComObjectは速やかに参照カウントを減らすためのものです
それを実行しなくてもGCやプロセス終了時にリソースが解放され参照カウントも適切に処理されるので安心してください
明示的にReleaseComObjectを呼ばなければリークする、などという危険な状態を主力商品の1つである.NET上で放置するほどMicrosoftは怠惰ではありません

182:デフォルトの名無しさん
18/08/25 23:06:53.30 Jrsn7acQ.net
>>169
思った通りのレスですねw

183:デフォルトの名無しさん
18/08/25 23:07:44.56 t7aLMQyu.net
>>171
それでは手間が多すぎます
おそらく手作業でシート名をクリックして名前を入力する方が早いでしょう

184:デフォルトの名無しさん
18/08/25 23:09:52.00 t7aLMQyu.net
>>173
証拠の提示をお願いします
メモリリークの場合最低でも次の3つは欲しいですね
再現性のあるメモリリークを起こすコード
メモリを測定するコード
あなたの環境で測定したデータを分析したレポート

185:デフォルトの名無しさん
18/08/25 23:10:23.46 KMExyDFm.net
>>175
参照カウントじゃないから参照なくなってもGCが動くことが保証されないですよ
プロセスがすぐ終了するかも仕様次第ですし、博打プログラミングですよ
GCの方式が違うからこれは技術的にどうしようもないんですよ
怠惰ではないです、むしろマイクロソフトは頑張ってる方ですよ
実装者の知識と努力に期待せざるを得ないのは宿命です

186:デフォルトの名無しさん
18/08/25 23:12:21.64 KMExyDFm.net
>>177
こう考えてください、VBAを書くときExcelは起動してるんです
マクロエディタも起動してるんです、手間なんて何もありません
手作業では大変なことを行おうとしてるさなかのシート名変更ということですね

187:デフォルトの名無しさん
18/08/25 23:14:42.41 KMExyDFm.net
>>178
GC方式が違う、それが証拠です
PowerShellにデストラクタが存在しないことが
GC方式が違うことの証拠です
GC方式とソースコードからメモリリークは明らかです
明らかなものに調査はそれ以上の調査は必要ありません

188:デフォルトの名無しさん
18/08/25 23:14:59.37 t7aLMQyu.net
>>179
すぐには回収されないだけとリークするの間には深い溝があります
遅くともある時点までには解放されることがわかっているわけですから、博打でもなんでもありません
.NETにはそれをコントロールする術も用意されています

189:デフォルトの名無しさん
18/08/25 23:17:12.93 KMExyDFm.net
>>182
コントロール術が用意されてるならそれを使ってコードを書いてくださいよ
解放されることはわかりませんよ、.NETでGCが行われることは保証されません
.NETにはデストラクタがないでしょう? それが証拠です

190:デフォルトの名無しさん
18/08/25 23:19:11.39 t7aLMQyu.net
>>180
いいえ
残念ですが起動していないことの方が多いでしょう
もし起動していたとしてもシート名を直接変える方がマシです

191:デフォルトの名無しさん
18/08/25 23:20:33.06 7hA7VMUm.net
excelのマクロの効率的な書き方について相談できるサイトってどこかにある?仕事の話なのでこういうところに公開することはできないので…

192:デフォルトの名無しさん
18/08/25 23:22:33.22 t7aLMQyu.net
>>181
支離滅裂で全く明らかではありません
GCでインスタンスが回収されると自動的に参照カウントが適切に処理されます
したがって何もせずともリークは起こりません
回収が少し遅れるだけです

193:デフォルトの名無しさん
18/08/25 23:24:33.26 Jrsn7acQ.net
>>184
Excel VBAを実行するのにExcelファイルが開いてない??
支離滅裂ですね。

194:デフォルトの名無しさん
18/08/25 23:25:30.09 t7aLMQyu.net
>>183
[GC]::Collect()
CLRではデストラクタではなくファイナライザがサポートされています
ご安心ください

195:デフォルトの名無しさん
18/08/25 23:25:42.27 KMExyDFm.net
>>185
マイクロソフトのフォーラムとかどうだろ
Technet フォーラム
URLリンク(social.technet.microsoft.com)

196:デフォルトの名無しさん
18/08/25 23:26:47.14 KMExyDFm.net
>>188
ドトネトーは世代別GCなので1回実行しても回収される保証はないですよ

197:デフォルトの名無しさん
18/08/25 23:29:32.44 t7aLMQyu.net
>>187
あるブックのあるシート名を変えたいと思った時にエクセルが都合よく開いているとは限りません

198:デフォルトの名無しさん
18/08/25 23:31:35.44 KMExyDFm.net
>>188
Object.Finalize メソッド (System)
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
| ガベージ コレクションは非決定的であるため、ガベージ コレクターが終了処理を実行すると正確にわかっていません。
| リソースを解放する、すぐにこともできますを実装する、 dispose パターンとIDisposableインターフェイスです。
マイクロソフトも半分支離滅裂ですがファイナライザの使用が非推奨なことが読み取れます
IDisposableインターフェースが用意されてるくらいです

199:デフォルトの名無しさん
18/08/25 23:33:01.95 t7aLMQyu.net
>>190
引数なしのCollectはすべてのジェネレーションのガベージコレクションを直ちに強制実行します

200:デフォルトの名無しさん
18/08/25 23:34:23.56 KMExyDFm.net
>>193
勉強になります

201:デフォルトの名無しさん
18/08/25 23:35:38.63 Jrsn7acQ.net
>>191
Excel VBAを実行するのだからExcel ファイルは開いてますよ。
指定のファイルが開いてないってことを言いたいの?
その場合の処理はあなたのPower shellのコードと大差ないけど。

202:デフォルトの名無しさん
18/08/25 23:35:49.52 KMExyDFm.net
でもそれを呼ぶ前に全部のメモリ参照をなくす必要があります
それってできますか? PowerShellの変数スコープは変態ですから
事実上不可能です

203:デフォルトの名無しさん
18/08/25 23:40:52.15 t7aLMQyu.net
>>192
MSDNの翻訳が酷いことは有名なのでそれは我慢しましょう
リソース解放の時期をコントロールしたいなら決定的なIDisposableを使ってください
決定的でなくても問題がないならIDisposableに頼る必要はありません
スクリプトの利用形態から考えるとプロセスの寿命は非常に短くなります
これはエクセルインスタンスが本当に必要なくなった瞬間とプロセスの終了が時間的にほとんど離れることがないということです
このような場合では決定的な解放にこだわらなくても問題にはなりません

204:デフォルトの名無しさん
18/08/25 23:45:22.40 t7aLMQyu.net
>>195
私の書いたコードでは指定のブックを開く必要がありません

205:デフォルトの名無しさん
18/08/25 23:47:08.86 KMExyDFm.net
>>197
そうとも限らないと思います
スクリプトを使うということは手作業での作業が煩わしく
それを効率化したいという欲求があるためです
スクリプトを書くとき、その時は常に手作業を躊躇する程の事態が発生している
状況と考えるべきで、ある処理がメモリを使んで離さなくて別の処理が
完了できないという経験を僕は山ほど経験してきました
メモリ管理を甘く見ると痛い目を見ます痛い目を見ます

206:デフォルトの名無しさん
18/08/25 23:47:54.93 0r5h6/lL.net
パワー系池沼シェル

207:デフォルトの名無しさん
18/08/25 23:52:33.06 KMExyDFm.net
>>198
パワーシェルのスクリプトを作成して
コマンドプロンプトを起動して
コマンドを入力する必要があるじゃないですか
その時間使ってExcelを起動しましょう
VBAなら一撃です

208:デフォルトの名無しさん
18/08/25 23:54:08.14 t7aLMQyu.net
>>196
処理を適切に構造化して変数のスコープを無闇に伸ばさなければ、自然と不要な変数の参照は辿れなくなります
そして先ほども書いたようにスクリプトはプロセス全体の寿命も短くなりやすいので
変数のスコープはそれほど問題にはなりません
どうしても変数をクリアしたいならClear-Variableというコマンドレットがあります
個人的に使う機会がないコマンドレットですがスコープとワイルドカードを指定してまとめて変数を消去でるそうです

209:デフォルトの名無しさん
18/08/25 23:55:26.38 Jrsn7acQ.net
>>198
>>156
$app = New-Object -ComObject Excel.Application
$book = $app.Workbooks.Open($targetFilePath)
$book.Worksheets($targetSheetIndex).Name = "NewName"
$book.Close($true)
$app.Quit()
ファイル開いてるけど、頭おかしいの?

210:デフォルトの名無しさん
18/08/26 00:02:52.04 MAEGr9r4.net
>>199
シビアなリソース管理が必要ならその時に適切なコードを書けばいいでしょう
なにもすべてのスクリプトを怠惰に書けと強制しているわけではな


211:いのですから ですがほとんどの日常作業でそこまでシビアなリソース管理が要求されることはありません それとリソースの不足は非決定的なリソース解放よりも非効率的なアルゴリズムが原因で発生することが多いということは知っておいた方がいいでしょう



212:デフォルトの名無しさん
18/08/26 00:05:13.99 MAEGr9r4.net
>>201
あなたの書いたコードは名前を変えたいと思うたびにブックを開かなければなりません
シェルを1度起動してパラメータを変えるだけとは訳が違います

213:デフォルトの名無しさん
18/08/26 00:05:54.18 MAEGr9r4.net
>>203
開いているのはプログラムです
手作業で開くのとは全く意味合いが異なります

214:デフォルトの名無しさん
18/08/26 00:07:41.89 MAEGr9r4.net
というか話を戻しますが>>79への解答はまだですか?
どうやら関係ないPowerShellの質問を繰り返して話をそらして逃げようとしているようですが忘れていませんよ

215:デフォルトの名無しさん
18/08/26 00:12:16.95 IHxJX3F+.net
>>207
失礼な、僕は逃げも隠れもしません
>>79に対する解答をお示しします、ご査収ください
Files = ReadCsvFiles("*.csv")
Data = ReadCalcPower(Files)
Sort Data, "desc"
ExportExcel Data

216:デフォルトの名無しさん
18/08/26 00:18:26.74 IHxJX3F+.net
>>204
アルゴリズムが大事なのは知ってますが
スクリプトでExcelを操作するときには計算量を気にしなければ
いけないほどのアルゴリズムを使うことはありません
やることはせいぜいシートの名前を変えて
コピーして集計して並べるくらいでしょう
問題はリソースリークなんです、関数を作りまくって
GCを呼びまくりますか? 僕の目にはそれは狂気と映ります

217:デフォルトの名無しさん
18/08/26 00:19:56.82 IHxJX3F+.net
>>205
VBAでブックを開きたくなりましたか? 教えましょう
Workbooks.Open "C:\Book1.xlsx"
一撃です
VBAは一撃です

218:デフォルトの名無しさん
18/08/26 01:39:01.53 LgI1E3BQ.net
プロセス終了で必ず開放するんだから必要ならそういうスクリプト書けばいいんじゃないの
powershellに限らずリーク問題を解決するためにプロセスサーバ的な構成にしたりするけど

219:デフォルトの名無しさん
18/08/26 01:45:08.66 L5No1MGJ.net
>>189
あ、想定してたのはフェイスtoフェイスで相談かメールで相談する形式なんだけれど、そういうのはやってないかなあ?

220:デフォルトの名無しさん
18/08/26 07:13:59.14 4dFHA/W/.net
>>206
えっとまさか、実行に必要なファイルを全部手で開かないといけないと思ってたの?
バカ丸出しですね。

221:デフォルトの名無しさん
18/08/26 07:57:33.17 w0D5YFHr.net
PowerShell から、Excel, IE とかは、別プロセスを起動するだけだろ?
シェルって、別プロセスを起動するものだろ?
GC のやり方の違いなんて、関係あるか?

222:デフォルトの名無しさん
18/08/26 08:36:31.73 2yDRx5ys.net
VBAの質問です
指定フォルダを再帰的に検索してファイル名が*.csvにマッチするCSVファイルを列挙
各CSVからX列, Y列, Z列を読み取ってD := (X^2 + Y^2 + Z^2)^(1 / 2)を計算する
Dの大きい順に並び替えてX, Y, Z, Dを新規Excelブックに出力して
出力した全行をテーブルレイアウトに変更する
というプログラムを作りたいのですがどのように書けばいいでしょうか?

223:デフォルトの名無しさん
18/08/26 08:56:15.82 4dFHA/W/.net
>>215
Excelに出力するって内容を足したのかw
しかもワンライナーって条件を外したのねw
その内容をPower shellのワンライナーでどうやるんだろうねw

224:デフォルトの名無しさん
18/08/26 09:04:51.11 Kp4FoNKX.net
>>216
>>79 と同じだよ?足したのは「VBAの質問です」だけ

225:デフォルトの名無しさん
18/08/26 09:05:46.45 4dFHA/W/.net
>>217
ごめんなさい、見落としてました。

226:デフォルトの名無しさん
18/08/26 10:12:36.02 H+C43I2p.net
>>208
>Data = ReadCalcPower(Files)
ここだけは許さんw

227:デフォルトの名無しさん
18/08/26 11:26:25.25 uHGK9EwR.net
頭の悪さを全力で競い合ってるスレがあると聞いて飛んできた
どれも最底辺レベルで�


228:b乙つけがたいな



229:デフォルトの名無しさん
18/08/26 11:28:33.75 umld+6tZ.net
大昔何かの雑誌でBASICで一行ゲームとかネタでやってたのを思い出した
>>90 こんなの処理系にパイプ処理があるかないかだけの違いだろ
一行記述できるかどうかは、一行に記述できる最大文字数に加えて
パイプで記述できるか、一命令の区切り記号が設定してあるかくらいで決まる
区切り記号は、C系(C#)では;か}、昔のBASICでは:があったしLISPなんかは括弧で区切ればいくらでも書ける
ワンライナーなんて対話的に使う時に一々スクリプトを立ち上げたり面倒なので使うもの
可読性が悪くなるだけなのでプログラムで絶対に使うもんじゃない
昔のPCのメモリも少なかったのでそれなりに意味はあったんだけど捨てられた
今ではせいぜいネタ、言語のの優位性とは完全に無関係

230:デフォルトの名無しさん
18/08/26 11:30:23.98 IHxJX3F+.net
Excelらしくやるならインポートが先かな
1. インポート_CSV
2. 追加_数式列
3. ソート_数式列
4. 変換_テーブルレイアウト
Excelのパワーをフル活用したいものだね

231:デフォルトの名無しさん
18/08/26 11:31:45.33 umld+6tZ.net
>>220 ほんこれ

232:デフォルトの名無しさん
18/08/26 11:35:30.27 MAEGr9r4.net
>>220
ここはVBAスレだぞ

233:デフォルトの名無しさん
18/08/26 11:45:34.46 IHxJX3F+.net
>>212
僕らの田中さんにお仕事依頼してみるとか
Office TANAKA - お問い合わせ
URLリンク(officetanaka.net)

234:デフォルトの名無しさん
18/08/26 11:49:13.32 MAEGr9r4.net
>>221
流れるようなインターフェースとかパイプラインを使ったワンライナーはモダンなプログラミングでは常識的なテクニックだよ
太古の時代から時が止まってるVBAのユーザーは知らないかもしれないけど
例えばc#のLinqやJavaのstreamなどはもろにパイプラインから影響を受けてるよね
VBAしか使わないのかもしれないけど少しは興味もって知識をアップデートしたら?

235:デフォルトの名無しさん
18/08/26 11:53:35.10 CIvHkKPl.net
>>226
VBAにそんなの必要無い
ただの事務員にStreamなんて理解できるわけないだろう

236:デフォルトの名無しさん
18/08/26 11:58:27.72 4dFHA/W/.net
>>224
低レベルの先頭切ってるのはお前なんだけどw

237:デフォルトの名無しさん
18/08/26 11:59:00.96 MAEGr9r4.net
>>227
必要あるなしでいったらなにも必要ないよ
手作業だけでも仕事はできる
そうじゃなくて、より良い方法はないか?って模索していくことが大事なんだろ
つーか事務員がstreamを理解できないなんてのも決めつけでしかない
所詮は部品の組み合わせだから、手続き型のアルゴリズムを理解するよりずっと簡単だよ
簡単で効果的だから様々な言語が挙って似たような機能を導入したんだ

238:デフォルトの名無しさん
18/08/26 12:01:32.97 MAEGr9r4.net
>>228
の割にはVBAコードが何にも出てこないよな
低レベルのPSerが息をするように簡単に書ける処理を
これだけ時間をかけて答えることができたVBAerがまだ一人もいないってちょっとレベル低すぎでしょ

239:デフォルトの名無しさん
18/08/26 12:03:51.56 4dFHA/W/.net
>>230
開いているのはプログラムです!
だってw
コードうんぬんの前の話ですね!

240:デフォルトの名無しさん
18/08/26 12:04:43.65 4dFHA/W/.net
>>230
どう言う意味だか教えて欲しいですよ!

241:デフォルトの名無しさん
18/08/26 12:09:14.50 Kp4FoNKX.net
ID:4dFHA/W/
こいつなんなの?誰にも無益なレスばかり

242:デフォルトの名無しさん
18/08/26 12:11:11.72 MAEGr9r4.net
>>231
確かに
VBAerはコードを絶対に書こうとしないからコードがどうこう以前の問題なんだよな
意見するのはかまわんけど最低限、コードを書いて実証してからにしてほしいよね
コードも書かずに意見しても、うちで修行すれば空飛べるぜー、とか豪語する真理教のおっさんと大差ない
まさに戯言になってしまう
なんでvbaerさんまずはコードを書きましょう
>>79への解答待ってます

243:デフォルトの名無しさん
18/08/26 12:13:53.71 CIvHkKPl.net
会社のPCにしかExcel入ってないから無理

244:デフォルトの名無しさん
18/08/26 12:15:34.05 NdNCtt3a.net
ユーザー系の仕事でVBAつったら、事務員のスプレッドを少し自動化したものから、業務知識鬼のベテランがプログラム ちょっとかじったものまであるけど、最近またRPAバブルで前者を移植することになった
このRPAっつー半分胡散臭いものが流行るおかげでワシらオッサンPGが食っていけるわけだが、いかんせん胡散臭い

245:デフォルトの名無しさん
18/08/26 12:16:54.34 4dFHA/W/.net
>>233
バカなPower shellユーザーを追い出したいだけ。
このスレにとっては最高に有益だと思うけど。

246:デフォルトの名無しさん
18/08/26 12:17:40.69 4dFHA/W/.net
>>234
>>231は君の書き込みの引用なんだけどw

247:デフォルトの名無しさん
18/08/26 12:27:21.24 IHxJX3F+.net
>>234
これ一個ずつやってみたらどうだろ?
VBAの実装の仕方がわからないって質問ですよね
1. インポート_CSV
2. 追加_数式列
3. ソート_数式列
4. 変換_テーブルレイアウト
自分で調べてみてそれでもわからないことが
出てきたら具体的に聞いてもらうということで

248:デフォルトの名無しさん
18/08/26 12:27:42.40 Kp4FoNKX.net
無能な味方が無自覚にバックファイアしてるようにしか見えん

249:デフォルトの名無しさん
18/08/26 12:30:12.52 IHxJX3F+.net
他人を値踏みするスレじゃないですし
他人と自分を比較して自信をつけるスレでもないと思うんですよ
Excel VBAでわからないことがあったら質問するスレということで
ご理解賜りたいと思う次第でございます

250:デフォルトの名無しさん
18/08/26 12:31:08.57 IHxJX3F+.net
>>240
議論に敵も味方も勝ちも負けも良いも悪いもないと思うんですよ
みんなで意見を出し合ってVBAパワーを高め合いましょう

251:デフォルトの名無しさん
18/08/26 12:38:03.33 gb73y82y.net
>>536
dbからcsvでブッコ抜いた、300万件程度のレコードのなかから
~って条件に該当するレコードをExcelで抜いてくださいと言われたことがあって困惑した
Excelじゃ無理だといったら「なんで出来ないのか、PGなんだからできるでしょ」みたいな言い方された
1週間あげるから、1週間でExcelであげて欲しいと・・
結局なんとか、Excelじゃなくてもいいと説得してその日のうちに
仕上げたら「早すぎるのじゃないか」「正確性が心配だ」と文句言われた

ことを思い出した

252:デフォルトの名無しさん
18/08/26 12:40:55.31 4ngh3oqJ.net
だからなんで読んだ瞬間に組めると思うようなアホ臭い処理で比較してるんだよ。
頭悪いなあ。
そんなもんで比較してもVBAの優位性は変わらんぞ。
Excel上から実行出来るとか1ファイルで済むとか。
例えばフローレイアウトを使うことは無いと思うが、あれならまだ分かる。
あれはVBAじゃ無理だと思うからな。
見て組めると思うようなものをわざわざこんな所で披露するのはアホだと思う。
そんなもんは仕事でやれ。
そんなくだらないことをする時間がもったいない。

253:デフォルトの名無しさん
18/08/26 12:42:38.16 Kp4FoNKX.net
今のExcelって100万行/シートだから3つか4つのシートに分割して読み込んで処理すれば不可能ではないよな、65000行時代なら考えたくないが

254:デフォルトの名無しさん
18/08/26 12:43:02.28 L5No1MGJ.net
>>225
マクロの作成の依頼は無いみたいね。
あまりみんなこういうのやらないのかな。

255:デフォルトの名無しさん
18/08/26 12:45:59.62 MAEGr9r4.net
>>243
VBAにこだわる人ってそんなもんよ

256:デフォルトの名無しさん
18/08/26 12:46:25.60 4ngh3oqJ.net
>>243
いや、仕事でやったことあるぞ。
もっとデータ多かったと思う。
それに引っこ抜くだけじゃなくて、それで演算もしてた。
今、計算してみたらデータは26280000以上だった。
正確には分からないけど多分倍以上だな。

257:デフォルトの名無しさん
18/08/26 12:48:32.93 MAEGr9r4.net
>>244
VBAだと組むのに多大な労力がかかるからレスバトルごときではやりたくないんですよね
その気持ちわかります
これがVBAでもスラスラ短く書けるものだったらほれみたことかと言わんばかりに嬉々として解答してくれていたのでしょうね

258:デフォルトの名無しさん
18/08/26 12:52:38.54 IHxJX3F+.net
>>246
ホントだ受け付けてないんだね

259:デフォルトの名無しさん
18/08/26 12:53:11.08 IHxJX3F+.net
バトルだったのかー

260:デフォルトの名無しさん
18/08/26 12:53:15.29 4ngh3oqJ.net
1000個所以上(多分倍以上)の場所から1時間毎に取得したデータ3年分だな。
これをある時間毎に平均をとって1日に24個の平均値を作り、その最大をその日のデータとする。
で、それを3年分の日数取ってきて・・・
みたいな。

261:デフォルトの名無しさん
18/08/26 12:56:49.15 4ngh3oqJ.net
>>249
いや、スラスラとか関係ない。
5分で出来るものが20分になっても大したことない。
出来ないものは出来ないし、
何とかして頑張って出来るというものだったら5分が10日とかになる。
そういう方が問題。
解決策がみい出せるかどうかの方がよっぽど重要だよ。

262:デフォルトの名無しさん
18/08/26 12:57:52.90 IHxJX3F+.net
     /⌒ヽ
\ ⊂[(_ ^ν^)     決闘状を申し込む!
  \/ (⌒マ´
  (⌒ヽrヘJつ
    > _)、
    し' \_) ヽヾ\
          丶_n.__
           [I_ 三ヲ (
              ̄   (⌒
            ⌒Y⌒


263:デフォルトの名無しさん
18/08/26 12:59:13.59 4ngh3oqJ.net
>>249
短くスラスラ書けるようなものだったら回答しない。
他の誰かが回答するか、そいつが少し調べれば解決出来るだろうから。

264:デフォルトの名無しさん
18/08/26 13:07:54.88 TGlid3xa.net
たとえスラスラ書けてもVBAじゃ1レスに収まらないでしょ
VBAerはpastebinとかgistとかのコード共有サービスの存在も知らなそうだし

265:デフォルトの名無しさん
18/08/26 13:21:54.43 MAEGr9r4.net
>>253
いや問題だよ
>>79みたいな日常的な作業は、解決に時間使っていいような困難な課題じゃないから

266:デフォルトの名無しさん
18/08/26 13:22:28.02 MAEGr9r4.net
>>255
なら誰も答えられないってことはできないってことなんだろうな

267:デフォルトの名無しさん
18/08/26 13:29:43.99 nkjaCm6A.net
ワンライナーじゃなくてもいいけどイミディエイトウィンドウしか使っちゃいけないって趣旨ですね?

268:デフォルトの名無しさん
18/08/26 13:35:01.25 2yDRx5ys.net
>>259
もしできるならイミディエイトがいいけど
どうもVBAでは不可能って結論に落ち着きそうだから無理してイミディエイトを使わなくてもいいよ
普通にbasでもclsでも使ってください
とはいえレス分割するほど長くなると読む気がなくなるのでなるべくスマートに収めてください

269:デフォルトの名無しさん
18/08/26 13:35:33.66 Kp4FoNKX.net
>>243 よくよく考えると 1レコード分のバッファと条件一致したレコードの書き出し先さえ確保すれば
ReadLineの繰り返しで処理可能だから、レコードが何件あっても問題なさそう。
シートに取り込む必要なんてないわw
65000行時代でもできたと思うな

270:デフォルトの名無しさん
18/08/26 14:09:05.11 gniZ58wi.net
下のコードでボタンを押すたびにAの値が増えていくのですが
グローバル変数ってプログラムが終わっても残るものですか
またプログラムが終わったときに消えるにはどうしたらいいです?
Option Explicit
Dim A As Long
Sub ボタン1_Click()
A = A + 1



271:MsgBox A End Sub



272:hoge
18/08/26 14:51:46.48 A6DnlFkA.net
>>79,239
暇だから書いてみた。
素人が書いたコードだからワンライナー?ではないけど許してほしい。
[Module1]
Sub hoge()
Dim i As Long, k As Long
Dim data() As Variant
Dim cCsv As Collection
Dim csv As clsCSV
Dim fso As New FileSystemObject
Dim fn As Variant
'CSV読み込み
k = 0
Set cCsv = New Collection
For Each fn In FileFilter(ThisWorkbook.Path, "csv")
Set csv = New clsCSV
cCsv.Add csv.LoadCSV(CStr(fn))
k = k + csv.RowsCount
Next
'CSV合成・計算
ReDim data(1 To k + 1, 1 To 4)
data(1, 1) = "X": data(1, 2) = "Y": data(1, 3) = "Z": data(1, 4) = "D"
k = 1
For Each csv In cCsv
For i = 1 To csv.RowsCount
k = k + 1
data(k, 1) = csv.Table(i, "X")
data(k, 2) = csv.Table(i, "Y")
data(k, 3) = csv.Table(i, "Z")
data(k, 4) = (csv.Table(i, "X") ^ 2 + csv.Table(i, "Y") ^ 2 + csv.Table(i, "Z") ^ 2) ^ (1 / 2)
Next
Next

273:hoge
18/08/26 14:52:20.01 A6DnlFkA.net
>>263 続き
'XLSXへエクスポート
Dim WB As Workbook
Dim Sh As Worksheet
Dim Tbl As Range
Dim LO As ListObject
Set WB = Workbooks.Add
Set Sh = WB.Worksheets(1)
Set Tbl = Sh.Cells(1, 1).Resize(UBound(data, 1), UBound(data, 2))
Tbl.Value = data
Set LO = Sh.ListObjects.Add(xlSrcRange, Tbl, , xlYes)
LO.Sort.SortFields.Clear
LO.Sort.SortFields.Add Key:=LO.ListColumns("D").Range, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
LO.Sort.Apply
WB.SaveAs ThisWorkbook.Path & "\hoge.xlsx"
WB.Close False
End Sub

274:デフォルトの名無しさん
18/08/26 14:53:06.26 A6DnlFkA.net
>>264 普通は汎用モジュールを使うが自宅にないので、それっぽく再現したもの
Function FileFilter(folder As String, ext As String, Optional ret As Collection) As Collection
Dim fso As FileSystemObject
Dim fil As File
Dim fol As folder
Set fso = New FileSystemObject
If ret Is Nothing Then Set ret = New Collection
For Each fil In fso.GetFolder(folder).Files
If fil.Name Like "*" & ext Then
ret.Add fil.Path
End If
Next
For Each fol In fso.GetFolder(folder).SubFolders
Call FileFilter(fol.Path, ext, ret)
Next
Set FileFilter = ret
End Function

275:hoge
18/08/26 14:54:14.81 A6DnlFkA.net
>>265 続き[clsCsv]
Private data As Variant
Private dCol As Dictionary
Public Function LoadCSV(fn As String) As clsCSV
Dim i As Long, j As Long, k As Long
'インポート
'※CSVの仕様が書いてないから、遅いけどコレで。
With Workbooks.Open(fn)
data = .Worksheets(1).UsedRange.Value
.Close False
End With
'列情報のキャッシュ
Set dCol = New Dictionary
For i = 1 To UBound(data, 2)
dCol.Add data(1, i), i
Next
Set LoadCSV = Me
End Function
Public Property Get Table(Row As Long, Col As String) As Variant
If dCol.Exists(Col) Then
Table = data(Row + 1, dCol(Col))
Else
Err.Raise 9999
End If
End Property
Public Property Get RowsCount() As Long
RowsCount = UBound(data, 1) - 1
End Property
行数制限が辛いわ

276:デフォルトの名無しさん
18/08/26 14:54:45.29 Kp4FoNKX.net
Sub の中で宣言すりゃいい

277:267
18/08/26 14:55:49.03 Kp4FoNKX.net
>>267>>262

278:hoge
18/08/26 15:01:06.14 A6DnlFkA.net
無理に1行に押し込むより、少しづつステップ実行できる方が読みやすいし、良いのでは無いかと思うのでした。
VBAerの人頑張って最適化して?

279:デフォルトの名無しさん
18/08/26 15:32:56.80 2yDRx5ys.net
長いなぁ
これ事務員さんにメンテナンス出来る?

280:デフォルトの名無しさん
18/08/26 15:52:42.90 Kp4FoNKX.net
dim csv as clsCSV
て通るの?そんな型知らないんだが

281:デフォルトの名無しさん
18/08/26 15:56:23.14 A6DnlFkA.net
>>270
長いだけで素人にはすごく読みやすいよ。
F8で1行づつ動きを確認していって”ここだ!”ってところで追記して、実行して、違ったら矢印をちょっと前まで戻して、また追記して実行してry
って感じなので・・・。

282:デフォルトの名無しさん
18/08/26 15:57:37.27 A6DnlFkA.net
>>271
自作クラス >>266 会社に行けばちゃんとしたクラスがあるけど自宅には無いから必要なものだけ実装した。

283:デフォルトの名無しさん
18/08/26 15:58:18.95 A6DnlFkA.net
間違えた。 >>273>>271

284:デフォルトの名無しさん
18/08/26 16:04:06.82 YE41eTAF.net
ruby厨のせいでrubyが不当に貶められてるのが気に食わないのでrubyで>>79書いた
1レスに収まるこの簡潔さよ
require "csv"
require "win32ole"
path_to_folder = "."
data = Dir[path_to_folder + "/*.csv"]
.map{|path| CSV.read(path, converters: :numeric)}.flatten(1)
.sort_by{|x, y, z| (x**2 + y**2 + z**2) ** 0.5}.reverse
ws = WIN32OLE.new("Excel.Application").tap{|app| app.Visible = true}
.Workbooks.Add.Sheets[1]
cells = ws.Range(ws.Cells(1,1), ws.Cells(data.size, 3))
cells.value = data
ws.ListObjects.Add(nil, cells)

ワンライナーじゃExcel操作するのを綺麗に書けないから諦め
APIが糞ってはっきりわかんだね

285:デフォルトの名無しさん
18/08/26 16:17:18.62 YE41eTAF.net
>>79 Dも出力するのかこれ。ちょっと(1行と1文字)修正
require "csv"
require "win32ole"
path_to_folder = "."
data = Dir[path_to_folder + "/*.csv"]
.map{|path| CSV.read(path, converters: :numeric)}.flatten(1)
.map{|x, y, z| [x, y, z, (x**2 + y**2 + z**2) ** 0.5]}.sort_by(&:last).reverse
ws = WIN32OLE.new("Excel.Application").tap{|app| app.Visible = true}
.Workbooks.Add.Sheets[1]
cells = ws.Range(ws.Cells(1,1), ws.Cells(data.size, 4))
cells.value = data
ws.ListObjects.Add(nil, cells)

なおcsvライブラリは標準添付ライブラリなのでわざわざ自作クラスとか作る必要ないです

286:デフォルトの名無しさん
18/08/26 16:22:13.35 IHxJX3F+.net
>>276
Rubyの実行環境はどうやって入手するん?
事務員にできるん?

287:デフォルトの名無しさん
18/08/26 16:23:38.44 IHxJX3F+.net
Export-Excelはどうやって使うん?
事務員にできるん?

288:デフォルトの名無しさん
18/08/26 16:23:51.10 53MEpRMM.net
>>272
じゃあこのコードに
・ワイルドカードあるいは正規表現を使ったファイル列挙除外機能
・CSVファイルの文字コード指定機能
・CSVファイルのデリミタ指定機能
をサクッと追加できますか?

289:デフォルトの名無しさん
18/08/26 16:25:46.43 IHxJX3F+.net
事務員なら余裕やろな

290:デフォルトの名無しさん
18/08/26 16:26:56.43 53MEpRMM.net
>>280
コードを書かない人はプログラマでも事務員マクラーでもありません

291:デフォルトの名無しさん
18/08/26 16:29:19.59 IHxJX3F+.net
はい。

292:デフォルトの名無しさん
18/08/26 16:30:47.98 A6DnlFkA.net
>>276
自分が慣れてる書き方するために自作クラス作ったけど、作らなくても普通に書けるのでそこはツッコムところじゃないよ!
VBAは複数の二次元配列をマージする処理を自力で書かないといけないし、ソートもRangeに対して実行するか自作するかしないと出来ないので大変だとは思う。
やりたい命令がちゃんと用意されてるのはいいなぁ。

293:デフォルトの名無しさん
18/08/26 16:33:02.31 A6DnlFkA.net
>>279
だからCSV用のクラスはちゃんとしたのが会社に行かないと無いってば。
イジめないで!
ファイル列挙用もこんな即興で書いたのじゃなくて、マトモなのがある。
日常的に使うものだから特にね。。

294:デフォルトの名無しさん
18/08/26 16:37:26.33 LgI1E3BQ.net
WSHのjscript版。with_なんちゃらは適当に補完してね。jscriptにはsafearrayがないから普通に書くとセ


295:ル格納が糞遅い。 var base_path = "C:\base_path" var outxls = "DXYZ.xlsx"; var csv_list = []; with_dir(base_path, function(file) { if (!file.path.match(/\.csv$/i)) return; var i = 1; with_file(file.path, function(str){ if (i++ == 1) return; // exclude header var csv1 = str.split(","); var x = parseFloat(csv1[0]); var y = parseFloat(csv1[1]); var z = parseFloat(csv1[2]); var d = Math.sqrt(Math.pow(x,2) + Math.pow(y,2) + Math.pow(z,2)) csv_list.push([d, x, y, z]); }) }) function csv_list_sort(a, b) { return b[0] - a[0]; } with_excel(outxls, function(excel, book){ var sheet = (new Enumerator( book.Worksheets)).item(); csv_list.sort(csv_list_sort); csv_list.unshift(["D","X","Y","Z"]); for(var i = 0; i < csv_list.length; i++) { sheet.cells(i + 1, 1).value = csv_list[i][0]; sheet.cells(i + 1, 2).value = csv_list[i][1]; sheet.cells(i + 1, 3).value = csv_list[i][2]; sheet.cells(i + 1, 4).value = csv_list[i][3]; } })



296:デフォルトの名無しさん
18/08/26 16:43:57.24 Kp4FoNKX.net
イミディエイトウインドウ縛りを外して貰えれば、Excel標準実装のデータインポートメソッドで文字コードもデリミタも如何様にも設定できたるし、その上速いらしいよ下記のサンプル4ね
URLリンク(www.wat3d.com)


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch