文系のIT勉強メモ

勉強中のメモと、インフラの覚書き

Excelの共有ファイルをつくるとき

ファイルが共有化されてると、できないことがある。

セルの結合の解除。他にもたくさんあるけどひとまず、自分への戒めとしてメモ。

タイトル行の上を、タイトルのジャンルでまとめたくても、セルはまとめず色と線で表現する。列ごとコピーができなかったりいろいろと不便!

VBA フィルタかけてるシートに対してClearContents

フィルタのかかった表があるシートで、手動でA1の左上をクリック=全選択してdeleteボタン押すと、今表示されてる領域だけが消えます。フィルタが外れて、隠れていたデータが出てくる。そこでさらに全選択してdeleteでようやく全て消すことができます。

これが、VBAでも同じことが起きました。フィルタかかったシートに対してClearContentsしても、2回実行せねば消えることがありません。

回避策としては、フィルタを解除してからClearContentsする必要があります。

またそのとき、chatGPTが教えてくれた

On Error Resume Next

On Error GoTo 0

これを外すことができなかったので、ポイントとしてメモしておきます。

外してたらエラーになったのはたぶん、フィルタかかってないときにこれが発動されるとエラーになってしまうんだと思う

サンプルコード

Sub ClearFilteredData()
    On Error Resume Next
    ActiveSheet.ShowAllData ' フィルタを解除
    On Error GoTo 0
    
    ' シートの全ての値をクリア
    ActiveSheet.UsedRange.ClearContents
End Sub

エラーが発生してもプログラム停止しない

    On Error Resume Next
    ' エラーが発生する可能性のあるコード
    ' ...

    On Error GoTo 0
    ' 通常のエラーハンドリングに戻す

    ' エラーが発生しても通常通りメッセージが表示され、プログラムが停止する
    ' ...

sakuraエディタの設定

設定って最初にやったらそれで終わりだから、都度調べてもそんなに負荷ない。

が、けっこう環境が変わって、都度「あ~~あの設定しないと💦不便だな💦」という期間を経て、ある日設定する。

というのを繰り返してて、イライラ感のあるタイミングが頻繁にやってきてるので、もう自分用の設定のメモをしておこうと思う。

タブ式にする

ComTab

https://sakura-editor.github.io/help/HLP000150.html

右端で折り返す

http://mikazukio.blog.jp/archives/12000365.html



バッチ:日時フォルダ作成&そこにファイルコピー(バックアップ)

バックアップ用のバッチを作成した☆

今の業務で、バックアップせよとも、それをバッチかせよとも言われてないんだけど、

自作のVBAでファイルを編集するので、心配で、念のため編集前に毎回バックアップとってたのを、バッチファイルをクリックするだけにしてみた^^とっても便利💕

どういうバッチか

日時のフォルダ「yyyymmdd_hhmmss」を作成し、その配下にファイルをコピーする

コマンドの前提

バッチファイル作ったことあるけど毎回調べながらで全部忘れてきたから、今回はメモ。

  1. バッチファイルでのコメントは、行頭にrem
  2. コマンドプロンプトの画面を表示させたくなかったらecho off
  3. これを1行単位で、この行は表示させない、みたいにするとき@echo off
  4. 変数に値を代入するときの=の前後には、スペースを入れない
  5. 変数を宣言・値を代入したあと、その変数を使用するとき、変数名を%で囲んで使う
  6. 文字列の置換でyyyymmdd_hhmmssを作成した
  7. 書いた後保存するときに、文字コードを気にするほうがいいみたいだけど結局よくわからないまま。動いてるからいっかあ。。な感じ。たぶんshift-JIS

コマンド

echo off

 

rem 0-9時のとき、先頭の空白を0に置き換える

set tmptime1=%time: =0%

 

rem 時刻の先頭8文字を取得

set tmptime2=%tmptime1:~,8%

 

rem 時刻の":"を取り除く

set tmptime3=%tmptime2::=%

 

rem 日付から"/"を取り除いたのと、作成した時刻をつなげてフォルダ名にする

set dirname=bak%date:/=%_%tmptime3%

 

rem 作成したフォルダにファイルコピー

copy C:\asisfolder\file1.txt %dirname%

copy C:\asisfolder\file*.xls %dirname% 

copyについての注釈

  1. コピー先がバッチファイルを置いたフォルダ内にdirnameのフォルダを作成してる想定だからdirnameにパスがついてない
  2. ファイル名は変更しない想定だから%dirname%で終わらせてファイル名を書いていない
  3. ワイルドカードマスク * が使えるから、上の書き方だとfilexxx.xlsもfile2.xlsもコピーしてくれる

 

GMOコイン デフォルトでステーキング設定されてる😿

dicord見てて気づくことができた。SOLだけGMOコインで買ってるんだけど、ステーキング設定されていた。。!!

GMOコインのステーキング画面

ステーキングって税金が難しくなるみたい。
あえてやろうと思うときしかやらないよー💦

なんだよこのデフォルト設定(# ゚Д゚)

こんなものはこうして、、

受け取らない

こうして、、

確認ダイアログ

こうや!

設定変更自体は簡単だった

でも月末時点の設定を翌月に反映、、てことは、SOLいつ買ったかな、12月に買ってたとしたら、12,1,2月=つまり2年間分、税金の手続きでステーキングの計算しなきゃいけないじゃん
ややこいだけでなく、ステーキングに預けてる分が、原資まで含めて利益扱いになるかもしれなくてdiscord上で先輩方が阿鼻叫喚してる。結末見届けねば。

はてなにJS書けるのかチャレンジ

CONNPASSのリンク日付入り

 

 

ひとつ前の記事で書いた、CONNPASSの検索ページを日付、開催地を埋め込んだ状態で開くためのhtml(JS使用)だけど、はてなに書けるのかやってみたのが上記のリンク。ちゃんと使えている。

htmlファイルをローカルにおいてそれをブックマークするとかサーバにホストするんじゃなく、このはてなブログのページをブックマークすれば良さそう。モバイルでも使えて便利だ🙌

CONNPASSのブックマークレットづくり(日付と開催地)

CONNPASSで勉強会情報探すとき、条件はだいたい同じだ。

日付は今日からだいたい1週間のぶんで、開催地は沖縄とオンライン。

CONNPASSの検索画面

東京にいたらイベントが多いのでキーワードで絞り込む必要があったけど、今はこれで充分。逆にしぼることで興味深い勉強会を見逃したくないのでしぼらない。

このCONNPASSの検索画面は頻繁に見るので、日付・開催地の入力が面倒で、いつかブックマークレット作ろうと思っていた。

失敗したけどchatGPTがつくってくれたコードを共有

結果的にできてないんだけど、chatGPTに指示して作らせたコードがあるからメモ兼ねて共有しておきます。consoleのエラーも共有して、広告ブロッカーのせいじゃないすか、ってことだったんだけど、Edgeのほうは広告ブロッカー入ってないし。広告ブロッカーはずしたくなかったので確認できずです。

ブックマークレットの登録方法

Chromeの場合
  1. ブラウザでブックマークバーを表示させてください。表示されていない場合は、Ctrl+Shift+B(Windows/Linux)またはCommand+Shift+B(Mac)で切り替えられます。
  2. ブックマークバー上で右クリックし、「ページを追加」を選択します。
  3. ダイアログボックスが表示されますので、"名前"に好きな名前を入力し、"URL"にブックマークレットのコードを貼り付けます。
  4. ダイアログボックスの"保存"ボタンをクリックします。
Edgeの場合
  1. ブラウザでブックマークバーを表示させてください。表示されていない場合は、Ctrl+Shift+B(Windows/Linux)またはCommand+Shift+B(Mac)で切り替えられます。
  2. ブックマークバー上で右クリックし、「お気に入りの管理」⇒「お気に入りの追加」を選択します。
  3. "名前"に好きな名前を入力し、"場所"をブックマークバーに設定します。
  4. "URL"にブックマークレットのコードを貼り付け、"追加"ボタンをクリックします。
  5. ブックマークレットが登録されたら、対象のページでそのブックマークをクリックすると、ブックマークレットのコードが実行されます。

ブックマークのURL欄に登録する内容

javascript:(function() {
    // 今日の日付を取得
    var today = new Date();
   
    // 7日後の日付を計算
    var sevenDaysLater = new Date();
    sevenDaysLater.setDate(today.getDate() + 7);
   
    // 関数を使って日付をyyyy/mm/dd形式に変換
    function formatDate(date) {
        var year = date.getFullYear();
        var month = date.getMonth() + 1; // 月は0から始まるため、1を加える
        var day = date.getDate();
   
        // 月や日が1桁の場合は0埋めする
        month = month < 10 ? '0' + month : month;
        day = day < 10 ? '0' + day : day;
   
        return year + '/' + month + '/' + day;
    }

    // id="id_start_from"に今日の日付をセット
    document.getElementById('id_start_from').value = formatDate(today);
   
    // id="id_start_to"に7日後の日付をセット
    document.getElementById('id_start_to').value = formatDate(sevenDaysLater);
   
    // id="id_prefectures"に"okinawa"と"online"を選択
    var prefSelect = document.getElementById('id_prefectures');
    var options = prefSelect.options;
    for (var i = 0; i < options.length; i++) {
        options[i].selected = options[i].value === 'okinawa' || options[i].value === 'online';
    }
})();

使い方

上の「ブックマークレットの登録方法」と重複しますが、まずCONNPASSの検索ページを開きます。https://connpass.com/search/

開いたところで、ブックマークから、作成したブックマークレットを選択することで動作させます。

力技で一応解決させた

ブックマークレットができないならと、ローカルにhtmlファイルを置いて、そこにURLリンクだけ記載しました。そのローカルのhtmlファイルをブックマークするというやり方。

htmlはこの1行だけを表示します

URLリンクに今回の検索条件が埋め込んであれば (※)、したいことはできるから。ブラウザで完結せずhtmlファイルをローカルに置いとくっていうのが、うっかり削除したり移動させたりのリスクがあって、いやですけどね。

(※)検索ページで検索した場合でも、検索結果は指定の値が埋め込まれたリンクになる 例)https://connpass.com/search/?q=&start_from=2023/12/18&start_to=2023/12/25&prefectures=okinawa&prefectures=online&selectItem=okinawa&selectItem=online&sort=

ローカルに作成するhtmlファイルの内容

これもchatGPTに指示してつくってもらいました。

<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>connpassの日付入りURL</title>
    <style>
        body {
            text-align: center;
        }
    </style>
</head>

<body>
    <a id="connpassLink" href="#" target="_blank" rel="noreferrer noopener">CONNPASSのリンク日付入り</a>

    <script>
        // 現在の日付を取得
        var currentDate = new Date();

        // 7日後の日付を計算
        var futureDate = new Date();
        futureDate.setDate(currentDate.getDate() + 7);

        // 日付を文字列に変換してフォーマット
        var currentDateStr = formatDate(currentDate);
        var futureDateStr = formatDate(futureDate);

        // リンクのhref属性を更新
        var connpassLink = document.getElementById("connpassLink");
        connpassLink.href = "https://connpass.com/search/?q=&start_from=" + currentDateStr + "&start_to=" + futureDateStr + "&prefectures=okinawa&prefectures=online&selectItem=okinawa&selectItem=online&sort=";

        // 日付をフォーマットするヘルパー関数
        function formatDate(date) {
            var year = date.getFullYear();
            var month = ('0' + (date.getMonth() + 1)).slice(-2);
            var day = ('0' + date.getDate()).slice(-2);
            return year + '/' + month + '/' + day;
        }
    </script>
</body>

</html>

ブックマークの登録の例

file:///C:/Users/USER/Documents/connpass.html

結果的にこれでよかったんじゃね

ブックマークから検索画面にいって、そこでまたブックマークからブックマークレットを指定する、よりも、一度ブックマークからこのhtmlを開いて、そこに載ってるリンクをクリックするだけだから、毎回のクリックの手間はこっちのやり方の方が少ない。

ついでに他にこういうURLに機能持たせたいページがあればここに書いといたらブックマークページとして使えるしね。ブックマークバーは横幅に限りがあるからその代わりにもなるし。

モバイルで使えないのは欠点だけど、どこかにホストしちゃってもいいかもね。秘匿するべき情報は含まないのだし。

ていうかこの機能のブックマークレットは出来上がって記事書いてた

本記事を公開したらはてブロの機能で関連記事が下に表示されて混乱した。3年前にすでにbookmarklet完成させて記事も書いていたんだね私。PC変えたから設定してなかっただけだったんだ。。劣化を思い知らされた。でもchatGPTに勝ってたと思うとちょっと嬉しい。

suika-daisuki.hatenablog.com