ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part55
http://mevius.5ch.net/test/read.cgi/tech/1532236398/l50
探検
Excel VBA 質問スレ Part56
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/08/23(木) 07:25:24.98ID:Kh3D3mRW263hoge
2018/08/26(日) 14:51:46.48ID:A6DnlFkA >>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
暇だから書いてみた。
素人が書いたコードだからワンライナー?ではないけど許してほしい。
[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
264hoge
2018/08/26(日) 14:52:20.01ID:A6DnlFkA >>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
'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
265デフォルトの名無しさん
2018/08/26(日) 14:53:06.26ID:A6DnlFkA >>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
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
266hoge
2018/08/26(日) 14:54:14.81ID:A6DnlFkA >>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
行数制限が辛いわ
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
行数制限が辛いわ
267デフォルトの名無しさん
2018/08/26(日) 14:54:45.29ID:Kp4FoNKX Sub の中で宣言すりゃいい
269hoge
2018/08/26(日) 15:01:06.14ID:A6DnlFkA 無理に1行に押し込むより、少しづつステップ実行できる方が読みやすいし、良いのでは無いかと思うのでした。
VBAerの人頑張って最適化して?
VBAerの人頑張って最適化して?
270デフォルトの名無しさん
2018/08/26(日) 15:32:56.80ID:2yDRx5ys 長いなぁ
これ事務員さんにメンテナンス出来る?
これ事務員さんにメンテナンス出来る?
271デフォルトの名無しさん
2018/08/26(日) 15:52:42.90ID:Kp4FoNKX dim csv as clsCSV
て通るの?そんな型知らないんだが
て通るの?そんな型知らないんだが
272デフォルトの名無しさん
2018/08/26(日) 15:56:23.14ID:A6DnlFkA >>270
長いだけで素人にはすごく読みやすいよ。
F8で1行づつ動きを確認していって”ここだ!”ってところで追記して、実行して、違ったら矢印をちょっと前まで戻して、また追記して実行してry
って感じなので・・・。
長いだけで素人にはすごく読みやすいよ。
F8で1行づつ動きを確認していって”ここだ!”ってところで追記して、実行して、違ったら矢印をちょっと前まで戻して、また追記して実行してry
って感じなので・・・。
273デフォルトの名無しさん
2018/08/26(日) 15:57:37.27ID:A6DnlFkA274デフォルトの名無しさん
2018/08/26(日) 15:58:18.95ID:A6DnlFkA275デフォルトの名無しさん
2018/08/26(日) 16:04:06.82ID:YE41eTAF 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が糞ってはっきりわかんだね
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が糞ってはっきりわかんだね
276デフォルトの名無しさん
2018/08/26(日) 16:17:18.62ID:YE41eTAF >>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ライブラリは標準添付ライブラリなのでわざわざ自作クラスとか作る必要ないです
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ライブラリは標準添付ライブラリなのでわざわざ自作クラスとか作る必要ないです
277デフォルトの名無しさん
2018/08/26(日) 16:22:13.35ID:IHxJX3F+278デフォルトの名無しさん
2018/08/26(日) 16:23:38.44ID:IHxJX3F+ Export-Excelはどうやって使うん?
事務員にできるん?
事務員にできるん?
279デフォルトの名無しさん
2018/08/26(日) 16:23:51.10ID:53MEpRMM280デフォルトの名無しさん
2018/08/26(日) 16:25:46.43ID:IHxJX3F+ 事務員なら余裕やろな
281デフォルトの名無しさん
2018/08/26(日) 16:26:56.43ID:53MEpRMM >>280
コードを書かない人はプログラマでも事務員マクラーでもありません
コードを書かない人はプログラマでも事務員マクラーでもありません
282デフォルトの名無しさん
2018/08/26(日) 16:29:19.59ID:IHxJX3F+ はい。
283デフォルトの名無しさん
2018/08/26(日) 16:30:47.98ID:A6DnlFkA >>276
自分が慣れてる書き方するために自作クラス作ったけど、作らなくても普通に書けるのでそこはツッコムところじゃないよ!
VBAは複数の二次元配列をマージする処理を自力で書かないといけないし、ソートもRangeに対して実行するか自作するかしないと出来ないので大変だとは思う。
やりたい命令がちゃんと用意されてるのはいいなぁ。
自分が慣れてる書き方するために自作クラス作ったけど、作らなくても普通に書けるのでそこはツッコムところじゃないよ!
VBAは複数の二次元配列をマージする処理を自力で書かないといけないし、ソートもRangeに対して実行するか自作するかしないと出来ないので大変だとは思う。
やりたい命令がちゃんと用意されてるのはいいなぁ。
284デフォルトの名無しさん
2018/08/26(日) 16:33:02.31ID:A6DnlFkA285デフォルトの名無しさん
2018/08/26(日) 16:37:26.33ID:LgI1E3BQ WSHのjscript版。with_なんちゃらは適当に補完してね。jscriptにはsafearrayがないから普通に書くとセル格納が糞遅い。
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];
}
})
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];
}
})
286デフォルトの名無しさん
2018/08/26(日) 16:43:57.24ID:Kp4FoNKX イミディエイトウインドウ縛りを外して貰えれば、Excel標準実装のデータインポートメソッドで文字コードもデリミタも如何様にも設定できたるし、その上速いらしいよ下記のサンプル4ね
http://www.wat3d.com/gogo/vba-speedup/2-CSV-Uptake/
http://www.wat3d.com/gogo/vba-speedup/2-CSV-Uptake/
287デフォルトの名無しさん
2018/08/26(日) 16:44:22.05ID:2yDRx5ys いいね
プログラム板らしくなってきたじゃないか
プログラム板らしくなってきたじゃないか
288デフォルトの名無しさん
2018/08/26(日) 16:46:10.81ID:TGlid3xa >>286
サンプルじゃなくて完動するコードを貼れやカス
サンプルじゃなくて完動するコードを貼れやカス
289デフォルトの名無しさん
2018/08/26(日) 16:47:59.21ID:IHxJX3F+ >>288
お前がやるんや
お前がやるんや
290デフォルトの名無しさん
2018/08/26(日) 16:52:27.57ID:TGlid3xa >>288
めちゃくちゃ長くなるから無理
めちゃくちゃ長くなるから無理
291デフォルトの名無しさん
2018/08/26(日) 17:05:59.45ID:4dFHA/W/ >>290
自演ですか?
自演ですか?
292デフォルトの名無しさん
2018/08/26(日) 18:01:16.22ID:4ngh3oqJ >>257
バーカ。
5分が20分になっても、全く時間なんて使ってないというぐらいだ。
まともにプログラム組んだこと無いか、誰でもできるルーチンワ―クしか書いたことないんだろ。
仕事で組んでる時だって上手いアイデア出すのに長い時間使って、15分節約できたことなんて何の意味も無い。
バーカ。
5分が20分になっても、全く時間なんて使ってないというぐらいだ。
まともにプログラム組んだこと無いか、誰でもできるルーチンワ―クしか書いたことないんだろ。
仕事で組んでる時だって上手いアイデア出すのに長い時間使って、15分節約できたことなんて何の意味も無い。
293デフォルトの名無しさん
2018/08/26(日) 18:05:20.39ID:4ngh3oqJ つまらんプログラムなんで読む気もせん。
294デフォルトの名無しさん
2018/08/26(日) 18:09:10.63ID:TGlid3xa いいからコードで語れや
295デフォルトの名無しさん
2018/08/26(日) 18:10:19.11ID:53MEpRMM >>292
バーカ
アイデア出すのに時間を最大限使いたいからくだらん仕事は可及的速やかに終わらせるんだよ
VBAなんかに時間使ったら頭使う時間もエネルギーも勿体なさすぎ
これプログラマの常識よ?
世の中みんなくだらん仕事はできるだけ楽にしてクリエイティブな仕事に時間体力金を使おうって考えてんの
クソやりにくい言語で自らを縛って車輪の再発明を繰り返す変人なんて相手にもされんわ
バーカ
アイデア出すのに時間を最大限使いたいからくだらん仕事は可及的速やかに終わらせるんだよ
VBAなんかに時間使ったら頭使う時間もエネルギーも勿体なさすぎ
これプログラマの常識よ?
世の中みんなくだらん仕事はできるだけ楽にしてクリエイティブな仕事に時間体力金を使おうって考えてんの
クソやりにくい言語で自らを縛って車輪の再発明を繰り返す変人なんて相手にもされんわ
296デフォルトの名無しさん
2018/08/26(日) 18:11:36.64ID:FkpCoYCZ >>293
読まなきゃ自尊心傷付かないもんなw
読まなきゃ自尊心傷付かないもんなw
297デフォルトの名無しさん
2018/08/26(日) 18:27:20.32ID:L5No1MGJ プログラマってクリエイティブなんだ
知らなかったわ
知らなかったわ
298デフォルトの名無しさん
2018/08/26(日) 18:27:27.81ID:H+C43I2p299デフォルトの名無しさん
2018/08/26(日) 18:33:57.92ID:4ngh3oqJ >>295
だからバカなんだよ。
どうせお前はどんだけ時間使ったってアイデアなんて出ないだろう。
そういう問題だ。
そもそも、いくらだってもっと技術的に高度で、VBAでやるのは大変な例なんていくらでも有りそうなもんだが、こんな腐った例しか出せないところが、お前にアイデアなんて出せそうも無いことを物語ってる。
だからバカなんだよ。
どうせお前はどんだけ時間使ったってアイデアなんて出ないだろう。
そういう問題だ。
そもそも、いくらだってもっと技術的に高度で、VBAでやるのは大変な例なんていくらでも有りそうなもんだが、こんな腐った例しか出せないところが、お前にアイデアなんて出せそうも無いことを物語ってる。
300デフォルトの名無しさん
2018/08/26(日) 18:37:11.70ID:45EuRAle 俺はこんな簡単な仕事をやる人間じゃない(やらない)
もっと難しい仕事をやるべき人間だ(やらない)
いつまでたってもやれない
もっと難しい仕事をやるべき人間だ(やらない)
いつまでたってもやれない
301デフォルトの名無しさん
2018/08/26(日) 18:41:01.67ID:NdNCtt3a VBAでもヲタが力んでWindows APIやクラスモジュール使い倒してるのはたまに見るな
マクロで何粋がってるんだ?という
マクロで何粋がってるんだ?という
302デフォルトの名無しさん
2018/08/26(日) 18:42:42.82ID:IHxJX3F+ >>301
マクロはお嫌いですか?
マクロはお嫌いですか?
303デフォルトの名無しさん
2018/08/26(日) 18:42:43.76ID:45EuRAle >>299
こんだけ具体的なコードが出てる中でサクッとコードを晒せないお前はどんな演説しても語るに落ちてる
こんだけ具体的なコードが出てる中でサクッとコードを晒せないお前はどんな演説しても語るに落ちてる
304デフォルトの名無しさん
2018/08/26(日) 18:44:38.87ID:IHxJX3F+ >>303
コード出すんはお前や
コード出すんはお前や
305デフォルトの名無しさん
2018/08/26(日) 18:45:09.67ID:53MEpRMM306デフォルトの名無しさん
2018/08/26(日) 18:46:15.31ID:45EuRAle >>304
10レスぐらいになっちゃった
10レスぐらいになっちゃった
307デフォルトの名無しさん
2018/08/26(日) 18:46:46.98ID:IHxJX3F+ >>306
さようか
さようか
308デフォルトの名無しさん
2018/08/26(日) 18:55:51.76ID:9s/sv5PI ここで語り合うヤツはそもそもクリエイティブではないだろwww
309デフォルトの名無しさん
2018/08/26(日) 20:07:21.75ID:Gz818OEG まったく、つまらんコードでアホ丸出しだ。
俺はこういう馬鹿ではないのでちょっと面白いコードを出してやる。
結構前のことだが画面上に、あるピクセルを指示する何かを置いておきたいって、
質問(要望)があってその時にプロトタイプ的にサラッと書いたものだ。
機能的に不十分でやっつけだからその時は提示しなかった。
https://pastebin.com/W2utMzUM
俺が思うに.netが使えれば、もっと完成度が高く高機能なものを
簡単に作ることが出来るはずだ。
なんでこういうのを比較に出さないのかということだ。
俺はこういう馬鹿ではないのでちょっと面白いコードを出してやる。
結構前のことだが画面上に、あるピクセルを指示する何かを置いておきたいって、
質問(要望)があってその時にプロトタイプ的にサラッと書いたものだ。
機能的に不十分でやっつけだからその時は提示しなかった。
https://pastebin.com/W2utMzUM
俺が思うに.netが使えれば、もっと完成度が高く高機能なものを
簡単に作ることが出来るはずだ。
なんでこういうのを比較に出さないのかということだ。
310デフォルトの名無しさん
2018/08/26(日) 20:18:51.49ID:Gz818OEG それから、>>243はdbからcsvで抜いた300万件のデータと言ってるな。
これまで提示されたコードだと結構時間がかかると思うぞ。
俺の時は数千万のデータだったが最初に書いたコードではVBAで6時間ぐらい
掛かりそうだった。
で、コアを5〜6個使って1時間程度に短縮した。
プロさんは相手と交渉できるんだろ。
dbに計算させた方が明らかに速いだろう。
これまで提示されたコードだと結構時間がかかると思うぞ。
俺の時は数千万のデータだったが最初に書いたコードではVBAで6時間ぐらい
掛かりそうだった。
で、コアを5〜6個使って1時間程度に短縮した。
プロさんは相手と交渉できるんだろ。
dbに計算させた方が明らかに速いだろう。
311デフォルトの名無しさん
2018/08/26(日) 21:00:16.42ID:2yDRx5ys312デフォルトの名無しさん
2018/08/26(日) 21:05:12.64ID:YE41eTAF313デフォルトの名無しさん
2018/08/26(日) 22:18:54.66ID:4ngh3oqJ >>311
悔しいからって犬の遠吠えですか?
フォームをクラスみたいに使う方法を知らないVBAユーザーは結構いるだろう。
お前のコードのように、見た瞬間に出来ると思うようなものじゃ無いんだよ。
それに、このコードにある機能を追加しようとしたら途端に難しくなる。
C#だったら簡単な筈だからPowerShellでも難しく無いだろう。
Excelも関係ないし、VBAでやるべきじゃない例としてはお前の挙げた例なんかよりよっぽど適切だ。
悔しいからって犬の遠吠えですか?
フォームをクラスみたいに使う方法を知らないVBAユーザーは結構いるだろう。
お前のコードのように、見た瞬間に出来ると思うようなものじゃ無いんだよ。
それに、このコードにある機能を追加しようとしたら途端に難しくなる。
C#だったら簡単な筈だからPowerShellでも難しく無いだろう。
Excelも関係ないし、VBAでやるべきじゃない例としてはお前の挙げた例なんかよりよっぽど適切だ。
314デフォルトの名無しさん
2018/08/26(日) 22:25:22.52ID:4ngh3oqJ >>312
そんな誰でも出来るくせに仕事で書くようなコード書いて何が楽しいんだ?
仕事じゃねえんだからもっとおもしろいもん作れや。
俺の書いたそんなに高度じゃ無いもので、その割にアイデアが無いと出来ないようなのをな。
そんな誰でも出来るくせに仕事で書くようなコード書いて何が楽しいんだ?
仕事じゃねえんだからもっとおもしろいもん作れや。
俺の書いたそんなに高度じゃ無いもので、その割にアイデアが無いと出来ないようなのをな。
315デフォルトの名無しさん
2018/08/26(日) 22:37:30.85ID:FkpCoYCZ316デフォルトの名無しさん
2018/08/26(日) 22:41:40.76ID:IHxJX3F+ Microsoftの煽り営業やろな
317デフォルトの名無しさん
2018/08/26(日) 23:02:51.18ID:4ngh3oqJ >>315
どんなコードを書いてるかを見れば、そいつにそれが出来るレベルにあるかなんてすぐわかる。
だから俺が書く必要はないだろう。
それに、どっかのアホが既にVBAで書いてるだろ。
どうせ似たようなもんになるだけだろう。
そうだな、俺ならFileSystemObjectを使わずにブックのOpenもしない。
csv読み込んで演算するなら古いテキストのOpenで開いてやった方が速いと思う。
スピードを考えるならBinaryでひらいてStrconvを使うかな。
Dictionaryも使わないんじゃないかな。
クラスも使わない。
クラスを作るのにピッタリ来る処理とは思わないから。
まあ、だからといってアホのコ―ドが駄目かといえばそんなことは無い。
俺が見るに趣味の問題。
だが、つまらん作業に時間を使いたく無いからこんな処理のコードは書かん。
どんなコードを書いてるかを見れば、そいつにそれが出来るレベルにあるかなんてすぐわかる。
だから俺が書く必要はないだろう。
それに、どっかのアホが既にVBAで書いてるだろ。
どうせ似たようなもんになるだけだろう。
そうだな、俺ならFileSystemObjectを使わずにブックのOpenもしない。
csv読み込んで演算するなら古いテキストのOpenで開いてやった方が速いと思う。
スピードを考えるならBinaryでひらいてStrconvを使うかな。
Dictionaryも使わないんじゃないかな。
クラスも使わない。
クラスを作るのにピッタリ来る処理とは思わないから。
まあ、だからといってアホのコ―ドが駄目かといえばそんなことは無い。
俺が見るに趣味の問題。
だが、つまらん作業に時間を使いたく無いからこんな処理のコードは書かん。
318デフォルトの名無しさん
2018/08/26(日) 23:20:41.25ID:L5No1MGJ プログラマって自尊心の塊なのかってぐらい自分を守るな
319デフォルトの名無しさん
2018/08/26(日) 23:28:57.92ID:Kp4FoNKX 特殊例から一般化しないでくれ...
320デフォルトの名無しさん
2018/08/26(日) 23:31:34.90ID:53MEpRMM 一生ドーナッツ作ってろよw
321デフォルトの名無しさん
2018/08/26(日) 23:37:21.82ID:53MEpRMM 質問に答えられないからってドーナッツ作って話をはぐらかそうとする奴が居るらしいんだがマジか?
322デフォルトの名無しさん
2018/08/26(日) 23:46:44.57ID:FkpCoYCZ 俺もこの目で見るまでは信じられなかった
323デフォルトの名無しさん
2018/08/26(日) 23:49:07.52ID:4ngh3oqJ324デフォルトの名無しさん
2018/08/26(日) 23:53:29.34ID:YE41eTAF 長文書く暇はあるのに15分で書けるコード(rubyの場合。テスト用csvファイルの作成などを含む)を
何故さっさと書かないのかコレガワカラナイ
何故さっさと書かないのかコレガワカラナイ
325デフォルトの名無しさん
2018/08/26(日) 23:54:53.52ID:FkpCoYCZ >>323
そもそもコード晒さない奴が何言ってんだ
そもそもコード晒さない奴が何言ってんだ
326デフォルトの名無しさん
2018/08/27(月) 00:01:09.25ID:j6hbWA4v ドーナツの方がすごいと思ったけどね僕は
327デフォルトの名無しさん
2018/08/27(月) 00:01:41.55ID:0VuCVsh0 最高レベルのドーナッツ職人とコメディアンの二足のわらじは大変そうだなあ
そりゃコード書けなくなるわ忙しいもんな
そりゃコード書けなくなるわ忙しいもんな
328デフォルトの名無しさん
2018/08/27(月) 00:02:21.90ID:wSgDz8cK329デフォルトの名無しさん
2018/08/27(月) 00:04:33.81ID:0VuCVsh0 >>324
PowerShellのは3分で書けたぞ
PowerShellのは3分で書けたぞ
330デフォルトの名無しさん
2018/08/27(月) 00:12:00.78ID:e5NQDqcO アホが何を言って煽ろうが、書かないと宣言したもんは書かん。
それに、それなりにスキルのある奴はコードを見ればレベルもわかる筈だ。
それに、それなりにスキルのある奴はコードを見ればレベルもわかる筈だ。
331デフォルトの名無しさん
2018/08/27(月) 00:15:43.23ID:uGiTpI0n 自尊心保つの大変そうだなあ
332hoge
2018/08/27(月) 00:18:03.80ID:rO/r14zS >>323
PowerShellerなんかに褒められて、わ〜い♪褒められた〜♪と内心喜んでる俺がいる。
が、それは置いといて俺のVBAは準備含めて30分くらい。
(32行に収まらなくて調整するのに10分くらいかかったけども)
PowerShellerなんかに褒められて、わ〜い♪褒められた〜♪と内心喜んでる俺がいる。
が、それは置いといて俺のVBAは準備含めて30分くらい。
(32行に収まらなくて調整するのに10分くらいかかったけども)
333デフォルトの名無しさん
2018/08/27(月) 00:20:11.68ID:0VuCVsh0 >>326
Winapi入門的な本やサイトでありがちな初心者用の練習課題ってとこかな
Winapi入門的な本やサイトでありがちな初心者用の練習課題ってとこかな
334デフォルトの名無しさん
2018/08/27(月) 00:22:49.76ID:uGiTpI0n335デフォルトの名無しさん
2018/08/27(月) 00:25:28.83ID:e5NQDqcO >>332
君がPowerShellerじゃ無いのか?
「VBAerの人頑張って最適化して?」とか
「やりたい命令がちゃんと用意されてるのはいいなぁ。」とか書いてるし。
それとも、まんまとPowerShellerの口車に乗せられて、コード書いたんか?
君がPowerShellerじゃ無いのか?
「VBAerの人頑張って最適化して?」とか
「やりたい命令がちゃんと用意されてるのはいいなぁ。」とか書いてるし。
それとも、まんまとPowerShellerの口車に乗せられて、コード書いたんか?
336デフォルトの名無しさん
2018/08/27(月) 00:27:32.81ID:e5NQDqcO337デフォルトの名無しさん
2018/08/27(月) 00:29:24.09ID:uGiTpI0n338デフォルトの名無しさん
2018/08/27(月) 00:29:43.53ID:e5NQDqcO >>334
というか、こんなこと書くからレベルがすぐ分かる。
というか、こんなこと書くからレベルがすぐ分かる。
339デフォルトの名無しさん
2018/08/27(月) 00:31:39.75ID:e5NQDqcO340hoge
2018/08/27(月) 00:31:43.24ID:rO/r14zS >>335
生粋のVBAerだけど素人なので、仕事で使ってるVBAer任せた!ってつもりなのでした。
昼食後の昼寝前に暇だったから、誰も投稿しようとしないコードを上げたらどうなるのかなと・・・
口車に乗せられたってのは間違いないかもね!
生粋のVBAerだけど素人なので、仕事で使ってるVBAer任せた!ってつもりなのでした。
昼食後の昼寝前に暇だったから、誰も投稿しようとしないコードを上げたらどうなるのかなと・・・
口車に乗せられたってのは間違いないかもね!
341デフォルトの名無しさん
2018/08/27(月) 00:33:43.59ID:0VuCVsh0 これまでの言動から初心者レベルのWinapiを使った面白(?)アプリで有頂天になれる強い自尊心の持ち主ということはわかりました
どんな苦境でも前向きに物事を考えられるその人間性はとてもスゴイことだと思います
どんな苦境でも前向きに物事を考えられるその人間性はとてもスゴイことだと思います
342デフォルトの名無しさん
2018/08/27(月) 00:34:57.16ID:e5NQDqcO >>333
悔しいのかもしれんが、つまらんお題を出した自分が悪いんだよ。
悔しいのかもしれんが、つまらんお題を出した自分が悪いんだよ。
343デフォルトの名無しさん
2018/08/27(月) 00:36:26.47ID:rO/r14zS344デフォルトの名無しさん
2018/08/27(月) 00:39:17.06ID:e5NQDqcO 結局、PowerShellは大したことできんと証明するようなお題なんだからな。
大したことできるというお題だって提示できた筈なんだ。
それでも、VBAじゃやらない処理だという反論も出来る場合もあるだろう。
でも、俺が見てもどうにもならんからそれだったらC#でやるというものもある。
大したことできるというお題だって提示できた筈なんだ。
それでも、VBAじゃやらない処理だという反論も出来る場合もあるだろう。
でも、俺が見てもどうにもならんからそれだったらC#でやるというものもある。
345デフォルトの名無しさん
2018/08/27(月) 00:42:48.53ID:TXKBjdm9346デフォルトの名無しさん
2018/08/27(月) 00:45:26.56ID:73yCiJDJ outlookのマクロはここでええかの?
347デフォルトの名無しさん
2018/08/27(月) 00:46:16.71ID:0VuCVsh0348デフォルトの名無しさん
2018/08/27(月) 00:47:37.11ID:wSgDz8cK349デフォルトの名無しさん
2018/08/27(月) 00:49:45.70ID:0VuCVsh0350hoge
2018/08/27(月) 00:49:47.79ID:rO/r14zS351デフォルトの名無しさん
2018/08/27(月) 00:50:38.17ID:wSgDz8cK なんか派閥が形成されててキモい
自分以外は全部敵だと思え、馴れ合う君たちに価値などない
自分以外は全部敵だと思え、馴れ合う君たちに価値などない
352デフォルトの名無しさん
2018/08/27(月) 00:51:36.40ID:wSgDz8cK >>349
その箇所を引用しろハゲ、横着すんな
その箇所を引用しろハゲ、横着すんな
353デフォルトの名無しさん
2018/08/27(月) 00:55:17.33ID:rO/r14zS >>352
そこまではわかった。
ダウンロードしたフォルダで>>90を実行すると、こうなるけどどうしたらいいの
PS C:\Users\hoge\Downloads\ImportExcel-master> gci . -Recurse -Filter *.csv | % { ipcsv $_ } | % { $_ | Add-Member -Pass
Thru -MemberType NoteProperty D ([math]::sqrt([math]::pow($_.X, 2) + [math]::pow($_.Y, 2) + [math]::pow($_.Z, 2))) } | S
ort-Object D -Descending | Export-Excel -Now
Export-Excel : 用語 'Export-Excel' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前とし
て認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、
再試行してください。
発生場所 行:1 文字:221
+ ... th]::pow($_.Z, 2))) } | Sort-Object D -Descending | Export-Excel -Now
+ ~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Export-Excel:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
そこまではわかった。
ダウンロードしたフォルダで>>90を実行すると、こうなるけどどうしたらいいの
PS C:\Users\hoge\Downloads\ImportExcel-master> gci . -Recurse -Filter *.csv | % { ipcsv $_ } | % { $_ | Add-Member -Pass
Thru -MemberType NoteProperty D ([math]::sqrt([math]::pow($_.X, 2) + [math]::pow($_.Y, 2) + [math]::pow($_.Z, 2))) } | S
ort-Object D -Descending | Export-Excel -Now
Export-Excel : 用語 'Export-Excel' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前とし
て認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、
再試行してください。
発生場所 行:1 文字:221
+ ... th]::pow($_.Z, 2))) } | Sort-Object D -Descending | Export-Excel -Now
+ ~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Export-Excel:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
354デフォルトの名無しさん
2018/08/27(月) 00:56:47.08ID:wSgDz8cK >>353
あ、わかったんだナイス
あ、わかったんだナイス
355デフォルトの名無しさん
2018/08/27(月) 00:57:25.56ID:0VuCVsh0356デフォルトの名無しさん
2018/08/27(月) 00:59:49.33ID:wSgDz8cK >>355
だからお前がどうやったのかを言えや
だからお前がどうやったのかを言えや
357デフォルトの名無しさん
2018/08/27(月) 01:00:55.38ID:rO/r14zS358デフォルトの名無しさん
2018/08/27(月) 01:03:11.91ID:0VuCVsh0359デフォルトの名無しさん
2018/08/27(月) 01:05:41.25ID:YJAIAvBs 急にリンク貼るだけのコミュ障になったなコイツ
ただのクズか
ただのクズか
360デフォルトの名無しさん
2018/08/27(月) 01:17:54.97ID:kP3VgsYY そこに書かれてる
Install-Module ImportExcel -scope CurrentUser
を実行するとこんな感じだった。
---
PS C:\Users\hoge> Install-Module ImportExcel -scope CurrentUser
続行するには NuGet プロバイダーが必要です
PowerShellGet で NuGet ベースのリポジトリを操作するには、'2.8.5.201' 以降のバージョンの NuGet
プロバイダーが必要です。NuGet プロバイダーは 'C:\Program Files\PackageManagement\ProviderAssemblies' または
'C:\Users\hoge\AppData\Local\PackageManagement\ProviderAssemblies'
に配置する必要があります。'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force' を実行して NuGet
プロバイダーをインストールすることもできます。今すぐ PowerShellGet で NuGet
プロバイダーをインストールしてインポートしますか?
[Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"): y
信頼されていないリポジトリ
信頼されていないリポジトリからモジュールをインストールしようとしています。このリポジトリを信頼する場合は、Set-PSReposit
ory コマンドレットを実行して、リポジトリの InstallationPolicy の値を変更してください。'PSGallery'
からモジュールをインストールしますか?
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y
PS C:\Users\hoge>
Install-Module ImportExcel -scope CurrentUser
を実行するとこんな感じだった。
---
PS C:\Users\hoge> Install-Module ImportExcel -scope CurrentUser
続行するには NuGet プロバイダーが必要です
PowerShellGet で NuGet ベースのリポジトリを操作するには、'2.8.5.201' 以降のバージョンの NuGet
プロバイダーが必要です。NuGet プロバイダーは 'C:\Program Files\PackageManagement\ProviderAssemblies' または
'C:\Users\hoge\AppData\Local\PackageManagement\ProviderAssemblies'
に配置する必要があります。'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force' を実行して NuGet
プロバイダーをインストールすることもできます。今すぐ PowerShellGet で NuGet
プロバイダーをインストールしてインポートしますか?
[Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"): y
信頼されていないリポジトリ
信頼されていないリポジトリからモジュールをインストールしようとしています。このリポジトリを信頼する場合は、Set-PSReposit
ory コマンドレットを実行して、リポジトリの InstallationPolicy の値を変更してください。'PSGallery'
からモジュールをインストールしますか?
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y
PS C:\Users\hoge>
361デフォルトの名無しさん
2018/08/27(月) 01:20:34.40ID:KKIFZoE3 Installationぐらい読めよ
362デフォルトの名無しさん
2018/08/27(月) 01:20:51.76ID:kP3VgsYY Export-Excel.ps1のコードなげえなあ
https://github.com/dfinke/ImportExcel/blob/master/Export-Excel.ps1
https://github.com/dfinke/ImportExcel/blob/master/Export-Excel.ps1
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- テレビ朝日 本社から男性が転落し死亡。関連会社社員か 当たった通行人が左肩軽傷 [阿弥陀ヶ峰★]
- テレビ朝日本社から20~30代の関連会社社員とみられる男性が転落し死亡 六本木けやき坂通りの通行人にはけが人なし [少考さん★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★3 [少考さん★]
- 【サッカー】日本代表、FIFAランキング“4位”の強豪イングランドとの対戦が正式決定! 来年3月に聖地ウェンブリーで激突へ [久太郎★]
- 日本、G7への中国招待を懸念 議長国フランスに慎重な対応要請 [どどん★]
- 歳を取ったらゲーム出来なくなる問題、解決方法なし
- 【悲報】ジャップ、日中戦争に賛成が5割弱...軍歌の音が聞こえる... [856698234]
- ハートチップルの袋の柄のパンツとかカーテン
- ひまだねー
- 『エアジョーダンのゲン』にありがちなこと
- トンカツに塩つけて食う奴www
