こじんてきメモ

趣味とかを色々簡単に...(╹◡╹)

【VBA】すべてのシートを印刷するマクロ

毎日毎日ある一定タイミングで台帳印刷を行う必要があったので作った。

タスクスケジューラに登録して使う。

今まで5~10分位かかってたけど、導入してからは10秒位で終わるようになった。

このまま全部コピペして、workbook_Openイベントに書けば動く。

Option Explicit
'**************************************************************************************************************************
'★タイトル:「全てのシートを印刷するマクロ」
' 作成者:hamada
Private Sub Workbook_Open()
'0.定義&初期化
    Dim a As String
    Dim b As String
    Dim c As Integer
    Dim msg As Long
    Dim msg1 As Long
    Dim shName() As String
    Dim shName1 As String
    
    b = ThisWorkbook.Name
    c = Worksheets.Count
    shName1 = ""
    ReDim shName(c) As String
    
    For c = 1 To c
        shName(c) = Worksheets(c).Name
        shName1 = shName1 & "「" & shName(c) & "」"
    Next
'1.ダイアログを出して印刷させる処理
    msg = MsgBox("ファイル名:" & b & vbCrLf & "シート:" & shName1 & vbCrLf & vbCrLf & "を印刷します。よろしいですか?", vbYesNo + vbDefaultButton2 + vbQuestion)

    If msg = vbYes Then
        Worksheets.Select
        Application.Dialogs(xlDialogPrint).Show
        msg1 = MsgBox("印刷が終了しました。このまま保存せずに閉じますか?", vbYesNo + vbDefaultButton2 + vbQuestion)
        If msg1 = vbYes Then
            If Workbooks.Count = 1 Then
                Application.Quit
                ThisWorkbook.Close savechanges:=False
            Else
                Application.DisplayAlerts = False
                ThisWorkbook.Close
                Application.DisplayAlerts = True
            End If
            
        Else
            Worksheets(1).Select
        End If
    Else
    End If
    
End Sub

USBメモリを使用できなくするコマンドもしくはバッチ

USBメモリを使用できなくしたい。

対応できる技術探し

1.PNFファイルをアクセス拒否にする方法
2.レジストリ値を変更する方法
3.ローカルグループポリシーで制御する方法
4.製品導入

現場環境について

  • 既存のイントラネット環境があり、既存環境の変更はユーザには許可されない
  • そのため、portshutter等の製品の導入は不可
  • クライアント側ではリモートレジストリサービスはデフォルトで無効となっている
  • 対応にスピード感が求められる

技術と運用と相談した結果

・普段はUSBメモリを使用禁止にしておいて、「ちょっと使いたいから今だけ使えるようにして!」と言われた時だけ有効にする
・「終わった!」と言われたら再度使用禁止にする

具体的な方法

レジストリキー

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UsbStor]

[Start][4] にする事でUSBメモリの使用は禁止となり、 [3] にする事で許可できるので、レジストリをそれぞれに変更するバッチを作成する。

・バッチ本体はクライアント側に仕込んでおき、ショートカットアイコンを同階層に作っておく。

・「使えるようにして!」といわれたらリモートで「USBメモリ有効化バッチ」のショートカットアイコンをデスクトップに出して、叩いてもらう。

・叩いてもらったらリモートでショートカットアイコンを消す。

・終わったよと言われたら、「USBメモリ無効化バッチ」のショートカットアイコンをデスクトップに出して、叩いてもらう。

・ただし、この方法だと、本当に無効にしたのかが分からないので、予めバッチ内にログを吐き出すように細工しておく。

書いといてなんだかわかりにくく書いてる気がするけど、とりあえずそのバッチ↓

USBメモリ有効化.bat

@echo off
title USBメモリ有効化

echo USBメモリを有効にします。
pause
echo 有効化中です。お待ちください。
ping localhost >nul 2>&1
cls
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\USBSTOR" /v "Start" /t REG_DWORD /d 3 /f
echo 認識されない場合はUSBメモリを挿し直してください。
echo.
pause


USBメモリ無効化.bat

@echo off
title USBメモリ無効化

echo USBメモリを無効にします。
pause
echo 無効化中です。お待ちください。
ping localhost >nul 2>&1
cls
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\USBSTOR" /v "Start" /t REG_DWORD /d 4 /f
echo USBメモリを挿している場合は、次回接続時以降反映します。
echo.
pause

蛇足

  • ローカルグループポリシーでやるといろいろできるし、設定値も結局レジストリだが、こちらは再起動、ログオフもしくは何らかの方法でのレジストリの再読み込みが必要になるため、今回は不採用
  • 外付けHDDはリムーバブルディスクじゃないからすり抜けるかもと思ったけど、外付けHDDもちゃんと無効になってくれた
  • pnfのアクセス制限をする方法は、ユーザーに操作をさせる手間と危険性から、真っ先に選択肢からはずした

【windows】ショートカットコマンド

毎日何台ものPCの設定を弄っていると、特定の画面を素早く出したくなるのでこじんてきによく使うコマンドのめも。

コンパネ系

名称 コマンド 備考
コントロールパネル control
インターネットオプション inetcpl.cpl
システム control system キーボードにpauseがあればwin +pause
システムのプロパティ sysdm.cpl
バイスとプリンタ control printers
ネットワーク接続 ncpa.cpl
TabletPC設定 tabletpc.cpl
Windows Update wuapp windows10からは無し
Windowsファイアウォール firewall.cpl

管理系

名称 コマンド
イベントビューア eventvwr.msc
管理ツール control admintools
Hyper-Vマネージャ virtmgmt.msc
グループポリシーエディタ gpedit.msc
サービス services.msc
サーバマネージャ servermanager.msc
バイスマネージャ devmgmt.msc
レジストリエディタ regedit

その他

名称 コマンド
コマンドプロンプト cmd
大鏡 magnify
音量ミキサー sndvol
ファイル名を指定して実行 [Win] + [R]
Windowsの設定 [Win] + [I]
スタートアップフォルダを開く shell:startup
All Usersのスタートアップを開く shell:common startup
送る shell:sendto

VBAでDQ6のダブルアップゲーム作った

ユーザーフォームを使ってVBADQ6のダブルアップゲームを作った。

f:id:hmmr:20190217003848p:plain

最初はいつも2ペアからだったので、同様に10毎からスタート。

f:id:hmmr:20190217003910p:plain

 

f:id:hmmr:20190217003919p:plain

メインのポーカーも作ってみたいけど、まだその力がないのでそのうち・・・

New 2DS LLにCFW入れた話 その5 最終設定

 つづき

II.最終設定
 1.準備
 2.システムアップデート
 3.Homebrew Launcher導入
 4.CIAインストール
 5.DSP ダンプ
 6.CTRNAND Luma3DS
 7.SDカード クリーンナップ
 8.Essentialファイルのバックアップ

事前に下記の最新版をダウンロードしておく

FBI (CIA形式のゲーム、アプリをインストールするもの)
・Anemone3DS (カスタムテーマをインストールするもの)
・Checkpoint (3DSとDSのセーブファイルをバックアップ、修復するもの)
・Luma3DS Updater (今後のCFWのインストールを簡単にするもの)
・GodMode9 (NANDとカートリッジをいろいろやる多機能ツール)
・Homebrew Launcher Loader (Homebrew Launcherを起動するもの)

ここから手順の続き

1.準備
   1.3DSの電源を切る
   2.SDカードをPCに挿す
   5.SDカードの直下に[cias]フォルダを作る
   5.SDカードの[luma]フォルダ内に[payloads]フォルダを作る
     ※ない場合の手順
   6.[3DS]フォルダに[ctr-no-timeoffset.3dsx]をコピーする
   7.[3DS]フォルダに[FBI.3dsx]をコピーする
   8.[cias]フォルダに[Homebrew_Launcher.cia]をコピーする
   9.[cias]フォルダに[lumaupdater.cia]をコピーする
  10.[cias]フォルダに[FBI.cia]をコピーする
  11.[cias]フォルダに[DSP1.cia]をコピーする
  12.[cias]フォルダに[Anemone3DS.cia]をコピーする
  13.[cias]フォルダに[Checkpoint.cia]をコピーする
  14.[GodMode9.zip]を解凍した中にある[GodMode9.firm]を
    [luma]フォルダ内の[payloads]フォルダ内にコピーする
  15.[GodMode9.zip]を解凍した中にある[gm9]フォルダをSDカード直下にコピーする
  16.SDカードを3DSに挿す
  17.3DSの電源を入れる

2.システムアップデート
   1.[本体設定] > [その他の設定] > [本体の更新]をタッチして本体を更新する
   f:id:hmmr:20190216032523j:plain
     ※ここでエラーが出たら、DNS設定を自動にする。
     ※それでもエラーが出たら[CTRTransfer],の手順を行ってから再度更新を行う
      ※本稿では説明しない
      
3. Homebrew Launcher
   1.[ダウンロードプレイ]を起動 
   2.「Lボタン」「十字キー下」「Selectボタン」を同時に押してRosalinaメニューを開く 
   3.「Miscellaneous options」を選択
   4.「Switch the hb.title to the current app.」を選択
   5.「Bボタン」を押下
   6.「Bボタン」を押下してRosalinaメニューに戻る
   7.「Homeボタン」を押下して[ダウンロードプレイ]を閉じる
   8.再度「ダウンロードプレイ」を起動する
     ※[the Homebrew Launcher]が起動する 
   9.[the Homebrew Launcher]から、「ctr-no-timeoffset」を起動する
   f:id:hmmr:20190216021149j:plain
  10.「Aボタン」を押下
     ※途中でやめる時は「Startボタン」を押下
   f:id:hmmr:20190216020752j:plain     
  11.「Startボタン」を押下して[the Homebrew Launcher]に戻る 

4.それぞれのCIAのインストール
   1.[the Homebrew Launcher]から[FBI]を起動する
   2.[SD]を選択
   f:id:hmmr:20190216022320j:plain
   3.[cias]を選択
   4.[current directory]を選択
   5.[Install and delete all CIAs]を選択して「Aボタン」を押下
   6.「Homeボタン」を押下して「ダウンロードプレイ」を終了する

つづく(あと半分)

 

 

 

New 2DS LLにCFW入れた話 その4

 つづき

4.Boot9strapのインストール
   1.[Steel Diver: Sub Wars]を起動して、[the Homebrew Launcher]を起動させる
   2.リストから[FrogTool]を選択して起動する
    ※3DSの下画面タッチか、十字キーで選択してAボタン押下
   3.FrogToolが起動するので十字キーで
   「INJECT patched DS Download Play」にカーソルを合わせてAボタンを押下
   4.処理が終わったら下画面をタッチする
   5.FrogToolの最初の画面に戻るので
   「BOOT patched DS Download Play」を選択してAボタンを押下
   6.
   7.「メモを見る」「メモを書く」の画面に行き着くまで、適当に答えていく。
   ※「書く」の説明は「いらない」を選択。
   8.「メモを見る」「メモを書く」の画面に来たら、「メモを見る」をタッチ
   9.「SDカード」をタッチ
  10.「フォルダ選択」画面に「顔 のアイコン」があるので、選択する
   ※このタイミングで画面がバグり始めるが気にしない
  11.「書く」をタッチ
  12.下画面の左下にある、「カエルのアイコン」をタッチ
  13.メニュー画面の上にある「フィルムのボタン」をタッチ
   ※「終了」の右隣
  14.「十字キー 右」を2回押下してフィルムが「3/3 ページ」の表示となるようにする
   ※この辺から画面がバグり始めるが気にしない
  15.「コピー」ボタンをタッチ
  16.「十字キー 左」を2回押下して、上画面のフィルムを「1/3 ページ」の表示にする
  17.「貼り付け」ボタンをタッチ
  18.「Install boot9strap」を選択して「Aボタン」を押下
  19.「START」と「SELECT」を同時に押下
  20.「Press home to exit」の表示が出るので「ホームボタン」を押下
  21.OKを押下してホーム画面に戻る
   ※もしくは電源長押し
  

  

5.Luma3DSの設定
   1.「SELECTボタン」を押しながら3DSの電源をいれる
    ※Lumaの設定画面が出る。
   2.十字キーで「Show NAND or user string in System Settings」にカーソルをあわせて
    「Aボタン」で選択する
   3.「Startボタン」を押下する
    ※自動で再起動してホーム画面になる

「I.Boot9strap(B9S)のインストール」終了

つづく

New 2DS LLにCFW入れた話 その3

 つづき

3.Steelminer
   1.3DSで[Steel Diver: Sub Wars]を起動してMiiを設定する。
    ※アップデートはしない事。
    ※もしアップデートしてしまった場合はデータ管理からアップデートを削除する事。
   2.[Steel Diver: Sub Wars]を終了する
    ※teel Diverのセーブデータを作成する処理。
   3.3DSの電源を着る
   4.「ここをクリック」して[Steelminer Injector]を開く
   5.[参照]をクリックして先ほど保存した[movable.sed]を開く
   6.[Region]を[JPN]に変更して[Start!]をクリック
    ※PCの性能によって処理が終わるまでの時間がかわる。
   7.[00000001.sav]ファイルが出来るのでダウンロードする。
   8.SDカードをPCに挿す
    ※SDカードリーダの人はPCに繋がってるSDカードリーダ
   9.SDカードの[Nintendo 3DS] > [ID0] > [32文字のフォルダ] > [title] 
    > [00040000] > [000d7c00] > [data] フォルダを開く
  10.[00000001.sav]ファイルが入っているので、
    手順7でダウンロードした[00000001.sav]と入れ替える
    ※もしくは上書きする
  11.SDカードを3DSに入れて、電源を付ける
  12.[Steel Diver: Sub Wars]を起動する
    ※ここまでの手順が成功していれば、[the Homebrew Launcher]が起動する。
  13.3DSの電源を切る。
    

つづく