VBA 労働時間計算

9:00始業なら8:59:59までOKで、9:00の打刻はダメという話を時々聞くが、秒まで記録しない場合はfrom-toどちらも秒を切り捨てるので、9:00の打刻は9:00:00と考えて、問題ないとした方が分かりやすい。

***

Ifなどで時刻の条件を書くとき、浮動小数の関係で誤差が生じることがある。セルに入力された値やTimeValue()の値そのままなら問題ないけど、何かしら計算した場合はDateDiff()、あるいはTimeValue()を経由させるなどしたほうが安全。

***

労働時間の計算で15分単位切り捨ての処理をしようとしたが(ちなみに、これは管理会計の話で給与では切り捨てちゃダメ)休憩が15分単位ではなかったので、休憩を挟んで15分をカウントして集計することにした。

こういう計算でループを回すのは悪手だと思うけど、難しいことはできないので、とりあえずループで計算してしまった。。

***

深夜を入力する場合、VBAでは[h]:mmという表記を扱えないし、セルへの入力でも25:00など入力すると自動で日付が入ってしまうので、セルの書式を文字列に変えてVBAで日付を付加してみた。(今回、セルは時刻だけ入力していたが、セルに日付まで入れてしまったほうが簡単かも知れない)

 

CISCO WAP571設定

リセット(リセット長押し)された状態。

・FindITを利用し接続先IPアドレスを探す。

・ブラウザからログイン
id/パスワード:cisco
でログインする。

・セットアップウィザード

動的IPアドレス(DHCP)のまま

(複数台利用する場合)新しいクラスタ名だけ入力し、その他はそのまま。

(複数台利用する場合)既存クラスタに、作成したクラスタ名で参加する。

Outlook(Microsoft365) 本文の一部が表示されない

Outlookで送信→iPhoneで返信→Outlookで受信したところ、Outlookで書いた文章は見えるがiPhoneで書いた文章は表示されない症状が発生した。

GmailやSylpheedなどで開くと表示されるが、漢字の一部が化けていたので、どうもiPhoneで入力したときになにか不具合が発生しているよう。

エンコード絡みが原因なのだけど、そのまま
リボン>アクション>その他のアクション>エンコード
・Unicode(UTF-8)
としても解決しなかったので
ファイル>オプション>トラストセンター>トラストセンターの設定>電子メールのセキュリティ
・すべての標準メールをテキスト形式で表示する
・すべてのデジタル署名されたメールをテキスト形式で表示する
にチェックし、
リボン>アクション>その他のアクション>エンコード
・Unicode(UTF-8)
を選択したら表示することができた。

ファイル>オプション>メール>次の形式でメッセージを作成する
テキスト形式に変更し様子見。

Outlook(Microsoft365) アカウント作成

動作検証のため、Outlook(Microsoft365)にアカウントを追加しようとしたら
ファイル>アカウント>アカウント設定>メール>新規
ユーザー名がメールアドレスから変更できずに登録できなかった。

control>Mail(Microsoft Outlook)
から登録できた。
ファイル>アカウントの設定>プロファイルの管理
Win+R>outlook /manageprofiles

からも同じ画面を開くことができる。

C#(ASP.NET Core) 機器管理アプリ

WindowsFormsばかりでASP.NETで動くものを作ったことがなかったので、勉強を兼ねて機器管理アプリを作ってみた。

Program.cs

ApplicationUser.cs

Index.cshtml

Edit.cshtml

Details.cshtml

Delete.cshtml

Create.cshtml

_Layout.cshtml

Login.cshtml

TestTable33.cs

PurchaseType.cs

TestTable33Controller.cs

AccountController.cs

 

C#(ASP.NET Core) SkiaSharp IFormFile(画像)リサイズ

 

Excel 信頼済みサイト登録(レジストリ)

通常の方法

Excel 不具合関連

レジストリの場合

ホスト名
HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains

IPアドレス
HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges

ホスト名はDomains、IPアドレスはRanges以下に分かれる。
Domains以下はそのままホスト名がキーとして登録されるが、Ranges以下はRange1、Range2というようなキーになる。
Domains以下のホスト名はキー名を変えると信頼済みサイトに登録されている名前も変わる。

登録(ホスト名)
reg add “HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\[xxx]” /v file /t REG_DWORD /d 2 /f
[xxx]の部分はホスト名

登録(IPアドレス)
reg add “HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range[*]” /v file /t REG_DWORD /d 2 /f
reg add “HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range[*]” /v :Range /t REG_SZ /d [xxx.xxx.xxx.xxx] /f
[*]の部分は数字(1~)
[xxx.xxx.xxx.xxx]の部分はIPアドレス

キー名を変更してみる
reg add “HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\192.168.10.108” /v file /t REG_DWORD /d 2 /f
reg add “HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\192.168.10.108” /v :Range /t REG_SZ /d 192.168.10.108 /f
テストしてみると、Range[*]キーの部分をIPアドレス等に変えてしまっても問題なく動作するよう。

/v:名前
/t:種類
 REG_SZ
 REG_MULTI_SZ、
 REG_EXPAND_SZ、
 REG_DWORD、
 REG_QWORD、
 REG_BINARY、
 REG_NONE
/d:値
/f:強制上書

・ZoneIDの確認方法

cmd>notepad xxx.xlsm:zone.identifier
として該当ブックを起動する

実験等、手動で付与する場合
[ZoneTransfer]
ZoneId=3
を追記する。

ASP.NET Core MVC メモ

プロジェクト・NuGet

・ASP.NET Core Webアプリ(Model-View-Controller)を作成

・ファイル/フォルダ削除

Controllers/HomeControllers.cs
Views/Home/
削除

・NuGet インストール

ツール>NuGetパッケージマネージャ>ソリューションのNuGetパッケージの管理>参照
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Sqlite(SqlServer)
Microsoft.EntityFrameworkCore.Tools
あるいはパッケージマネージャーコンソールから
PM>Install-Package Microsoft.EntityFrameworkCore
PM>Install-Package Microsoft.EntityFrameworkCore.Sqlite(SqlServer)
PM>Install-Package Microsoft.EntityFrameworkCore.Tools

DB First・スキャフォールディング

DB(テーブル、フィールド)まで準備しておく。とりあえずなので最低限の内容。

・SQLiteの場合

SQLiteのファイルを作成しbin\Debug\net6.0以下に移動しておく。

PM>Scaffold-dbcontext -Connection “Data Source=./bin/Debug/net6.0/dat.sqlite” -Provider Microsoft.EntityFrameworkCore.Sqlite -OutputDir Models

(更新の場合 -f)

SQL Serverの場合
PM>Scaffold-dbcontext -Connection “Server=localhost,49153\SQLEXPRESS;Database=TestDb;persist security info=True;user id=sa;password=passw0rd!;MultipleActiveResultSets=True” -Provider Microsoft.EntityFrameworkCore.SqlServer -tables “TestTable33” -OutputDir Models

・コントローラー、ビュー作成

ソリューションエクスプローラ右クリック>追加>新規スキャフォールディングアイテム>EntityFrameworkを使用したビューがあるMVCコントローラー

表示されたダイアログで、
モデルクラス、データコンテキストクラスは自動生成されたファイルを選択。
コントローラー名は自動で命名されるが、用途に応じて変更する。

・Programs.cs編集

の部分を必要に応じて書き換え。

を追加。

・xxxContext.cs編集

を削除。

を削除。

・DB更新

SQLiteメモ

Modelsの内容を変更し、
PM>Add-Migration xxx
PM>Update-Database

ここではxxxContextなど自動で変更されない。

・アクションメソッド

アクションメソッドとは、コントローラーの中で定義されたpublicのメソッドのこと。アクションメソッドの戻値はIActionResultを実装したオブジェクト。

URLの基本は/コントローラー名/アクションメソッド名となる。

アクションメソッド

・アクションメソッドの戻り値

・コントローラからビューの呼び出し

ヘッダーなどは/Views/Shared/_Layout.cshtmlにて定義され、コンテンツは@RenderBodyの部分で読み込まれる

Razor

インライン
@をつける、式の値を出力する。

コードブロック
@{}をつける、出力しない。

コードブロック内で出力する場合、
HTMLタグで囲む、または<text>タグで囲む、または@:をつける。

コメント
@* *@
@{ }の中では、// や /* */が使える。

@のエスケープ
@をつける。

Win11 アップグレード

Win11にアップグレードしてみた。

・Explorer Patcher for Windows 11

https://github.com/valinet/ExplorerPatcher

和暦、秒を追加して表示させていたTClockが起動せず、クイック起動も表示できなかったのでインストール。

アップデートはタスクバー右クリック>プロパティ

・クイック起動

タスクバー右クリック>新規ツールバー
C:\Users\xxx\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch
を登録する。

クイック起動は
shell:quick launch
でも開ける。

コンテキストメニューのアクセスキーを使うため手間が増え不便になったので、オプション表示を消した。

reg add “HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32” /f /ve

***

AcrobatⅪという古いバージョンを使っていたがライセンス認証の動作がおかしくなってしまったので利用を止めた。(PDFelementに切り替え)

グラフィックボードやネットワークに係わる部分のドライバーの更新を実施。

動作も軽く見た目も洗練されているよう。

.NET メモ

ランタイムの種類

●SDK
.NET Runtime、.NET Desktop Runtime、ASP.NET Core Runtimeが含まれる

●.NET Runtime
コンソールの実行に必要なコンポーネントのみ。
通常、この代わりに.NET Desktop Runtimeと ASP.NET Core Runtimeの両方をインストールする。

●.NET Desktop Runtime
WPF、Windows Formsをサポート。
Windowsに付属する.NET Frameworkとは異なる。
.NET Runtimeが含まれる。
ASP.NET Core Runtimeは含まれない。

●ASP.NET Core Runtime
.NET Runtimeをインストールする必要がある。

バージョン確認

.NET Framework
https://learn.microsoft.com/ja-jp/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed

.NET 5 以降
https://learn.microsoft.com/ja-jp/dotnet/core/install/how-to-detect-installed-versions?pivots=os-windows

互換性

.NET Framwork1.0(1.0)
.NET Framwork1.1(1.1)
.NET Framwork3.5(2.0, 3.0, 3.5)
.NET Framwork4.8(4, 4,5, 4.6, 4.7, 4.8)
.NET Core2.2(2.0, 2.1, 2.2)
.NET Core3.1(3.0, 3.1)
.NET5(5)
.NET6(6)

現在サポート中

.NET Framwork3.5(2028年)
.NET Framwork4.8(2031年)
.NET Core3.1(2022年)
.NET5(2022年)
.NET6(2024年)

.NET5でFramworkとCoreが統合された