VBA初心者でいろいろやってみたときのメモ
別ブックからのシートコピー
全シートコピーではなく、シートの一部分コピーを実施。
複数人の勤務表を集計するために最終はピボットテーブルで集計したかったため。
全シートコピーしてしまうと、いらないヘッダーまでついてきてしまうため。
'別ファイルのシートをコピー
Sub SheetCopy(FileName As String)
'コピー元
Dim WorkBase As Workbook
'コピー先
Dim WorkCopy As Workbook
'コピー先のブック名をセット
Set WorkCopy = ActiveWorkbook
Application.DisplayAlerts = False
'コピー元ファイルを読み取り専用で開く
Workbooks.Open FileName:=FileName, ReadOnly:=True, UpdateLinks:=0
'開いたコピー元をセット
Set WorkBase = Workbooks.Open(FileName)
'コピー元シート名の「勤務表」セルI13:O列の範囲をコピー
Dim baseLowRow As Long
baseLowRow = WorkBase.Worksheets("勤務表").Cells(Rows.Count, 11).End(xlUp).Row
WorkBase.Worksheets("勤務表").Range("I13:O" & baseLowRow).Copy
'コピー先シート名「データ」B2から貼り付け
Dim beforeCopyLowRow As Long
beforeCopyLowRow = WorkCopy.Worksheets("データ").Cells(Rows.Count, 2).End(xlUp).Row
WorkCopy.Worksheets("データ").Range("B" & beforeCopyLowRow + 1).PasteSpecial xlPasteFormulasAndNumberFormats
'コピーを解除
Application.CutCopyMode = False
'名前欄をコピー
WorkBase.Worksheets("勤務表").Range("AA6:AA6").Copy
'明細に名前を貼り付け
Dim afterCopyLowRow As Long
afterCopyLowRow = WorkCopy.Worksheets("データ").Cells(Rows.Count, 2).End(xlUp).Row
WorkCopy.Worksheets("データ").Range("A" & beforeCopyLowRow + 1 & ":A" & afterCopyLowRow).PasteSpecial xlPasteFormulasAndNumberFormats
'コピー元のファイルを閉じる
WorkBase.Close False
Application.DisplayAlerts = True
End Sub
不要データ削除
工数が0時間の行はピボットで集計した際に不要な列として表示されていたため、0時間の行は削除する。
'不要データ削除
Sub DeleteUnnecessaryData()
Dim lowRow As Long
Dim i As Long
lowRow = Cells(Rows.Count, 2).End(xlUp).Row
Application.ScreenUpdating = False
'E列が空白か0であれば、削除
For i = lowRow To 2 Step -1
If VarType(Cells(i, 5)) = vbEmpty Or Cells(i, 5) = 0 Then
Range(i & ":" & i).Delete
End If
Next i
Application.ScreenUpdating = True
End Sub
Author And Source
この問題について(VBA初心者でいろいろやってみたときのメモ), 我々は、より多くの情報をここで見つけました https://qiita.com/heihei15408697/items/a07199bed73ccd456745著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .