Excelで内側の線と太枠の線を一度に書くマクロ

選択範囲の外側を太線、内側を普通線にするマクロ。対象のセルを範囲選択してある前提です。

Sub 太枠の表()
'選択範囲の罫線を
'内側:細線、外枠:中太線(まとめデータでよく使う形式)にする

    Application.ScreenUpdating = False
    With Selection
        With .Borders(xlEdgeLeft)
            .Weight = xlMedium
        End With
        With .Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .Weight = xlMedium
            .ColorIndex = xlAutomatic
        End With
        With .Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlMedium
            .ColorIndex = xlAutomatic
        End With
        With .Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Weight = xlMedium
            .ColorIndex = xlAutomatic
        End With
        With .Borders(xlInsideVertical)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With .Borders(xlInsideHorizontal)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
    End With
    Application.ScreenUpdating = True
    
End Sub

Excel全シートのA1セルにカーソルを移動するマクロ

ファイル提出などに。

'A1選択マクロ
Dim myBook As Workbook, mySheet As Worksheet

Set myBook = ActiveWorkbook

'各シートそれぞれでA1にカーソルを移動する
For Each mySheet In myBook.Worksheets
    
    mySheet.Select
    mySheet.Range("A1").Select
    ActiveWindow.ScrollColumn = 1 'シート左端までスクロール
    ActiveWindow.ScrollRow = 1 'シート右端までスクロール

Next mySheet

myBook.Sheets(1).Select '最後に1枚目のシートに移動して終了

任意のフォルダでコマンドプロンプトを起動する方法

マウス操作で起動する場合(Windows10)

  • フォルダをShift+右クリックすると、メニューに「コマンドプロンプトをここで開く」があるので選択。

バッチファイルの場合

フォルダに適当な.batファイルを作成して

cmd

と書いて保存、ダブルクリック実行すればよいです。

古いWindowsの場合

windows10以前だと、実行時の初期フォルダがc:\users(ユーザ名) になっていることがあります。 バッチファイルのあるフォルダを初期フォルダに指定するには、そのフォルダに下記内容でバッチファイルを作成して、ダブルクリック実行します。

スクリプトと同じフォルダに置いておくと便利です。CMDの前にSET PATHなど初期設定を書くこともできます。

書き方その1

%~d0
cd %~dp0
cmd
  • %~d0でドライブの移動(Cドライブ以外にも対応するため)
  • cd %~dp0でフォルダの移動 (cdでなくpopdを使う流派もある)
  • cmdコマンドプロンプト起動

書き方その2

%~d0
cmd /k cd %~dp0
  • cmd /k [文字列]は、文字列をコマンドとして実行します。

%~の色々な書き方はFORコマンドのヘルプ(HELP FOR)に書いてあります。

>HELP FOR

(前略)

また、FOR 変数参照の置換も拡張されました。
次のオプション構文を使うことができます:

    %~I         - すべての引用句 (") を削除して、%I を展開します。
    %~fI        - %I を完全修飾パス名に展開します。
    %~dI        - %I をドライブ文字だけに展開します。
    %~pI        - %I をパス名だけに展開します。
    %~nI        - %I をファイル名だけに展開します。
    %~xI        - %I をファイル拡張子だけに展開します。
    %~sI        - 展開されたパスは短い名前だけを含みます。
    %~aI        - %I をファイルの属性に展開します。
    %~tI        - %I ファイルの日付/時刻に展開します。
    %~zI        - %I ファイルのサイズに展開します。
    %~$PATH:I   - PATH 環境変数に指定されているディレクトリを
                   検索し、最初に見つかった完全修飾名に %I を
                   展開します。
                   環境変数名が定義されていない場合、または検索
                   してもファイルが見つからなかった場合は、この
                   修飾子を指定すると空の文字列に展開されます。

修飾子を組み合わせて、複合結果を得ることもできます:

    %~dpI       - %I をドライブ文字とパスだけに展開します。
    %~nxI       - %I をファイル名と拡張子だけに展開します。
    %~fsI       - %I を完全なパスと短い名前だけに展開します。
    %~dp$PATH:I - PATH 環境変数に指定されているディレクトリを
                   検索して %I を探し、最初に見つかったファイル
                   のドライブ文字とパスだけに展開します。
    %~ftzaI     - %I を DIR コマンドの出力行のように展開します。

上の例の %I と PATH は、他の有効な値で置き換えることができます。
%~ 構文は、有効な FOR 変数名によって区切られます。%I のような大
文字の変数を使うと読み取りやすく、大文字と小文字を区別しない修飾子
との混乱を避けることができます。

回復パーティションを移動したときの話

(回復ドライブのことは書いてません。回復ドライブについてはマイクロソフト公式をどうぞ。 )

とっても長文です。下記目次を見て「あ、ダメだ」と思う方はもっとよいサイトへどうぞ。(作業に危険が多いので、できるだけ丁寧に説明したかったのです。)

環境

  • windows 10(Windows 7からのアップデート)
  • MBRディスク
  • ドライブ位置関係、こんな感じでした。 f:id:fortrand:20180422001318p:plain
  • Cドライブがいっぱいになり、拡張するために回復パーティションを移動しました。以下はその記録です。

準備するもの

パーティションコピーツール

今回は回復パーティションを削除でなく「移動」するため使用します。

Windowsのインストールディスク(ほぼ必須)

トラブル対応用です。インストールに使用したディスクを持っている人は不要ですが、そうでないひとは下記からツールをダウンロードし、ISO作成、DVD書き込みをします。30分程度で済みます。

Windowsが起動しないときにコマンドプロンプト、システム復元、その他が使えるので、システムをいじる人は保険に持っておきましょう。

Cドライブ、回復パーティションのバックアップ

本編で述べますが、作業中一度Windowsがブートしなくなりました。 復帰はできましたが、環境によっては何が起きる分かりません。 できる限り作業前の環境は残しておいたほうがいいです。別HDDを用意して、パーティションやHDD丸ごとを保管しておきましょう*1 復帰しなかったらOSの再インストールしかなくなります。

復元ポイントの作成など

その他、失敗しても戻せるよう、一般に考えられるトラブル対策は全部やっておきましょう。 パーティション管理はいろいろ事故が起きますし、解決法も一通りで無いようです。

その他欲しいもの

  • 作業PC以外のインターネット接続環境(ぐぐれないと解決できない)
  • オフライン作業手順書(ノート、Webの印刷など)
  • 十分な時間

作業前の準備・確認

以下、コマンドプロンプトが出てきますが、すべて管理者権限で使用します。

回復パーティションの確認

再起動時に回復メニューが出るか確認。管理者コマンドプロンプトで、

>reagentc /boottore

再起動するとメニューが出ます。 これが回復環境です。Windowsにログインできなくても、ブートの修正やコマンドプロンプト、システムの復元などができます。 (削除するとこれが使えなくなります。)

準備:回復パーティションの場所や中身を確認

削除に関係ない、コマンドの練習やファイル確認作業などです。

reagentcとdiskpart、コンピュータの管理(compmgmt.msc)を使います。*2

コンピュータの管理

コントロールパネルから開いて、「ディスクの管理」を見ます。 「回復パーティション」と書いてあるパーティションがどのディスクのどの場所にあるのかを覚えておきます。

回復環境の設定確認

コマンドプロンプトreagentc /info

>reagentc /info
Windows 回復環境 (Windows RE) およびシステム リセット構成
情報:

    Windows RE の状態:         Enabled
    Windows RE の場所:         \\?\GLOBALROOT\device\harddisk0\partition0\Recovery\WindowsRE
    ブート構成データ (BCD) ID: 00000000-1111-2222-3333-444444444444
    回復イメージの場所:
    回復イメージ インデックス: 0
    カスタム イメージの場所:
    カスタム イメージ インデックス: 0

REAGENTC.EXE: 操作は成功しました。

diskpart

コマンドプロンプトdiskpartと打つと起動します。 diskpartにはHDDのデータを1秒で全削除するコマンドも入っているため、余計な操作はしないこと*3

list diskで物理ディスクの一覧。

f:id:fortrand:20180422003538p:plain

ディスク選択→パーティション一覧

DISKPART>select disk 0  (0は操作したいディスク番号) 
DISKPART>list partition

パーティション一覧が出ます(450Mのパーティションがそれ。ドライブレターはありません)

回復パーティションを選択して情報表示

DISKPART>select partition 2  (2は回復パーティションの番号に合わせる) 
DISKPART>detail partition

画像のような情報が出ます。「種類:27」「隠し属性:はい」がポイント。 f:id:fortrand:20180422003745p:plain

回復パーティションのファイル確認

回復パーティション 引き続きdiskpart。

DISKPART>assign letter z

と入力すると、(現在選択している)回復パーティションがドライブZとして認識されます*4。(作業用なので、あとでドライブレターは解除します。)

もう一つ管理者コマンドプロンプトを開きます。

>z:
>dir /as /s

z:\Recovory\windowsRe にファイルが入っているファイルが回復環境のファイル(だそう)です。boot.sdi, ReAgent.xml, Winre.wimなどのファイルがあることを確認します。

確認が終わったら、diskpartに戻ってドライブ文字を削除し、元に戻します。

DISKPART>remove letter z

確認だけの人はここで終了です。

パーティションのコピーをする

重要:Cドライブと回復パーティションのバックアップ

重要(2回言う)。以下の削除をする前に、各自の方法でバックアップします。パーティション丸ごとでなくファイルだけコピーする方法もあるようですが、試していません。

本番:パーティション削除と、回復環境の再設定

回復環境をいったん無効化する

おまじない。

>reagentc /disable

回復パーティションの削除

準備編と同じ手順で、回復パーティションを選択します。detailを呼び出して念のため確認します。

DISKPART>select disk 999 (999は操作したいディスク番号) 
DISKPART>list partition

DISKPART>select partition 888  (888は回復パーティションの番号に合わせる) 
DISKPART>detail partition

list partition, detail partitionなどで、現在選択しているパーティションが確実に回復パーティションであることを確認します。間違ってCドライブ消したら取り返せないため、最低3回は確認します。

間違いないと確信できたら、deleteコマンドで削除します。

DISKPART>delete partition override

1秒で消えます。「コンピュータの管理」を見てパーティションが消えたことを確認します。

ここでいったん再起動します。起動しなくなるかもしれないですよ。というか起動しなかったです。

外伝:再起動しなかった

※無事起動できた人は次の章へスキップ

再起動したところ、Windowsが起動しなくなりました。起動直後に何やら英語(忘れた)メッセージが出て、Windowsのロゴには進まない状態でした。

事前作成したWindowsインストールディスクを使用して、色々やったところ再度起動できるようになりました。が、メモをし損ねて記憶があいまいです。

ダメだったもの

直った手順(最後のbcdboot以外は順番を覚えていません…)

  • diskpartでOSのドライブをアクティブに
  • bootsect /nt60 c: /mbr
  • bcdboot c:/windows /l ja-JP

再起動後、回復パーティションを再設定する

削除前にバックアップした回復パーティションを再設定します。reagentc /setreimage /pathにパスを渡す必要があるため、

  • diskpartで一時的にドライブレターを割り当てる
  • reagentcコマンドで、新しい回復パーティションを設定する
  • ドライブレター削除

という手順を踏みます。

DISKPART>diskpart 
DISKPART>select disk (ディスク番号)
DISKPART>list partition
DISKPART>select partition (バックアップしたパーティション番号)
DISKPART>assign letter z

コマンドプロンプト(管理者権限)

>reagentc /setreimage /path z:\recovory\windowsRe
>reagentc /info

diskpartに戻ってドライブレターを削除

DISKPART>remove letter z

再起動時に回復メニューが出るか確認

reagentc /boottore 再起動してメニューが出ることを確認します。

これで終了です。お疲れ様でした。

ダメだった場合

最初にとったバックアップから復元しましょう。

参考サイト

*1:その環境が用意できない場合は、作業しないことをお勧めします

*2:コンピュータの管理は開きっぱなしをオススメします

*3:経験者より。cleanは絶対使っちゃダメ

*4:間違った場合は再度assignをやり直すか、「コンピュータの管理」でドライブ文字をつけなおしてください

コマンドラインで呼び出せるコントロールパネル & 管理ツール

  • しくみ:各種ファイルがWindows/system32に存在している。
  • タイトルは「コマンドプロンプトで」としてますが、「ファイル名指定して実行」でも使えます。
  • 一部は管理者権限が必要なので、コマンドプロンプトを管理者で呼びだしておくと便利です。

コントロールパネル

ファイル 中身
appwiz.cpl プログラムの追加と削除
collab.cpl 近くの人と接続
desk.cpl モニタ設定
Firewall.cpl ファイアウォール
Windows ファイアウォールhdwwiz.cpl ハードウェアの追加ウィザード
inetcpl.cpl インターネットオプション
intl.cpl 地域と言語のオプション
irprops.cpl 赤外線
joy.cpl ゲームパッドのオプション
main.cpl マウスのプロパティ
mmsys.cpl サウンド
powercfg.cpl 電源オプション
sysdm.cpl システム
TabletPC.cpl ペンと入力のデバイス
telephon.cpl 所在地情報(?)
timedate.cpl 時刻
wscui.cpl セキュリティセンター

管理ツール系

ファイル 中身
azman.msc 承認マネージャ
certmgr.msc 証明書の管理
CIADV.MSC インデックス サービス
comexp.msc コンポーネント サービス
compmgmt.msc コンピュータの管理
devmgmt.msc バイス マネージャ
diskmgmt.msc ディスクの管理
eventvwr.msc イベントビューア
fsmgmt.msc 共有フォルダの管理
lusrmgr.msc ローカルユーザとグループ
NAPCLCFG.MSC NAPクライアントの構成
perfmon.msc パフォーマンスモニタ
services.msc サービス(管理コンソールの)
taskschd.msc タスクスケジューラ
tpm.msc コンピュータのトラステッド・プラットフォーム・モジュール(TPM)の管理
WF.msc windows ファイアウォール関連
WmiMgmt.msc WMIマネジメント(イベントビューアのサブ)

その他

-「.exe」は入力しなくてもOK。

ファイル 中身
osk.exe スクリーン キーボード
magnify.exe 大鏡
narrator.exe ナレータ

「ファイル名を指定して実行」のみ

ファイル 中身
(フルパス) そのパスでエクスプローラ起動
cmd コマンドプロンプト

ケータイ補償サービスのコスト計算

スマホが壊れました。2016年12月に購入、1年と4か月。 月々サポートがまだ残っているから機種変更はしたくない。ケータイ補償サービスに入っていないので、同機種の交換もできない。困った。

ここでちょっと計算してみました。

ケータイ補償サービス|お客様サポート|NTTドコモ

値段は機種によりますが、手持ちの機種の場合は以下の通り。

  • ケータイ補償サービス 500円/月
  • 交換電話代7500円

ケータイ補償サービスに入っていた場合。2年間同じ機種を使い、その間に1回故障したとして、かかっていた費用は500×24+7500=19500円。つまり、サービスに入らなかったことでこれだけ浮いたわけです。 逆に、2万円くらいで何か対策ができれば、ほぼ同額の出費で済むわけで。

ということで、月々サポートが切れるあと8か月、中古スマホで切り抜ける選択肢も出てきました。どうするかは未定。

小学校プログラミング教育の手引を読んでみる

2020年度から小学校にプログラミング学習が正式に導入されるらしい。

気になったところだけ感想。

小5の数学と小6の理科がメインの様子。ビジュアル型プログラミング言語に言及しているので教材はたぶん大丈夫かなと思う。授業例が三角形の描画とカレントポジション問題なのは昔のLINE文ぽくて古い気がするが、大学の授業が"Hello world"と配列から始まるのに比べたら具体的な分良いと思った。作曲ソフト体験は動画好き子供に受けそう。

心配するなら、手続き型っぽいことだけ教えてるので、あとでオブジェクト指向や設計の話に入った時に邪魔にならないかということ。入り口としては妥当なのかなあ。最初からオブジェクト教えるというやり方も最近あると聞いていたので…。小学生の他の教科知識との兼ね合いも考えると、前提知識を多く必要とする授業はできないので、こんなものかなーと思う。

概念的なガイドラインとしては大きな問題ないと思う。あとは実践次第で改善されていくだろう。ネットバイアスで過剰に批難されるだろうけど*1

心配なのは、実技の課題や宿題だ。 昔はこういうmixiコミュができるくらい宿題質問多かった。C言語コミュのほうに課題の丸投げ質問が多かったため作られたコミュニティだ。

宿題丸投げは、知恵袋でも観測ができる。

「宿題」と書いていない質問もあるから、これは一部だ。 検索して回答を探すのもコンピュータ教育にはなるけど、こういうのが増えてしまわないか心配している。小学生だと、親が率先してやってしまう心配もある。

心配です。

*1:プログラミングを魔法のように過大評価する人が世の中にはいる