YAS's VB.NET Tips
 
for School
学校向け
2018/09/17

プリントキッズダウンローダーVer.2.0

| by:YAS
 ぷりんときっずのプリントをまとめてダウンロードするソフトウェアです。表示しているページのPDFファイルをまとめてダウンロードしたり,カテゴリ一覧から選択してカテゴリ内のすべてのPDFファイルをダウンロードすることもできます。
 ぷりんときっずのトップページでダウンロードボタンをクリックすれば,ぷりんときっずのすべてのプリントを自動的にダウンロードすることもできます。
 保存するフォルダ名は,パンくずリストと同じフォルダ名になります。また,プリントのファイル名はPDFの見出しの文に付け替えて,探しやすくなるようにしました。
(ぷりんときっずのアイコンは,起動時にぷりんときっずのページのFaviconをダウンロードして使っています。WebページのFaviconを表示するのと同じと考えてもらえるといいのだけれど…)


○ダウンロード     



17:00
2018/06/10

家庭訪問支援GoogleMaps

| by:YAS
 家庭訪問をする際に,ゼンリンの住宅地図やGoogleマップで訪問する家を探すのですが,結構時間がかかります。そこで,Googleマップに簡単に訪問先の目印をつける方法を考えてみました。下の動画のように,訪問先の名前と住所をCSVで用意し,ブラウザにドラッグ&ドロップするだけで,自動的に目印が作られます。また,目安として半径4kmの円を表示したり,印刷すると薄くて見にくいGoogleマップの道路の濃い色に変えて表示したりします。
 


 下のようなCSVを用意します。1行目に[家庭訪問支援]と記入し,2行目から,訪問先の名前,住所と記入していきます。最後の行には改行を入れないでください。
[家庭訪問支援]
飯高特別支援学校,匝瑳市飯高1692
飯高寺,匝瑳市飯高1789
校門桜,匝瑳市小高268
安久山のスダジイ,匝瑳市安久山197
ふれあいパーク八日市場,匝瑳市飯塚299-2
松山庭園美術館,匝瑳市松山630
香取市立山倉小学校,取市山倉672
多古町立常磐小学校,香取郡多古町南玉造162
多古町立中村小学校,香取郡多古町南中349-2
匝瑳市立豊和小学校,匝瑳市大寺1492
匝瑳市立吉田小学校,匝瑳市吉田4020
ひかり学園,香取郡多古町北中1309-160
第2ひかり学園,香取郡多古町北中1269

 下のHtmlをメモ帳にコピー・貼り付けして,「GoogleMaps.html」のような名前を付けて保存してください。GoogleMapsAPIのKeyを取得して,「xxxxxx~」のところに記入してください。
  ダブルクリックして,ブラウザに読み込ませ,「ここにCSVファイルをDrag&Dropしてください。」と表示されたら,上のCSVファイルをドラック&ドロップしてください。
<!DOCTYPE html>
<html>
<head>
<title>GoogleMap</title>
<meta name="viewport" content="initial-scale=1.0" />
<style>
  
#map {
    
height100%;
    
text-aligncenter;
    
line-height300px;
    
font-weightbolder;
  }
  
html,body {
    
height:100%;
    
margin0;
    
padding:0;
  }
  
.gm-style-iw {margin-left0pxmargin-top:2px;}
  
.gm-style-iw + div {displaynone;}
  
.searchBox {
    
background-color'#00fff';
    
font-size15px;
    
font-weight300;
    
margin-top10px;
    
margin-left12px;
    
padding0 11px 0 13px;
    
text-overflowellipsis;
    
width300px;
    
height29px;
    
border1px solid transparent;
    
border-radius2px 0 0 2px;
    
box-sizingborder-box;
    
box-shadow0 2px 6px rgba(0, 0, 0, 0.3);  }
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3&key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&libraries=places"></script>
<script> 
  
//Dropイベント
  
function dropZone_drop(e) {
    e.stopPropagation();
    e.preventDefault();
    
var mapDiv = document.getElementById("map");
    
var text = mapDiv.innerText;
    
//MapTypeを定義し,道路の色を変更する
    
var styledMapType = new google.maps.StyledMapType([
      {
        featureType: 
'road',
        elementType: 
'geometry',
        stylers: [{color: 
'#C0C0C0'}]
      },{
        featureType: 
'road.highway',
        elementType: 
'geometry',
        stylers: [{color: 
'#FF0000'}]
      },{
        featureType: 
'road.arterial',
        elementType: 
'geometry',
        stylers: [{color: 
'#FFA500'}]
      },{
        featureType: 
'road.local',
        elementType: 
'geometry',
        stylers: [{color: 
'#C0C0C0'}]
      },{
        featureType: 
'administrative.locality',
        elementType: 
'geometry',
        stylers: [{color: 
'#0000FF'}]
      }
    ],{name: 
'道路強調'});
    
var map = new google.maps.Map(document.getElementById("map"), {
      zoom: 16,
      mapTypeControlOptions: {
        mapTypeIds: [
'roadmap''satellite''道路強調']
      }
    });
    map.mapTypes.set(
'道路強調', styledMapType);
    map.setMapTypeId(
'道路強調');
    
//検索ボックスを初期化する
    initialize_searchBox(map);
    
//CSVを読み込み,InfoWindowで表示する
    
var bounds = new google.maps.LatLngBounds();
    
var center;
    
var addressList;
    
var reader = new FileReader();
    reader.readAsText(e.dataTransfer.files[0], 
'shift-jis');
    
//geocoderで住所から座標を取得し,InfoWindowでマップ上に表示する
    reader.addEventListener(
'load'function() {
      addressList = reader.result.split(
'\n');
      
if (addressList[0] == '[家庭訪問支援]\r') {
        addressList.shift();
      } 
else {
        alert(
"住所一覧をドロップしてください。\n" +
              
"1行目に'[家庭訪問支援]'と記入してください。");
        mapDiv.innerText=text;
        
return;
      }
      addressList.forEach(
function(address) {
        
var location = address.split(',');
        
var geocoder = new google.maps.Geocoder();
        
var timerID = setInterval( function() {
          geocoder.geocode( { 
'address': location[1] }, function(results, status) {
            
if (status=='OK') {
              
var position = results[0].geometry.location;
              
if (center == null) {
                center = position;
                
//中心から半径4000メートルの円を描く
                
new google.maps.Circle({
                  fillColor: 
'#ff0000',
                  fillOpacity: 0,
                  center: center,
                  map: map,
                  radius: 4000,
                  strokeColor: 
'#ff0000',
                  strokeOpacity: 0.8,
                  strokeWeight: 2
                });
              }
              
//表示領域にInfoWindowが入るように拡張する
              bounds.extend(position);
              map.fitBounds(bounds);
              map.setCenter(center);
              
//InfoWindowを表示する
              
var info = new google.maps.InfoWindow( {
                position:  position,
                content: 
'<div style="font-weight: bold;">' + location[0] + '</div>'
              });
              info.open(map);
              clearInterval(timerID);
            } 
else if (status != 'OVER_QUERY_LIMIT') {
              
//使用制限以外のエラーが発生したらスキップする
              alert(
"使用制限以外のエラーが発生したのでスキップします。\n" +
                    
"Status:" + status +"\n" +
                    location[0] + 
" " + location[1]);
              clearInterval(timerID);
            }
          });
        }, 3000);
      });
    });
  }

  
//Dragイベント
  
function dropZone_dragOver(e) {
    e.stopPropagation();
    e.preventDefault();
    e.dataTransfer.dropEffect = 
'copy'
  }

  
//初期化(Drag & Dropのイベントを設定する)
  
function initialize() {
    
var dropZone  = document.getElementById("map");
    dropZone.addEventListener(
'dragover', dropZone_dragOver, false);
    dropZone.addEventListener(
'drop', dropZone_drop, false);
  }

  
//検索ボックスを初期化する
  
function initialize_searchBox(map) {
    
//searchBoxを作成・追加する
    
var input = document.createElement("input");
    input.className=
"searchBox"
    
var searchBox = new google.maps.places.SearchBox(input);
    map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);   
    
//サーチボックスの検索領域をマップのビューポートに設定する
    map.addListener(
'bounds_changed'function() {
      searchBox.setBounds(map.getBounds());
    });
    
var markers = [];
    searchBox.addListener(
'places_changed'function() {
      
var places = searchBox.getPlaces();
      
if (places.length == 0) {
        
return;
      }
      
//現在のマーカーを消去する
      markers.forEach(
function(marker) {
        marker.setMap(
null);
      });
      markers = [];
      
//検索結果のマーカーを表示する
      
var bounds = new google.maps.LatLngBounds();
      places.forEach(
function(place) {
        
if (!place.geometry) {
          
return;
        }
        markers.push(
new google.maps.Marker({
          map: map,
          title: place.name,
          position: place.geometry.location
        }));
        
if (place.geometry.viewport) {
          bounds.union(place.geometry.viewport);
        } 
else {
          bounds.extend(place.geometry.location);
        }
      });
      map.fitBounds(bounds);
    });
  }
</script>
</head>
<body onload="initialize()">
  
<div id="map" >ここにCSVファイルをDrag&amp;Dropしてください</div>
</body>
</html>

 下の「お試しマップ」のリンクから,試していただけます。ただ,APIの無料使用制限に達してしまうため,お試し程度にとどめてください。
 お試しマップ


参考
GoogleMapsAPI マーカー
・【Google Maps JavaScript API v3】すべてのマーカーを地図の中に収める【LatLngBounds】
GoogleMapsAPI Places search box
07:30
2018/02/20

平成29年度千葉県標準学力検査集計表Ver.10.3

| by:YAS

○千葉県標準学力検査集計表の概要

 毎年3学期に行われる千葉県標準学力検査の集計表です。全学年・全教科の集計に対応しています。また,手引き巻末の集計表と裏表ともに極力同様に出力されるようにしてあります。
  児童氏名の入力を省略したり,全教科をまとめて印刷したりする便利機能を搭載しています。
  なお,本集計表は平成29年度専用です。配点等の変更がある場合がありますので,平成29年度以外の集計には使用しないでください。

※本集計表は,Excel2013(64bit)にて作成しました。マクロを使用しているので,必ずマクロを有効にしてお使いください。(Excel2007,2010,2016でも動作可能のはずです。) 


○千葉県標準学力検査集計表の特長

①児童氏名の入力の省略ができる。
②各学年,各教科の集計表はマクロによって自動的に作成されるので,全学年全教科対応するわりにはファイルが小さい。
③テスト付属の集計表とよく似た印刷結果が得られる。
④テスト付属の集計表の裏と表の両方を,得点の入力のみで集計できる。
⑤メニュー画面とセルの保護の利用で,誤操作を極力排除しているので,エクセル初心者でも簡単。


○ダウンロード     


○更新履歴 

Ver.10.3 2018/02/20
  ・平成29年度の配点に対応しました。(平成28年度から変更ありません。)
  ・タイトルを平成29年度に変更しました。
  ・国語問題別得点一覧表の変更に対応。(国語の「言語事項」を「言語」に変更。)(この変更に何か意味があるのだろうか?)
  ・校章を変更。
  ・「お約束」「問い合わせ先」から個人情報を削除。問い合わせメールアドレスを本集計表専用アドレスに変更。
  ・「新バージョンの取得について」をダウンロードページの表示に変更。ダウンロードアドレスを変更。
Ver.10.2 2017/02/27
  ・2016.02.24に修正したはずの「セル範囲を削除した場合などにエラーが出る不具合を修正」が反映されていなかったのを修正

Ver.10.1 2017/02/10
  ・平成28年度の配点に対応しました。(平成27年度から変更ありません。)
  ・タイトルを平成28年度に変更しました。
  ・手引きに観点別評価基準が掲載されたため,集計表の観点別評価基準欄を復活しました。

Ver.10 2016/02/16
  ・平成27年度の配点に対応しました。
  ・タイトルを平成27年度に変更しました。
  ・手引きに観点別評価規準の記載がないため,実現の状況ABCは一律に正答率84~60%をBとしました。
  ・デバッグモードの入り口を作成しました。(作成者用)
  ・連絡先フォームをESCキーで閉じられるようにしました。
  ・A4に印刷するよう列幅の係数を微調整。
  ・情報・視聴覚研究部より配付するようにしたので,新バージョンの配付方法を変更
  ・各教科集計表作成を高速化&作成中の表示を行うよう追加
  ・配点よりも大きな数を入力したときにビープ音が鳴るよう機能追加
  ・配点よりも大きな数を入力したときにセルに色がつくよう条件付き書式を設定

Ver.9.1A 2015/02/18
  ・タイトルを平成26年度に変更しました。
  ・平成26年度の配点に対応していることを確認しました。

Ver.9.1 2014/02/17
  ・平成25年度の配点に対応していることを確認しました。
  ・理科の集計表の太線がおかしな所に表示される不具合を修正しました。
  ・集計欄の数字が###になる不具合を修正しました。
  ・集計表のページ設定の規定値をA4に変更しました。
  ・「新バージョンの取得について」ボタンのリンク先を栗源小学校のWebに変更しました。

Ver.9.0 2013/02/20
  ・平成24年度の配点に対応していることを確認しました。
  ・手引きに観点別評価基準が掲載されたため,集計表の観点別評価基準欄を復活。
  ・理科で問題番号の上に観点を書くように変更。算数の観点ごとに太線を引くように変更。
  ・集計表の扱いを栗源小学校と香取市のセキュリティーポリシーに沿うよう変更しました。

Ver.8.9 2012/02/15
  ・平成23年度の配点に対応しました。
  ・集計表の扱いを佐原小学校と香取市のセキュリティーポリシーに沿うよう変更しました。

Ver.8.8 2011/02/17
  ・学年が5年生の場合,学年を「5年」のまま,変更せずに使った場合,昨年度の配点が適用されてしまう不具合を修正

Ver.8.7 2011/02/15
  ・作成にExcel2010 64bit版を使用しました。
  ・平成22年度は学力テストの配点等に変更がありましたので,それに対応しました。
  ・観点別評価基準ABCの基準が実施の手引に記載されていないので,算出しないようにしました。
  ・Excel2010で保存する際に互換性チェックのダイアログが表示される部分を修正しました

Ver.8.6 2010/02/16
  ・平成21年度は学力テストの配点等に変更がありましたので,それに対応しました。
  ・観点別評価基準ABCの基準が実施の手引に記載されていないので,算出しないように変更

Ver.8.4 2009/02/16
  ・平成20年度の集計表は19年度と基本的に同じです。平成19年度のファイルでも集計できます。
  ・4年生社会の領域名を「地域の人々の移り変わり」に修正。

Ver.8.3 2008/02/18
  ・平成19年度の集計表は18年度と基本的に同じです。18年度のファイルでも集計できます。
  ・観点別評価基準ABCを一定の割合から実施の手引に基づいた値に変更
  ・集計表の作成マクロをリファクタリング
  ・表現上の細かい修正

Ver.8.2 2007/02/15
  ・平成18年度の集計表は17年度と基本的に同じです。17年度のファイルでも集計できます。
  ・細かい修正
Ver.8.1 2006/02/20
  ・問題別得点一覧表の「評価内容(領域)」,「氏名(または記号)」の文字が印刷すると2段になってしまうのを修正
  ・児童名が6文字の時,環境によっては2段になってしまうので,6文字以上は縮小表示するよう変更
  ・児童が40名のとき,氏名入力シートをもう一度開こうとするとエラーになるのを修正
  ・初期化の処理に氏名入力シートの人数を0にする処理を追加 
Ver.8.0 2006/02/13
 ・平成17年度の集計表に対応 
Ver.7.1 2005/02/12
 ・平成16年度の集計表に対応
  ・児童氏名の追加・削除ができないときにメッセージを表示するよう変更
  ・新バージョンのダウンロードページを表示するボタンを追加
  ・その他細かい修正 
Ver.7.0 2004/02/15
  ・平成15年度の配点に対応
  ・理科の選択問題を得点を入力した児童のみ集計するよう変更
  ・集計シートを作成したら学年の変更,児童氏名の追加・削除ができないよう変更
  ・入力ミスや設定ミスに対して対応できるよう修正
  ・その他いろいろ修正 
Ver.6.6 2004/02/14
  ・幻のバージョン
  ・間違って削除してしまった。
  ・FINALDATA2.0でも復活できなかった。
  ・Ver.7.0が遅れた理由。 
Ver.6.0 2003/02/14
  ・バグを修正(大きな実害はありません)
  ・最初に初期化ルーチンが呼ばれなかったバグを修正
   (初期画面にならないことがある,シート見出しが消えないときがある)
  ・すべて印刷のとき,存在するシートのみ最初にチェックが入るよう変更(少し便利に)
  ・学校名の下線が印刷されないときがあるのを修正(プリンタによるんです) 
Ver.59β 平成14年度に対応
  ・平成14年度の配点に対応
  ・男女混合名簿に対応(時代の流れです)
  ・国語の観点名を配点の上に表示
  ・国語の領域を非表示
  ・算数の領域名をABCで配点の上に表示(なぜ算数だけ?)
  ・国語と算数の観点の境目を太線で表示(意味あるのかな?)
  ・理科の選択問題に対応
  ・標準偏差欄を削除
  ・正の字をやめて,「|」を表示(棒グラフ状)
  ・列幅や行高を,もとの集計表と近いものに変更(学年・教科ごとにバラバラの幅なんだもん!) 
Ver.5.8
  ・専用フォントを使用するのをやめる。それに伴い,集計表の裏の「正」の字を表示するのをやめた。
    (もともとあまり意味がない) 
Ver.5.7
  ・エクセル97でエラーがでまくるバグを修正!
  ・というよりエクセル97のバグのせいで実行できなかった部分をエクセル97でも大丈夫なように変更。
  ・コマンドボタンを使うとオブジェクトが操作できないなんてどういうバグなんだ!ひどすぎるぞマイクロソフト!
  ・何日悩んだことか! トホホ 
Ver.5.6
  ・あんまりうまく動かないとの連絡を受けたので,全面的に見直してあります。
  ・いくつかのパソコンで試したので,今度こそうまくいくはずです。
  ・ご迷惑をおかけします。 

Ver.5.5以下は省略(記録が残っていないです…)


20:40