作業時間計算エクセル

2017–09–08 (Fri) 00:00
毎日使っている作業時間計算表を公開致します。

作業時間計算

無題

毎週日曜日に作業時間の一週間合計が出ます。
今月は作業時間がやや長いですね。
大体毎月同じぐらいですが……。

ワークシートのコピーはどれが一番早いか

2017–09–01 (Fri) 13:28
マクロでワークシートのコピーはどれが一番早いか気になったので比べてみました。

サブプロシージャを使用する方法
Dim sn As String
Dim i As Long
Dim aWs As worksheet
Option Explicit
Sub WsCopyP(ByVal after As worksheet)
Dim NewSheet As worksheet
Set NewSheet = ActiveWorkbook.Worksheets.Add(after:=after)
NewSheet.Activate
ActiveSheet.Paste
ActiveSheet.Name = sn & "(" & i & ")"
End Sub

Sub サブプロシージャ()
maisu = Application.InputBox(Prompt:="枚数を入力してください", Type:=1)
Dim sss As Single
sss = Timer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual

Set aWs = ActiveWorkbook.ActiveSheet
aWs.Cells.Select
Selection.Copy

sn = ActiveSheet.Name
For i = 1 To maisu
Call WsCopyP(after:=Worksheets(Worksheets.Count))
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
MsgBox Round(Timer - sss, 2)
End Sub


Sub 単純にワークシートのコピーを繰り返す()
maisu = Application.InputBox(Prompt:="枚数を入力してください", Type:=1)
Dim sss As Single
sss = Timer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim sheet As worksheet
Set sheet = ActiveSheet
For i = 1 To maisu
sheet.Copy after:=sheet
Next i
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
MsgBox Round(Timer - sss, 2)
End Sub


Sub シートを作成して貼り付ける()
maisu = Application.InputBox(Prompt:="枚数を入力してください", Type:=1)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
Dim sheet As worksheet
Set sheet = ActiveSheet
sheet.Cells.Copy
For i = 1 To maisu
Worksheets.Add after:=Worksheets(ActiveSheet.Name)
ActiveSheet.Name = sheet.Name & "(" & i & ")"
Worksheets(sheet.Name & "(" & i & ")").Paste
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
End Sub

3つを単純に比較(ワークシートを50枚コピーし、その時間を比較する)
シートを作成してから貼り付けるものが一番早い事が判明した。
シートをコピーして追加するものは早そうに感じたが意外と遅かった。
ただ、枚程度のコピーなら、そこまで遅くは感じない。
サブプロシージャを使用するものは思ったほど早くは無かった……。


比較画像
無題4

CSVいろいろ

2017–08–31 (Thu) 18:20
クリップボードを使用してCSVのデータを取ってくる方法です。
場合によっては配列を使用するよりも早いです。

Sub Clipboard CSV()
Application.ScreenUpdating = False

aw = ActiveSheet.Name
Dim aWb As Workbook
Set aWb = ActiveWorkbook
Dim Clipboard As New DataObject

With CreateObject("Scripting.FileSystemObject")
With .GetFile(CSVファイルを指定).OpenAsTextStream
csv = Replace(.ReadAll, ",", Chr(9))
With Clipboard
.SetText csv
.PutInClipboard 'クリップボードに格納
End With
.Close
End With
End With
ActiveSheet.Range("a1").Select
ActiveSheet.Paste

Application.ScreenUpdating = True
End Sub

1359*7 (9513セル)使用のCSVをコピーしたところ、0.02秒程度こちらの方が早かった。
ただ、データが増えると遅くなることが分かった。

無題-2

MB越えるサイズの場合はこの方法が一番良い事が判明した。
(5000*125) データ625000

Sub Opentext CSV()
Application.ScreenUpdating = False

Dim aWb As Workbook
Set aWb = ActiveWorkbook
Dim aWs As activeworkbook
Set aWs = ActiveSheet
aWs = ActiveSheet.Name
Dim TextPath As String

TextPath = "読み込むCSVをtxtファイルにする"
Workbooks.OpenText Filename:=TextPath, _
DataType:=xlDelimited, _
Tab:=True, _
Semicolon:=False, _
Comma:=True, _
Space:=False, _
Other:=True, _
Otherchar:="/"

ActiveWorkbook.Sheets(1).Cells.Copy aWs.Range("A1")
ActiveWorkbook.Close False

Application.ScreenUpdating = True
End sub

CSV を読み込む

2017–08–27 (Sun) 18:47
Sub CSVを使用する()
'CSVを配列に代入します

Dim b_buf() As Byte, s_buf As String
Const TARGET As String = "C:\Users\ownar\Desktop\Book1.csv"

Open TARGET For Binary As #1
ReDim b_buf(1 To LOF(1))
Get #1, , b_buf
s_buf = StrConv(b_buf, vbUnicode)
Dim nyuryoku As Variant
nyuryoku = Split(s_buf, vbCrLf)
kazu = Split(nyuryoku(0), ",")
Dim nyuryoku2() As String
ReDim nyuryoku2(UBound(nyuryoku), UBound(kazu))
Close #1

For j = 1 To UBound(nyuryoku)
kazu = Split(nyuryoku(j), ",")
For i = 1 To UBound(kazu)
nyuryoku2(j, i) = kazu(i)
Next
Next

End Sub

CSVから配列に代入してくれます。
今までExcelファイルを開いていたものをいくつかcsvに変更したら凄く処理速度が速くなりました!
一つのファイルでも0.5~1秒くらいは余裕で短縮できます♪

藤田麻衣子さんのライブに行きたい。。。

和暦曜日有り

2017–08–15 (Tue) 21:04
和暦曜日有りの単語登録です。
単語登録一杯作りました。

和暦曜日有り.txt

へ118平成1年1月8日(日)独立語
へ119平成1年1月9日(月)独立語
へ1110平成1年1月10日(火)独立語
へ1111平成1年1月11日(水)独立語
へ1112平成1年1月12日(木)独立語
へ1113平成1年1月13日(金)独立語
へ1114平成1年1月14日(土)独立語
へ1115平成1年1月15日(日)独立語
へ1116平成1年1月16日(月)独立語
へ1117平成1年1月17日(火)独立語
へ1118平成1年1月18日(水)独立語
へ1119平成1年1月19日(木)独立語
へ1120平成1年1月20日(金)独立語
へ1121平成1年1月21日(土)独立語
へ1122平成1年1月22日(日)独立語
へ1123平成1年1月23日(月)独立語
へ1124平成1年1月24日(火)独立語
へ1125平成1年1月25日(水)独立語
へ1126平成1年1月26日(木)独立語
へ1127平成1年1月27日(金)独立語
へ1128平成1年1月28日(土)独立語
へ1129平成1年1月29日(日)独立語
へ1130平成1年1月30日(月)独立語
へ1131平成1年1月31日(火)独立語


次からは趣味の単語登録作ります~。
お金にもなるし!!!

« 前へ | HOME |  次へ »

プロフィール

あゆみ

Author:あゆみ
FC2ブログへようこそ!

最新記事

最新コメント

フリーエリア

月別アーカイブ

カテゴリ

ブロとも申請フォーム

検索フォーム

RSSリンクの表示

リンク