情報集約書
マクロ機能付き版ダウンロード
マクロなし簡易版ダウンロード
※セルサイズ9
シートは以下
・★
・勤怠
・WBS
・カレンダー
・祝日
・archive
・legacy
[archive]
プロファイル-業務情報、アーキテクチャ
サルベージ-スニペットkey、スニペットクエリ
レポート-調査結果
[legacy]
task表で使用して、終了した作業ブックの置き場
↑リンクなど好きに登録。
情報集約書のショトカをデスクトップにおいて、ショートカットキーを登録
最低限マクロ.java
Private Const TITLE_SEARCH_SHAPE_TEXT As String = "タイトルを入力
Sub whiteコピー()"
'
' whiteコピー Macro
'
'
Dim titleWord As String
titleWord = InputBox("タイトルを入力", TITLE_SEARCH_SHAPE_TEXT)
ActiveSheet.Shapes.Range(Array("グループ化 1")).Visible = msoTrue
ActiveSheet.Shapes.Range(Array("title")).TextFrame.Characters.Text = titleWord
ActiveSheet.Shapes.Range(Array("Group 1")).Select
Selection.Copy
ActiveSheet.Paste
ActiveSheet.Shapes.Range(Array("グループ化 1")).Visible = msoFalse
ActiveSheet.Range("A1").Activate
End Sub
タスク表のシートに保存するマクロ.java
' TODO ソートを記録してマクロ登録
Sub リサイズ()
'
' リサイズ Macro
'
'
Selection.Rows.AutoFit
End Sub
Sub whiteコピー()
'
' whiteコピー Macro
'
'
ActiveSheet.Shapes.Range(Array("グループ化 1")).Visible = msoTrue
ActiveSheet.Shapes.Range(Array("Group 1")).Select
Selection.Copy
ActiveSheet.Paste
ActiveSheet.Shapes.Range(Array("グループ化 1")).Visible = msoFalse
ActiveSheet.Range("A1").Activate
End Sub
Sub メモ()
'
' メモMacro
'
'
With ActiveSheet
Set o = .OLEObjects("memo")
o.Verb xlVerbOpen
Application.WindowState = xlMaximized
End With
End Sub
Sub 保存して閉じる()
'
' 保存して閉じる Macro
'
'
If Workbooks.Count > 1 Then
ThisWorkbook.Close SaveChanges:=True
Else
ThisWorkbook.Save
Application.Quit
End If
End Sub
ブックに登録するマクロ(ページ切り替え、図形文字検索、Excel埋込み、Excelエクスポート).java
Option Explicit
'ポップアップの名前
Private Const TITLE_SEARCH_SHAPE_TEXT As String = "オートシェイプ検索"
'@brief : 文字検索関数
'@return : なし
Public Sub searchShapeText()
Dim sheet As Worksheet 'ワークシート
Dim searchWord As String '検索ワード
'検索ワード入力ポップアップを表示する
searchWord = InputBox("検索したいワードを入力して下さい", TITLE_SEARCH_SHAPE_TEXT)
If searchWord = "" Then
GoTo ExitSub
End If
'対象のワークシートを現在開いているシートとする
Set sheet = ActiveSheet
'検索ワードが見つからない場合に出力
If Not (searchReplaceShapeText(sheet.Shapes, searchWord)) Then
MsgBox "「" & searchWord & "」が見つかりません", vbExclamation, TITLE_SEARCH_SHAPE_TEXT
End If
ExitSub:
End Sub
'@brief : 図形内検索置換関数
'@param : worksheetObject Worksheetオブジェクト
'@param : searchWord 検索文字
'@return: searchReplaceShapeText 処理継続判定
Private Function searchReplaceShapeText(ByVal worksheetObject As Object, ByVal searchWord As String) As Boolean
Dim targetShape As Shape 'ワークシート内の図形
Dim shapeText As String '図形内の文字
Dim discoveryWord As Long '検索ワード発見位置
Dim replaceWord As String '置換後の文字
Dim replacePopupMsg As String '置換ポップアップメッセージ
Dim ret As Boolean '処理継続判定
Dim searchWordCnt As Long: searchWordCnt = 1 '図形内検索ワード数
ret = False
'ワークシートに図形が存在する間ループ
For Each targetShape In worksheetObject
'クループ化された図形の時
If (targetShape.Type = msoGroup) Then
If (searchReplaceShapeText(targetShape.GroupItems, searchWord)) Then
ret = True
GoTo ExitFunction
End If
'コメントの時
ElseIf (targetShape.Type = msoComment) Then
GoTo CONTINUE
Else
'指定したテキストフレームにテキストがあるかどうかを返す
If (targetShape.TextFrame2.HasText = msoTrue) Then
'図形内のテキストを取得
shapeText = targetShape.TextFrame2.TextRange.Text
'図形内の文字列から検索
discoveryWord = InStr(shapeText, searchWord)
'検索ワードが見つかったとき、置換の処理を行う
If (discoveryWord > 0&) Then
'ウィンドウを図形の位置にスクロール
ActiveWindow.ScrollRow = targetShape.TopLeftCell.Row
ActiveWindow.ScrollColumn = targetShape.TopLeftCell.Column
Do While (discoveryWord > 0&)
'テキスト範囲選択を解除するため、カレントセルを選択する
targetShape.TopLeftCell.Select
targetShape.TextFrame2.TextRange.Characters(discoveryWord, Len(searchWord)).Select
replacePopupMsg = "置換する場合、入力してください。" & vbCr & vbCr & "置換前 : " & searchWord & vbCr & "置換後"
' 置換入力メッセージを出力する
replaceWord = InputBox(replacePopupMsg, "置換")
If replaceWord = "" Then
ret = True
GoTo CONTINUE
End If
'図形内の文字列を置換する
targetShape.TextFrame2.TextRange.Text = Replace(shapeText, searchWord, replaceWord, 1, searchWordCnt)
targetShape.TopLeftCell.Select
'もう一度検索・置換するのか
If (MsgBox("continue?", vbQuestion Or vbOKCancel, TITLE_SEARCH_SHAPE_TEXT) <> vbOK) Then
ret = True
GoTo CONTINUE
'同じ図形内で文字検索
Else
discoveryWord = InStr(discoveryWord + 1&, shapeText, searchWord)
End If
searchWordCnt = searchWordCnt + 1
Loop
GoTo CONTINUE
End If
End If
End If
CONTINUE:
Next
ExitFunction:
searchReplaceShapeText = ret
ExitSub:
End Function
Sub ★()
'
' ★ Macro
'
'
Sheets("★").Visible = xlSheetVisible
Sheets("勤怠").Visible = xlSheetHidden
Sheets("WBS").Visible = xlSheetHidden
Sheets("カレンダー").Visible = xlSheetHidden
Sheets("祝日").Visible = xlSheetHidden
Sheets("archive").Visible = xlSheetHidden
Sheets("legacy").Visible = xlSheetHidden
ActiveSheet.Range("A1").Activate
End Sub
Sub 勤怠()
'
' 勤怠 Macro
'
'
Sheets("勤怠").Visible = xlSheetVisible
Sheets("★").Visible = xlSheetHidden
Sheets("WBS").Visible = xlSheetHidden
Sheets("カレンダー").Visible = xlSheetHidden
Sheets("祝日").Visible = xlSheetHidden
Sheets("archive").Visible = xlSheetHidden
Sheets("legacy").Visible = xlSheetHidden
ActiveSheet.Range("A1").Activate
End Sub
Sub WBS()
'
' WBS Macro
'
'
Sheets("WBS").Visible = xlSheetVisible
Sheets("★").Visible = xlSheetHidden
Sheets("勤怠").Visible = xlSheetHidden
Sheets("カレンダー").Visible = xlSheetHidden
Sheets("祝日").Visible = xlSheetHidden
Sheets("archive").Visible = xlSheetHidden
Sheets("legacy").Visible = xlSheetHidden
ActiveSheet.Range("A1").Activate
End Sub
Sub カレンダー()
'
' カレンダー Macro
'
'
Sheets("カレンダー").Visible = xlSheetVisible
Sheets("★").Visible = xlSheetHidden
Sheets("勤怠").Visible = xlSheetHidden
Sheets("WBS").Visible = xlSheetHidden
Sheets("祝日").Visible = xlSheetHidden
Sheets("archive").Visible = xlSheetHidden
Sheets("legacy").Visible = xlSheetHidden
ActiveSheet.Range("A1").Activate
End Sub
Sub 祝日()
'
' 祝日 Macro
'
'
Sheets("祝日").Visible = xlSheetVisible
Sheets("★").Visible = xlSheetHidden
Sheets("勤怠").Visible = xlSheetHidden
Sheets("WBS").Visible = xlSheetHidden
Sheets("カレンダー").Visible = xlSheetHidden
Sheets("archive").Visible = xlSheetHidden
Sheets("legacy").Visible = xlSheetHidden
ActiveSheet.Range("A1").Activate
End Sub
Sub archive()
'
' archive Macro
'
'
Sheets("archive").Visible = xlSheetVisible
Sheets("★").Visible = xlSheetHidden
Sheets("勤怠").Visible = xlSheetHidden
Sheets("WBS").Visible = xlSheetHidden
Sheets("カレンダー").Visible = xlSheetHidden
Sheets("祝日").Visible = xlSheetHidden
Sheets("legacy").Visible = xlSheetHidden
ActiveSheet.Range("A1").Activate
End Sub
Sub legacy()
'
' legacy Macro
'
'
Sheets("legacy").Visible = xlSheetVisible
Sheets("★").Visible = xlSheetHidden
Sheets("勤怠").Visible = xlSheetHidden
Sheets("WBS").Visible = xlSheetHidden
Sheets("カレンダー").Visible = xlSheetHidden
Sheets("祝日").Visible = xlSheetHidden
Sheets("archive").Visible = xlSheetHidden
ActiveSheet.Range("A1").Activate
End Sub
Sub Excel埋込み()
'
' Excel埋込み Macro
'
'
'ファイルを選択
ChDir ThisWorkbook.Path
Dim target As Variant
target = Application.GetOpenFilename("すべてのファイル (*.*),*.*")
'開いて
If VarType(target) = vbBoolean Then
Exit Sub
End If
Workbooks.Open Filename:=target
Dim bookName As String
bookName = ActiveWorkbook.Name
ActiveWindow.Visible = False
'Excelにして埋込
ActiveSheet.OLEObjects.Add(Filename:= _
target, Link:=False, _
DisplayAsIcon:=True, IconFileName:= _
"C:\WINDOWS\Installer\{90160000-000F-0000-0000-0000000FF1CE}\xlicons.exe", _
IconIndex:=0, IconLabel:="note").Select
Workbooks(bookName).Close SaveChanges:=False
'埋込みオブジェクトを整形
Dim inObj As String
inObj = Selection.Name
ActiveSheet.Shapes.Range(Array(inObj)).Select
ActiveSheet.Shapes(inObj).Height = 28.3464566929
ActiveSheet.Shapes(inObj).Fill.Visible = msoTrue
ActiveSheet.Shapes(inObj).Fill.ForeColor.RGB = RGB(204, 204, 255)
ActiveSheet.Shapes(inObj).Top = 1
ActiveSheet.Shapes(inObj).Left = 1
ActiveSheet.Shapes(inObj).Fill.Solid
'タイトルラベルを作成
Dim strIn As String
strIn = InputBox("タイトルを入力")
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 1, 1, 76.5, _
12.75).Select
With Selection.ShapeRange.TextFrame2.TextRange.Font
.NameComplexScript = "Meiryo UI"
.NameFarEast = "Meiryo UI"
.Name = "Meiryo UI"
End With
Dim title As String
title = Selection.Name
Selection.ShapeRange.TextFrame2.TextRange.Font.Size = 9
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorText1
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0
.Transparency = 0
.Solid
End With
Selection.ShapeRange.TextFrame2.VerticalAnchor = msoAnchorMiddle
Selection.ShapeRange.TextFrame2.TextRange.ParagraphFormat.Alignment = _
msoAlignCenter
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = strIn
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, Len(strIn)). _
ParagraphFormat
.FirstLineIndent = 0
.Alignment = msoAlignCenter
End With
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, Len(strIn)).Font
.NameComplexScript = "+mn-cs"
.NameFarEast = "Meiryo UI"
.Fill.Visible = msoTrue
.Fill.ForeColor.ObjectThemeColor = msoThemeColorBackground1
.Fill.ForeColor.TintAndShade = 0
.Fill.ForeColor.Brightness = 0
.Fill.Transparency = 0
.Fill.Solid
.Size = 9
.Name = "Meiryo UI"
End With
'グループ化
Dim SN(0 To 1) As String
SN(0) = inObj
SN(1) = title
ActiveSheet.Shapes.Range(SN).Group
End Sub
Sub 埋込み出力()
'
' 埋込み出力 Macro
'
'
'選択されたオブジェクトで
Dim r As Variant
For Each r In Selection.ShapeRange
'グループ化されているものの
If ActiveSheet.Shapes(r.Name).Type = 6 Then
Dim obj As Variant
Dim title As Variant
Dim i As Variant
For i = 1 To 2
'対象オブジェクトのIDを取得
If r.GroupItems(i).Type = 7 Then
obj = r.GroupItems(i).Name
Else
'タイトルラベルを取得
title = r.GroupItems(i).TextFrame.Characters.Text
End If
Next
'保存
ActiveSheet.OLEObjects(obj).Verb xlVerbOpen
ChDir ThisWorkbook.Path
ActiveWorkbook.SaveAs Filename:= _
title, FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
MsgBox "エクスポート:" & title & ".xlsx"
End If
Next
End Sub
タスク管理表
以下をH列に適用
※列を追加するなら関数作成後
※要件番号とか追加したいかも
=IF(OR(J2="Done",J2="Close"),"-",IF(F2>TODAY(),"wait",IF(G2<TODAY(),"over",IF(F2=G2,"100%",NETWORKDAYS(F2,TODAY(),祝日!$A$1:$A$100)/NETWORKDAYS(F2,G2,祝日!$A$1:$A$100)))))
条件付き書式
※順番もこの通り
条件 | 範囲 | 説明 |
---|---|---|
$J1="Done" | $A$1:$K$10 | ステータス色 |
$J1="Close" | $A$1:$K$10 | ステータス色 |
$H1>$I1 | $I$1:$I$10 | 進捗 |
IFERROR(VLOOKUP($F1,祝日!$A$1:$A$100,1,FALSE),"error")<>"error" | $F$1:$F$10 | 祝日 |
IFERROR(VLOOKUP($G1,祝日!$A$1:$A$100,1,FALSE),"error")<>"error" | $G$1:$G$10 | 祝日 |
AND($F1<TODAY(),$J1="New") | $F$1:$G$10 | 開始日が過ぎた |
$G1<TODAY() | $G$1:$G$10 | 終了日が過ぎた |
AND($F1<=TODAY(),\$G1>=TODAY()) | $F$1:$G$10 | 作業中の日付 |
$J1="New" | $A$1:$K$10 | ステータス色 |
$J1="WIP" | $A$1:$K$10 | ステータス色 |
$J1="Pending" | $A$1:$K$10 | ステータス色 |
WBS
日付がO2(1行目は年、2行目が日付、3行目が曜日)
開始日がF4
終了日がG4
「>」を入れる式.java
=IF(O$2<$F4,"",IF(O$2>$G4,"",">"))
営業日計算式.java
=NETWORKDAYS(F4,G4,祝日!$A$1:$A$100)
必要進捗を出す式.java
=IF(F4>TODAY(),"wait",IF(G4<TODAY(),"over",IF(F4=G4,"100%",NETWORKDAYS(F4,TODAY(),祝日!$A$1:$A$100)/NETWORKDAYS(F4,G4,祝日!$A$1:$A$100))))
条件付き書式
・">"と一致した場合に色
・今日の場合縦に色
・祝日休日の場合縦に色
IFERROR(VLOOKUP(O$2,祝日!$A$1:$A$100,1,FALSE),"error")<>"error"
カレンダー
別でイベント日を記載し
条件付き書式
・祝日
・イベント日
バッチ
場所を問わず、とりあえず起動すれば環境構築してくれる。
変えたければ、ドライブレターとバッチファイル名を修正して起動。
フォルダ[World]階層イメージ.cmd
[artifact]
├ _機能名.bat
├ _機能名.bat
├ Metis.xlsx
└ JARVIS.bat
[link]
1_all
├ アプリ.lnk
├ アプリ.lnk
└ アプリ.lnk
2_task
├ アプリ.lnk
├ アプリ.lnk
└ アプリ.lnk
[work]
├ 作業フォルダ
├ 作業フォルダ
├ 作業ファイル
└ 作業ファイル
a.bat
@echo off
mode 100,30
call:setting_world
call:setting_this
call:calling
exit
rem ==========================================================
:setting_world
rem *********************
set THE_ROOT=C:\Users\%USERNAME%\
rem *********************
set THE_ROOT_DOCUMENT=%THE_ROOT%Documents\
set THE_ROOT_DESKTOP=%THE_ROOT%Desktop\
set WORLD=%THE_ROOT_DOCUMENT%World\
set GIFT=%THE_ROOT_DOCUMENT%Gift\
set TOOLBOX=%THE_ROOT_DOCUMENT%Tool\
set ARTIFACT=%WORLD%artifact\
set LINK=%WORLD%link\
set GIFT_TO=%Gift%Gift
set WWORK=%WORLD%work\
set LOG=[INFO] CREATE DIRECTORY:
if not exist %ARTIFACT% mkdir %ARTIFACT% && echo %LOG%%ARTIFACT%
if not exist %LINK% mkdir %LINK% && echo %LOG%%LINK%
if not exist %WWORK% mkdir %WWORK% && echo %LOG%%WWORK%
if not exist %GIFT% mkdir %GIFT% && echo %LOG%%GIFT%
if not exist %TOOLBOX% mkdir %TOOLBOX% && %LOG%%TOOLBOX%
exit /b
:setting_this
rem *********************
set THIS_NAME=JARVIS
rem *********************
set THIS_PATH=%ARTIFACT%%THIS_NAME%.bat
set SC_PATH=%THE_ROOT_DESKTOP%%THIS_NAME%.lnk
set START_UP="C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\%THIS_NAME%_shadow.bat"
if not exist %START_UP% (
echo @echo off>>%START_UP%
echo start %SC_PATH%>>%START_UP%
echo exit>>%START_UP%
echo [INFO] CREATE LINK_FILE: %START_UP%
)
if not exist %THIS_PATH% (copy /y "%~dp0%~nx0" "%THIS_PATH%" && echo [INFO] CREATE BAT_FILE: %THIS_PATH%)
if not exist %SC_PATH% (
powershell "$s=(New-Object -COM WScript.Shell).CreateShortcut('%SC_PATH%');$s.TargetPath='%THIS_PATH%';$s.Save()"
echo [INFO] CREATE LINK_FILE: %SC_PATH%
echo. && echo [MESSAGE] PLEASE ADD THE KEYMAP && echo.
echo [MESSAGE] FINISH AND DELETE THIS BAT_FILE, AND START NEW CREATED LINK_FILE %THIS_NAME%.link
pause && start %SC_PATH% && del /f "%~dp0%~nx0" && exit
)
set SPL============================================
set trimDate=%DATE: =0%
set timestamp=_%trimDate:~0,4%_%trimDate:~5,2%_%trimDate:~8,2%
set FUNC_NM_0=0_end
set FUNC_NM_1=1_open
set FUNC_NM_2=2_bakup
set FUNC_NM_3=3_artifacts
set FUNC_NM_4=4_reboot
exit /b
rem ==========================================================
:win_act
powershell -command "(new-object -com 'WScript.Shell').AppActivate('%~n0')" > nul
exit /b
:mktab
echo. && echo [%~n0] CHOOSE THE FUNCTION WITH "TAB" ONLY ENTER WILL FINISH && echo %SPL%%SPL%
for /f "usebackq delims== tokens=2" %%a in (`set FUNC_NM`) do (echo %%a && if not exist %%a type nul>%%a && attrib +h %%a)
echo %SPL%%SPL% && echo. && echo ...
exit /b
:deltab
for /f "usebackq delims== tokens=2" %%a in (`set FUNC_NM`) do (if exist %%a attrib -h %%a && del /q %%a)
exit /b
rem ==========================================================
:calling
cls
color 0b
cd /d %ARTIFACT% && call:win_act && call:mktab
set CCC= && set/p CCC=
if errorlevel 1 (echo [%~n0] BYE && powershell sleep -s 1 && call:deltab && exit)
call:deltab
for /f "usebackq delims== tokens=2" %%a in (`set FUNC_NM`) do (if %%a==%CCC% echo. && color c && call:%CCC% && call:calling)
call:calling
rem ==========================================================
:0_end
taskkill /f /fi "imagename ne cmd.exe" /fi "imagename ne conhost.exe"
exit /b
:1_open
cd /d %LINK%
echo [%~n0] CHOOSE THE LINKS_SET_NAME WITH "TAB" ONLY ENTER WILL FINISH && echo %SPL%
dir /ad /b /o:n && echo %SPL% && echo.
set TARGETSET= && set /p TARGETSET=
if errorlevel 1 (exit /b)
cd %TARGETSET%
if errorlevel 1 (exit /b)
for %%a in (*.*) do (echo [%~n0] START:%%a && start "" "%%a" && call:win_act)
exit /b
:2_bakup
cd %GIFT%
dir /a-d /b /o:n | findstr /v "names.txt">names.txt
powershell Get-Content -path names.txt -tail 1 >latest_name.txt
set LATEST_NAME= && set /p LATEST_NAME=<latest_name.txt
del /q %GIFT%names.txt
del /q %GIFT%latest_name.txt
echo %LATEST_NAME%| findstr /r "^.*%timestamp%_ver.*\.zip$" > nul
if not errorlevel 1 set VERSION=%LATEST_NAME:~19,-4%
set /a NEW_VER=%VERSION%+1
set GIFT_NAME=%GIFT_TO%%timestamp%_ver%NEW_VER%
mkdir %GIFT_NAME%
robocopy /s /e %WORLD% %GIFT_NAME%
powershell Compress-Archive -Path %GIFT_NAME% -DestinationPath %GIFT_NAME%.zip -Force
rmdir /s /q %GIFT_NAME%
exit /b
:3_artifacts
echo [%~n0] CHOOSE THE ARTIFACT WITH "TAB" ONLY ENTER WILL FINISH && echo %SPL%
dir /a-d /b /o:n | findstr /v "%~n0.bat" && echo %SPL% && echo.
set TARGETFILE= && set /p TARGETFILE=
if errorlevel 1 (exit /b)
dir /a-d /b /s | findstr "%TARGETFILE%">%ARTIFACT%phantom.txt
set TARGETTOPEN= && set /p TARGETTOPEN=<%ARTIFACT%phantom.txt
del /q %ARTIFACT%phantom.txt
echo START:%TARGETTOPEN% && start %TARGETTOPEN% && echo.
exit /b
:4_reboot
choice /t 2 /d n /m "[%~n0] REBOOT?"
if not errorlevel 2 (shutdown /r /t 1) else (exit /b)
exit /b