ガールズ&パンツァー

【今年最後】このキャラ(クロノトリガー)とガルパンを知ってる人 ダージリン(ガ...

投稿日:

【今年最後】このキャラ(クロノトリガー)とガルパンを知ってる人 ダージリン(ガ...

このキャラ(クロノトリガー)とガルパンを知ってる人 ダージリン(ガ...

このキャラ(クロノトリガー)とガルパンを知ってる人 ダージリン(ガールズ&パンツァー)とルッカ(クロノトリガー)本気で怒らせたらタチが悪そうなのはどっち?

クロノトリガー,パンツァー,ガールズ&パンツァー,ルッカ,人ダージリン,ゼノギアス,ダージリン Set wa = WScriptArguments
If waCount <> 1 or LCase(soGetExtensionName(wa(0))) <> "xlsx" Then
MsgBox("ドラッグ&ドロップできるのは、xlsxファイル1つだけです")
WScriptQuit
End If
f = soGetParentFolderName(wa(0))
Set ex = CreateObject("ExcelApplication")
exApplicationDisplayAlerts = False
exVisible = False
Set bk = exWorkbooksOpen(wa(0))
Set cr = soOpenTextFile(f & "\Mergecsv", 2, True)
c = - 1
For Each sh In bkWorksheets
m = shName
If Len(m) = 8 Then
m = Left(m, 4) & "/" & Mid(m, 5, 2) & "/" & Right(m, 2)
If IsDate(m) = True Then
n = shName & "csv"
c = c + 1
ReDim Preserve x(c)
x(c) = f & "\" & n
shSaveAs x(c), 6
Set cv = soOpenTextFile(x(c), 1)
a = cvReadAll
cvClose
Set cv = Nothing
a = shName & "," & a
a = Replace(a, vbCrLf, vbCrLf & shName & ",")
crWrite Left(a, Len(a) - Len(shName) - 1)
End If
End If
Next
crClose
bkClose
exQuit
Set bk = Nothing
Set ex = Nothing
Set cr = Nothing
For i = 0 to c
soDeleteFile x(i), True
Next
Set wa = Nothing
Set so = Nothing
MsgBox("Finished!")
簡単な説明です。
Option Explicit
「厳密に」というような意味ですが、気にしないでください。
Set so = CreateObject("ScriptingFileSystemObject")
ファイルやフォルダを扱えるようにしていますが、今回は特に、「csv」というテキストファイルを扱うのにも必要です。
Set wa = WScriptArguments
If waCount <> 1 or LCase(soGetExtensionName(wa(0))) <> "xlsx" Then
MsgBox("ドラッグ&ドロップできるのは、xlsxファイル1つだけです")
WScriptQuit
End If
ドラッグ&ドロップされるのを待っていて、ドラッグ&ドロップされると、その数や拡張子を調べ、想定外なら、メッセージを表示して、プログラムそのものを終了しています。
f = soGetParentFolderName(wa(0))
ドラッグ&ドロップされたファイルが存在するフォルダを調べています。
Set ex = CreateObject("ExcelApplication")
エクセルを扱えるようにしています。
exApplicationDisplayAlerts = False
exVisible = False
「上書きしますか?」などと聞いてこないように、また、エクセルを表示しません。
Set bk = exWorkbooksOpen(wa(0))
ドラッグ&ドロップしたファイルを開いています。
Set cr = soOpenTextFile(f & "\Mergecsv", 2, True)
ドラッグ&ドロップされたファイルと同じフォルダ内に「Mergecsv」というファイルを「書き込み専用」で新規作成しています。
c = - 1
ファイルカウント用変数の初期化。
For Each sh In bkWorksheets
ドラッグ&ドロップされたブックのすべてのシートを1つずつ処理。
m = shName
「m」にシート名を入れています。
If Len(m) = 8 Then
もし、そのシート名が8文字なら、
m = Left(m, 4) & "/" & Mid(m, 5, 2) & "/" & Right(m, 2)
「2018/07/01」という形を作成しています。
If IsDate(m) = True Then
そのデータが日付として評価できれば、
n = shName & "csv"
「n」に「シート名csv」という名前を作成していて代入しています。
c = c + 1
1つカウント。
ReDim Preserve x(c)
配列変数を用意。
x(c) = f & "\" & n
フォルダ+ファイル名を配列変数「x」に格納しています。
shSaveAs x(c), 6
「csv」ファイルとして、保存しています。
Set cv = soOpenTextFile(x(c), 1)
今、保存した「csv」ファイルを「読み込み専用」で開いています。
a = cvReadAll
一気に、全部、読み込んでいます。
cvClose
Set cv = Nothing
閉じています。
a = shName & "," & a
今の「csv」ファイルの1行目の頭に「シート名」+「,」を書き込んでいます。
a = Replace(a, vbCrLf, vbCrLf & shName & ",")
a,b,c
d,e,f
x,y,z
だとした場合に、改行を「シート名+改行+,」に置換しています。
結果は、
a,b,c
20180701,d,e,f
20180701,x,y,z
20180701,
となります。
もちろん「abc」の1行目は、最初に「20180701,」を書き込んでいますので、
20180701,a,b,c
20180701,d,e,f
20180701,x,y,z
20180701,
となっています。
最後の「20180701,」が多いので、書き込む際に
crWrite Left(a, Len(a) - Len(shName) - 1)
として、最後の「20180701,」を除外しています。
End If
End If
Next
を、シートの数だけ繰り返しています。
crClose
「Mergecsv」ファイルを閉じています。
bkClose
exQuit
ドラッグ&ドロップしたファイルを閉じ、エクセルそのものを終了しています。
Set bk = Nothing
Set ex = Nothing
Set cr = Nothing
「Set ~」で使った変数は、「Nothing」で解放しておきます。
For i = 0 to c
soDeleteFile x(i), True
Next
作成した「~csv」ファイルを削除しています。
Set wa = Nothing
Set so = Nothing
MsgBox("Finished!")
あとは、終了処理で、最後に「Finished!」と表示しています。
◆一シート4000行×400シートとしても、160万行になります。
最新バージョンのExcelのシート行数は100万行程度ですので、入りきりません。
ということを、既に kik********さん が指摘なさっています。
私もAccessに移行する事をお勧めします。^d^
◆> accessで集計しやすくなるかと思いますが、他に何か良いやり方が
access が視野にあるのであれば、データすべてを access へ
シート数 400 各行数 4000 ~ 5000
これは1シートでは無理?
access であれば、適宜インデックス構築すれば格段に速く・・・・
現シートを access からアクセスしても、
・インデックスが無い
・汎用的な処理が access に含まれる
・・・等々あり、
前回、回答した専用処理のものより速くなるとは思えない
うそかも・・・
私は結構 Dictionary を使いますが、インデックス構築・・・とでも
access が使えるのであれば access で・・・
と、回答しながら常に思ってます
access であれば簡単にできるのに・・・・
access 内部の処理? 各自 Excel で構築・・・・
スキルも様々で、どこか無理があると思います
※ Excel で処理した方が楽?・・・は、あって
前後関係は Excel の方が楽かと・・・・
うそかも・・・


質問タグ:sh.Name,so.OpenTextFile,シート,フィルター,so.DeleteFile x,cr.Write Left,関数

【実質】アルスラーン戦記の小説の7巻について質問です。 これは誰ですか? ほ...

アルスラーン戦記の小説の7巻について質問です。 これは誰ですか? ほ...

アルスラーン戦記の小説の7巻について質問です。 これは誰ですか?
ほかの表紙は誰かわかるんですがこれだけ分かりません。ギスカールですか?

アルスラーン戦記,ギスカール,表紙,小説,ほか,ヒルメス,仮面

-ガールズ&パンツァー
-, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Copyright© アニメ百選 , 2019 All Rights Reserved Powered by AFFINGER5.