1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
Function holiday_chk(dt) '通常の休日 If Weekday(dt) = 1 Or Weekday(dt) = 7 Then holiday_chk = True Exit Function End If '祝日 For r = 3 To 30 If Sheets("表紙").Cells(r, 4).Value = dt Then holiday_chk = True Exit Function End If Next r holiday_chk = False End Function Private Sub CommandButton1_Click() '入力チェック -------------------------------------------------------- If IsDate(Sheets("表紙").Cells(3, 2).Value) = False Then MsgBox "開始日が日付ではありません。" Exit Sub End If If IsDate(Sheets("表紙").Cells(6, 2).Value) = False Then MsgBox "終了日が日付ではありません。" Exit Sub End If If Sheets("表紙").Cells(3, 2).Value >= Sheets("表紙").Cells(6, 2).Value Then MsgBox "開始日と終了日の関係が正しくありません。" Exit Sub End If 'ゴミ分別 -------------------------------------------------------- Sheets("ゴミ分別原本(雛形)").Copy after:=Sheets("表紙") Set g = ActiveSheet r = 7 dt = Sheets("表紙").Cells(3, 2).Value Do While dt <= Sheets("表紙").Cells(6, 2).Value f = holiday_chk(dt) '表示形式 If r = 7 Then g.Cells(r, 1).NumberFormatLocal = "yyyy/mm/dd" Else g.Cells(r, 1).NumberFormatLocal = "mm/dd" End If g.Cells(r, 3).NumberFormatLocal = "aaa" '配置 g.Cells(r, 5).HorizontalAlignment = xlCenter g.Cells(r, 6).HorizontalAlignment = xlCenter g.Cells(r, 7).HorizontalAlignment = xlCenter g.Cells(r, 9).HorizontalAlignment = xlCenter '休日の場合 If f = True Then g.Range(g.Cells(r, 1), g.Cells(r, 9)).Interior.Color = RGB(222, 222, 222) '罫線 g.Range(g.Cells(r, 1), g.Cells(r, 9)).Borders.LineStyle = True '値 g.Cells(r, 1).Value = dt '日付 g.Cells(r, 3).Value = dt '曜日 '休日では無い場合 If f = False Then g.Cells(r, 5).Value = "○" '一般廃棄物ゴミ g.Cells(r, 6).Value = "○" '廃プラスチック類 g.Cells(r, 7).Value = "○" '金属くず g.Cells(r, 8).Value = "" '備考 tmp = Int((15 - 9 + 1) * Rnd + 9) g.Cells(r, 9).Value = Sheets("表紙").Cells(tmp, 2).Value 'チェック者 End If r = r + 1 dt = DateAdd("d", 1, dt) Loop '表題 g.Cells(2, 1).Value = " ▼" & Sheets("表紙").Cells(18, 2).Value & "年廃棄物分別チェック表" '作成日 For Each sh In g.Shapes If sh.Type = msoTextBox Then If sh.TextFrame.Characters.Text = "x" Then sh.TextFrame.Characters.Text = "作成日 " & Sheets("表紙").Cells(21, 2).Value End If End If Next '照明チェック -------------------------------------------------------- Sheets("照明チェック(雛形)").Copy after:=Sheets("表紙") Set s = ActiveSheet r = 9 dt = Sheets("表紙").Cells(3, 2).Value Do While dt <= Sheets("表紙").Cells(6, 2).Value f = holiday_chk(dt) '表示形式 If r = 9 Then s.Cells(r, 1).NumberFormatLocal = "yyyy/mm/dd" Else s.Cells(r, 1).NumberFormatLocal = "mm/dd" End If s.Cells(r, 3).NumberFormatLocal = "aaa" '配置 s.Cells(r, 5).HorizontalAlignment = xlCenter s.Cells(r, 6).HorizontalAlignment = xlCenter s.Cells(r, 7).HorizontalAlignment = xlCenter s.Cells(r, 8).HorizontalAlignment = xlCenter s.Cells(r, 9).HorizontalAlignment = xlCenter s.Cells(r, 11).HorizontalAlignment = xlCenter '休日の場合 If f = True Then s.Range(s.Cells(r, 1), s.Cells(r, 11)).Interior.Color = RGB(222, 222, 222) '罫線 s.Range(s.Cells(r, 1), s.Cells(r, 11)).Borders.LineStyle = True '値 s.Cells(r, 1).Value = dt '日付 s.Cells(r, 3).Value = dt '曜日 '休日では無い場合 If f = False Then s.Cells(r, 5).Value = "○" '照明 s.Cells(r, 6).Value = "○" '空調 s.Cells(r, 7).Value = "○" 'マシン s.Cells(r, 8).Value = "○" 'ディスプレイ s.Cells(r, 9).Value = "○" 'プリンタ tmp = Int((15 - 9 + 1) * Rnd + 9) s.Cells(r, 11).Value = Sheets("表紙").Cells(tmp, 2).Value 'チェック者 End If r = r + 1 dt = DateAdd("d", 1, dt) Loop '表題 s.Cells(2, 1).Value = " ▼" & Sheets("表紙").Cells(18, 2).Value & "年省エネチェック表" '作成日 For Each sh In s.Shapes If sh.Type = msoTextBox Then If sh.TextFrame.Characters.Text = "x" Then sh.TextFrame.Characters.Text = "作成日 " & Sheets("表紙").Cells(21, 2).Value End If End If Next End Sub |
VBA 簡易承認機能
シートをパスワード保護し、そこに値を保存することで簡易的な承認機能を作成しようとした。実際に表示されている値と、保護された承認済みの値は起動時にチェックできるが、承認済みの値が見えないと使いづらいだろうと判断し別の方法を作成することにした。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 |
Sub auto_open() On Error Resume Next '設定シート存在チェック If sheets_exists = False Then Exit Sub 'コンテキスト削除 Application.CommandBars("cell").Controls("承認").Delete Application.CommandBars("cell").Controls("承認").Delete 'コンテキスト初期化 With Application.CommandBars("cell").Controls.Add(Type:=msoControlPopup) .Caption = "承認" With .Controls.Add .Caption = "承認①(" & Sheets("setting").Cells(3, 2).Value & ")" .OnAction = "'approval(3)'" End With With .Controls.Add .Caption = "承認②(" & Sheets("setting").Cells(4, 2).Value & ")" .OnAction = "'approval(4)'" End With With .Controls.Add .Caption = "承認③(" & Sheets("setting").Cells(5, 2).Value & ")" .OnAction = "'approval(5)'" End With With .Controls.Add .Caption = "承認④(" & Sheets("setting").Cells(6, 2).Value & ")" .OnAction = "'approval(6)'" End With With .Controls.Add .Caption = "設定" .OnAction = "setting" End With End With '起動チェック On Error GoTo try With Sheets("setting") OnOff = UCase(.Cells(18, 2).Value) If OnOff = "ON" Then s = .Cells(1, 2).Value 'セル位置1 r = .Cells(3, 2).Value If r <> "" Then v = Sheets(s).Range(r).Value If .Cells(8, 2).Value <> v Then MsgBox "承認されていません。#1" End If 'セル位置2 r = .Cells(4, 2).Value If r <> "" Then v = Sheets(s).Range(r).Value If .Cells(9, 2).Value <> v Then MsgBox "承認されていません。#2" End If 'セル位置3 r = .Cells(5, 2).Value If r <> "" Then v = Sheets(s).Range(r).Value If .Cells(10, 2).Value <> v Then MsgBox "承認されていません。#3" End If 'セル位置4 r = .Cells(6, 2).Value If r <> "" Then v = Sheets(s).Range(r).Value If .Cells(11, 2).Value <> v Then MsgBox "承認されていません。#3" End If End If End With Exit Sub try: MsgBox "起動時の承認が確認できませんでした" End Sub Sub auto_close() On Error Resume Next 'コンテキスト削除 Application.CommandBars("cell").Controls("承認").Delete Application.CommandBars("cell").Controls("承認").Delete '設定シート保護 With Sheets("setting") .Visible = xlVeryHidden .Protect Password:="1234" End With End Sub Sub setting() '設定シート存在チェック If sheets_exists = False Then Exit Sub '表示されていたら非表示 If Sheets("setting").Visible = True Then With Sheets("setting") .Visible = xlVeryHidden .Protect Password:="1234" End With Exit Sub End If '管理者パスワードチェック If admin_chk = False Then Exit Sub With Sheets("setting") '設定シート表示 .Visible = True .Unprotect Password:="1234" 'アクティブ .Activate End With End Sub Function sheets_exists() i = False For Each w In Sheets If w.Name = "setting" Then i = True Next If i = True Then sheets_exists = True ElseIf i = False Then MsgBox "設定シートが存在しません。" sheets_exists = False End If End Function Function admin_chk() admin = "skthskth" pw = InputBox("パスワードを入力してください") If pw = "" Then Exit Function If admin = pw Then admin_chk = True ElseIf admin <> pw Then MsgBox "パスワードが正しくありません。" admin_chk = False End If End Function Function app_pw_chk(p) 'sk4?0? If Len(p) <> 6 Then GoTo e If Left(p, 3) <> "sk4" Then GoTo e If Mid(p, 5, 1) <> "0" Then GoTo e app_pw_chk = True Exit Function e: MsgBox "承認パスワードが違います。" app_pw_chk = False End Function Sub approval(target_row) '設定シート存在チェック If sheets_exists = False Then Exit Sub '承認パスワードチェック p = InputBox("承認者パスワードを入力してください。") If p = "" Then Exit Sub If app_pw_chk(p) = False Then Exit Sub '書き込み On Error GoTo try With Sheets("setting") .Unprotect Password:="1234" s = .Cells(1, 2).Value '承認 r = .Cells(target_row, 2).Value If r = "" Then .Cells(target_row + 5, 2).Value = "" ElseIf r <> "" Then .Cells(target_row + 5, 2).Value = Sheets(s).Range(r).Value End If '承認者 .Cells(target_row + 10, 2).Value = p .Protect Password:="1234" End With Exit Sub try: MsgBox "承認処理が正しく実行されませんでした。" End Sub |
C# Access(mdb) コード内で作成
コード内でmdb作成。Close入れないと接続が残っている。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System.Windows.Forms; //参照設定追加 //Microsoft ADO Ext X.X for DDL and Security //Microsoft ActiveX Data Objects 6.0 Library namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { ADOX.Catalog cat = new ADOX.Catalog(); ADODB.Connection db1 = cat.Create("Provider='Microsoft.Jet.OLEDB.4.0';Data Source=" + Application.StartupPath + @"\test1.mdb;Jet OLEDB:Engine Type=5"); ADODB.Connection db2 = cat.Create("Provider='Microsoft.Jet.OLEDB.4.0';Data Source=" + Application.StartupPath + @"\test2.mdb;Jet OLEDB:Engine Type=5"); db1.Close(); db2.Close(); } } } |
C# DataTable メモ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
using System.Data; using System.Linq; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); // データテーブル作成 DataTable dt = new DataTable("newTable"); // カラム作成 string[] cols = new string[] { "id", "name", "age" }; foreach (string c in cols) { dt.Columns.Add(c); } // データセット作成 DataSet ds = new DataSet(); // データセットにテーブルを追加 ds.Tables.Add(dt); // 値作成(2次元配列) string[,] vals = new string[,] { {"01", "02", "03", "04"}, // id {"aa", "bb", "cc", "dd"}, // name {"11", "12", "13", "14"} // age }; for (int r = 0; r < vals.GetLength(1); r++) // GetLength(0) = 3(1次元), GetLength(1) = 4(2次元) { DataRow row = ds.Tables["newTable"].NewRow(); // DataRow row = dt.NewRow(); このようにも書ける row["id"] = vals[0, r]; // [1次元、2次元] row["name"] = vals[1, r]; row["age"] = vals[2, r]; ds.Tables["newTable"].Rows.Add(row); } // データソース設定 dataGridView1.DataSource = ds.Tables["newTable"]; // 条件を追加したデータテーブル間での複写-------------------------------------------------------- var newTable = dt.Clone(); // ベースループ foreach (var baseRow in dt.AsEnumerable()) { // ①特定の行を飛ばす if (baseRow["id"].ToString() == "02") continue; // ②特定の文字列を置き換える if(baseRow["age"].ToString() == "13") { baseRow["age"] = "26"; } newTable.ImportRow(baseRow); } // データセット作成 DataSet ds2 = new DataSet(); // データセットにテーブルを追加 ds2.Tables.Add(newTable.Copy()); // データソース設定 dataGridView2.DataSource = ds2.Tables["newTable"]; } } } |
PowerShell リモート接続設定
ホスト側のPC
enable-psremoting
を実行。
ネットワークがPublicだと接続できない。
Win10の設定>ネットワークとインターネット>接続プロパティの変更>プライベート
接続できるユーザを追加。
Set-PSSessionConfiguration -Name Microsoft.PowerShell -showSecurityDescriptorUI
追加するとき、もしMicrosoftアカウントならメールアドレスで検索して追加。
クライアント側のPC
クライアント側から信頼できるホストを追加。
Set-Item WSMan:\localhost\Client\TrustedHosts -Value PC_name
接続は、
Enter-PSSession -ComputerName PC_name -Credential mail@xxx.com
を実行。
切断は、
Exit-PSSession
エイリアス追加
必要なら
Set-ExecutionPolicy Unrestricted
$profile
を実行すると読み込まれているかどうか分かる。
既にファイルが存在すれば、
notepad $profile
存在しなければ、
New-item -type file -force $profile
notepad $profile
を実行し、以下のように記述。
Set-Alias -name c -value cd
Set-Alias -name l -value ls
Set-Alias -name pss -value f
function f()
{
Enter-PSSession -ComputerName PC_name -Credential mail@xxx.com
}
ショートカット メモ
よく使うものだけ。
Excel
・オートフィルタ:
Alt>A>T
・ソート:
Alt>A>S>S
・重複削除:
Alt>A>M
・書式設定:
Ctrl + 1
・値の貼り付け:
右クリック>S>V
・テキストボックス挿入:
Alt>N>X>H
・図形挿入:
Alt>N>S>H
Affinity Designer
・移動ツール:
V
・カーブ形式に変換:
右クリック>カーブに変換
***
・ノードツール:
A
・コントロールハンドル削除:
Alt+クリック
・ノード削除:
ノード選択>Delete
・カーブ切断:
ノード選択>右クリック>カーブ切断
・コントロールハンドル追加
ノード選択>右クリック>スマートに変換
Illustrator
・ダイレクト選択(パスの部分的削除):
A
・選択:
V
・複写:
Alt + ドラッグ
・移動=角度固定/縮小拡大=比率固定:
Shift + ドラッグ
・ペン:
P
>アンカーポイント追加
>アンカーポイント削除
・アンカー切り替えツール:
Shift + C:
>アンカーポイントクリック>ハンドル作成
>ハンドルクリック>ハンドル削除
・ズーム:
Z
・ズーム:
Ctrl + Space
・標準表示:
Ctrl + 1
・上下:
スクロール
・左右:
Ctrl + スクロール
・パスのアウトライン化:
オブジェクト>パス>パスのアウトライン
・オブジェクトの結合・切り抜き:
ウィンドウ>パスファインダー
・影、ぼかし:
効果>スタライズ>ドロップシャドウ・ぼかし
・テキストボックス:
アピアランス追加>形状に変換>長方形
Gimp
・部分的に削除して上下を詰めたい場合
Ctrl+Shift+L(選択範囲のフローと化)
右クリック>I,O(内容で切り抜き)
右クリック>F,W(上書きエクスポート)
・移動
M
・切り抜き
Shif+C
縦横比にチェックを入れれば現在の比率で切り抜ける
・選択
E / R
・回転
Shift+R
Shift押しながらだと15度ずつ
・拡大縮小
Shift+S
レイヤー>レイヤーをキャンバスに合わせる
・レイヤーが小さい場合=レイヤーサイズがキャンバスと同じになる。
・レイヤーが大きい場合=キャンバスからはみ出したレイヤーが切り落とされる。
※キャンバスのサイズは変わらない。レイヤーのサイズが変わる。
画像>内容で切り抜き
・レイヤーが小さい場合=キャンバスがレイヤーサイズになる。
・レイヤーが大きい場合=キャンバスからはみ出したレイヤーが切り落とされる。
※はみ出したレイヤーは切り落とされ、
レイヤーの無いキャンバスはトリムされるように、キャンバスサイズが変わる。
画像>キャンバスをレイヤーに合わせる
・レイヤーが小さい場合=キャンバスがレイヤーサイズになる。
・レイヤーが大きい場合=キャンバスがレイヤーサイズになる。
※レイヤーを損なわないようにキャンバスのサイズ変わる。
Visual Studio
・コメント登録/削除:
Ctrl + E>C / Ctrl + E>U
・ブックマーク登録/削除:
Ctrl + K>K
・ブックマーク移動:
Ctrl + K>N
・定義元へ移動:
F12
・オブジェクトが使われている一覧(参照):
Shift + F12
・戻る:
Ctrl + –
・対応するカッコにジャンプ:
Ctrl + ]
・指定行へ移動:
Ctrl + g
・デバッグ実行:
F5
IME
普段はGoogle日本語入力を利用。
・確定後修正
確定後、
Ctrl + BS
で、確定前の状態に戻し、もう一度、
Ctrl + BS(またはEsc)
でかな状態に戻せば部分的に修正できる。
Escだと押しすぎるとキャンセルされてしまうので、
Ctrl + BS
を2回押す方が無難。
・変換
カタカナ変換
Ctrl + I
ひらがな変換
Ctrl + U
半角変換
Ctrl + O
英数変換
Ctrl + P
半角のカタカナ、英数は、
Ctrl + I → O / Ctrl + P → O
と入力する。
・区切位置の移動
区切位置の移動
Ctrl + K / Ctrl + L
変換対象の切り替え
Ctrl + S / Ctrl + D
変換対象の部分確定
Ctrl + N
C# SSH.NET
資料が少ない。NuGetでSSH.NETと検索。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
using System; using System.Windows.Forms; using Renci.SshNet; namespace BlogBackup { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { var pkci = new PrivateKeyConnectionInfo("URL",22, "user", new PrivateKeyFile("key", "pass")); using (var ssh = new SshClient(pkci)) { ssh.Connect(); var cmd = ssh.CreateCommand("ls"); cmd.Execute(); ssh.Disconnect(); } using (var ftp = new SftpClient(pkci)) { ftp.Connect(); ftp.DownloadFile("/home/xxx/test.sql", System.IO.File.OpenWrite("test.sql")); ftp.Disconnect(); } } } } |
Hyper-V debianインストール
msinfo32 > システム要約
下部を見るとHyper-Vが使えるかどうか確認できる。
optionalfeatures
Hyper-Vにチェックして機能追加。
Windows管理ツール > Hyper-Vマネージャー
を起動し、仮想マシンを作成する。
・第1世代
・起動メモリ1024MB
・動的メモリ
・規定のスイッチ
Hyper-Vマネージャーから作成した仮想マシンを右クリックしてプロパティを表示し、
DVDドライブにISOをマウントする。
今回はdebian/64bitのisoファイルをマウントした。
起動し接続すれば、リモート接続と同じように操作ができる。
今回試したPCの性能では実用的ではなかった。当然ある程度の性能は必要。
また相性も悪いようで操作中何度もフリーズしてしまった。
C# 正規表現でテキスト解析
以前も似たようなものを作った。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using System.Text.RegularExpressions; namespace JAN解析 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int i = 1; string path = Application.StartupPath + @"\jan"; StreamWriter sw = new StreamWriter(Application.StartupPath + @"\out.txt", false, Encoding.GetEncoding("shift_jis")); foreach (string fileName in Directory.GetFiles(path)) { this.Text = i.ToString(); using (StreamReader sr = new StreamReader(fileName, Encoding.GetEncoding("shift_jis"))) { string line = ""; string date = ""; string staff_name = ""; string point = ""; string card_no = ""; while (sr.Peek() > -1) { line = sr.ReadLine(); if (new Regex("--------------------------------").IsMatch(line)) { date = ""; staff_name = ""; point = ""; card_no = ""; } else if (new Regex(@"^\d{4}年\d{2}月\d{2}日").IsMatch(line)) { Match m = new Regex(@"^\d{4}年\d{2}月\d{2}日").Match(line); date = m.Groups[0].Value; } else if (new Regex(@"^No00[0-9]\S*").IsMatch(line)) { Match m = new Regex(@"^No00[0-9](\S*)").Match(line); staff_name = m.Groups[1].Value; } else if (new Regex(@"^\s訂正ポイント\s*[0-9]*点").IsMatch(line)) { Match m = new Regex(@"^\s訂正ポイント\s*([0-9]*点)").Match(line); point = m.Groups[1].Value; } else if (new Regex(@"^カ-ドNO[0-9]*").IsMatch(line)) { Match m = new Regex(@"^カ-ドNO([0-9]*)").Match(line); card_no = m.Groups[1].Value; } if (date != "" && staff_name != "" && point != "" && card_no != "") { string matched = date + "," + staff_name + "," + card_no + "," + point + "\r\n"; sw.Write(matched); date = ""; staff_name = ""; point = ""; card_no = ""; } } } i++; } sw.Close(); MessageBox.Show("完了"); } private void button2_Click(object sender, EventArgs e) { int i = 1; string path = Application.StartupPath + @"\jan"; StreamWriter sw = new StreamWriter(Application.StartupPath + @"\out.txt", false, Encoding.GetEncoding("shift_jis")); foreach (string fileName in Directory.GetFiles(path)) { this.Text = i.ToString(); using (StreamReader sr = new StreamReader(fileName, Encoding.GetEncoding("shift_jis"))) { string line = ""; string date = ""; string staff_name = ""; string point = ""; string card_no = ""; while (sr.Peek() > -1) { line = sr.ReadLine(); if (new Regex("--------------------------------").IsMatch(line)) { date = ""; staff_name = ""; point = ""; card_no = ""; } else if (new Regex(@"^\d{4}年\d{2}月\d{2}日").IsMatch(line)) { Match m = new Regex(@"^\d{4}年\d{2}月\d{2}日").Match(line); date = m.Groups[0].Value; } else if (new Regex(@"^No00[0-9]\S*").IsMatch(line)) { Match m = new Regex(@"^No00[0-9](\S*)").Match(line); staff_name = m.Groups[1].Value; } else if (new Regex(@"^\s割引券\s*[0-9]*点").IsMatch(line)) { Match m = new Regex(@"^\s割引券\s*([0-9]*)点").Match(line); point = m.Groups[1].Value; } else if (new Regex(@"^カ-ドNO[0-9]*").IsMatch(line)) { Match m = new Regex(@"^カ-ドNO([0-9]*)").Match(line); card_no = m.Groups[1].Value; } if (date != "" && staff_name != "" && point != "" && card_no != "") { string matched = date + "," + staff_name + "," + card_no + "," + point + "\r\n"; sw.Write(matched); date = ""; staff_name = ""; point = ""; card_no = ""; } } } i++; } sw.Close(); MessageBox.Show("完了"); } private void button3_Click(object sender, EventArgs e) { int i = 1; string path = Application.StartupPath + @"\jan"; StreamWriter sw = new StreamWriter(Application.StartupPath + @"\out.txt", false, Encoding.GetEncoding("shift_jis")); foreach (string fileName in Directory.GetFiles(path)) { this.Text = i.ToString(); using (StreamReader sr = new StreamReader(fileName, Encoding.GetEncoding("shift_jis"))) { string line = ""; string date = ""; string staff_name = ""; string amount = ""; string card_no = ""; while (sr.Peek() > -1) { line = sr.ReadLine(); if (new Regex("--------------------------------").IsMatch(line)) { date = ""; staff_name = ""; amount = ""; card_no = ""; } else if (new Regex(@"^\d{4}年\d{2}月\d{2}日").IsMatch(line)) { Match m = new Regex(@"^\d{4}年\d{2}月\d{2}日").Match(line); date = m.Groups[0].Value; } else if (new Regex(@"^No00[0-9]\S*").IsMatch(line)) { Match m = new Regex(@"^No00[0-9](\S*)").Match(line); staff_name = m.Groups[1].Value; } else if (new Regex(@"^合計\s*\\[0-9,]*").IsMatch(line)) { Match m = new Regex(@"^合計\s*(\\[0-9,]*)").Match(line); amount = m.Groups[1].Value; amount = amount.Replace(",", ""); } else if (new Regex(@"^カ-ドNO[0-9]*").IsMatch(line)) { Match m = new Regex(@"^カ-ドNO([0-9]*)").Match(line); card_no = m.Groups[1].Value; if (card_no != textBox1.Text) card_no = ""; } if (date != "" && staff_name != "" && amount != "" && card_no != "") { string matched = date + "," + staff_name + "," + card_no + "," + amount + "\r\n"; sw.Write(matched); date = ""; staff_name = ""; amount = ""; card_no = ""; } } } i++; } sw.Close(); MessageBox.Show("完了"); } } } |
Microsoft Office プロダクトキー確認方法
入ってるバージョンなどによって微妙に違う。
ちなみに、所有している中の2台は、
cscript “C:\Program Files\Microsoft Office\Office16\OSPP.VBS” /dstatus
cscript “C:\Program Files (x86)\Microsoft Office\Office15\OSPP.VBS” /dstatus
となっていた。