SQLの窓

2018年05月27日


VBScript : 新しい Excel の Book を作成する

Excel 2007 以降の場合

VBScript : Excel の新しいBookを作成する
2007 以降の場合、.xls の拡張子で保存時はフォーマットを指定しないと読みだす時に警告が出るようです

サンプルは、.xlsx で保存しています

イントラネットのWEBページで利用されるテクニックの基本的な部分です。イントラネットの場合は、フォーマットを事前に作成しておくので、Excel ブックの作成を行う事は稀ですが、簡単な運用に使う場合は新規にブックが必要になると思います

※ 複数回実行すると上書きされます

昔から、Excel.Application の扱いはけっこう厄介で、実行する毎に Quit しておくとトラブルを最低限に抑える事ができます。しかし、操作方法のルールとリカバリ方法をマニュアル化しておく事が最も重要になります( トラブル時は、非表示のままメモリに残るので、タスクマネージャからタスクの終了をする必要があります )
' ****************************
' Excel オブジェクト作成
' ****************************
Set App = CreateObject("Excel.Application")

' ****************************
' 警告を出さないようにする
' ****************************
App.DisplayAlerts = False

' ****************************
' ブック追加
' ****************************
App.Workbooks.Add()

' ****************************
' 追加したブックを取得
' ****************************
Set Book = App.Workbooks( App.Workbooks.Count )

' ****************************
' ブックにはシート一つ
' ****************************
Set Worksheet = Book.Worksheets( 1 )
Worksheet.Activate()
Call Book.Worksheets.Add(,Worksheet)

' ****************************
' シート名設定
' ****************************
Book.Sheets(1).Name = "新しい情報"
Book.Sheets(2).Name = "予備情報"

' ****************************
' 参照
' ****************************
FilePath = App.GetSaveAsFilename(,"Excel ファイル (*.xlsx), *.xlsx", 1)
if FilePath = "False" Then
	MsgBox "Excel ファイルの保存選択がキャンセルされました"
	Wscript.Quit()
End If

' ****************************
' 保存
' ****************************
on error resume next
Book.SaveAs( FilePath )
if Err.Number <> 0 then
	MsgBox( "ERROR : " & Err.Description )
end if
on error goto 0

' ****************************
' Excel をアプリケーションとして終了
' ****************************
App.Quit()

' ****************************
' Excel を VBScript から開放
' ****************************
Set App = Nothing

' ****************************
' オブジェクト変数を初期化
' ( 初期化しないとオブジェクト扱いされる )
' ****************************
App = Empty


MsgBox( "処理が終了しました" )

Microsoft ドキュメント

Application.GetSaveAsFilename メソッド (Excel)

Application.GetOpenFilename メソッド (Excel)

Worksheets.Add メソッド (Excel)


関連する記事

VBScript : 既存の Excel を PDF に変換する ( Excel 2007以降 )





タグ:VBScript EXCEL
posted by lightbox at 2018-05-27 01:20 | VBS + オブジェクト | このブログの読者になる | 更新情報をチェックする

2018年05月26日


IIS10 を AppCmd.exe を使用して運用する

環境
OS : Windows10 : Windows NT 10.0; Win64; x64
IIS : Microsoft-IIS/10.0
PHP : 5.6.36 : VC11 x86 Non Thread Safe
※ appcmd.exe は C:\Windows\System32\inetsrv にあります ( インターネット インフォメーション サービス (IIS) マネージャー のショートカットのリンク先の InetMgr.exe と同じ場所 ) IIS の基本設定 Windows10 IIS の設定 php.ini の設定として重要なのは、最初は以下の3つです。
cgi.force_redirect = 0
date.timezone = Asia/Tokyo
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT

php.ini の内容を確認する為に、info.php を作成して以下のようにします。
<?php
phpinfo();
?>

php.ini を変更して appcmd.exe で反映させる

▼ php.ini の変更は、アプリケーションプールの『リサイクル』を実行する必要があります


これを appcmd.exe で実行するには以下のようなバッチファイルで可能です。
※ 管理者権限で実行する必要があります
setlocal

@path=%path%;C:\Windows\System32\inetsrv

appcmd recycle APPPOOL "DefaultAppPool"

endlocal


オプションで変更した php.ini の内容
default_charset = "shift_jis"
short_open_tag = On
include_path = ".;c:\php\includes"
extension_dir = "ext"
allow_url_include = On
extension=php_com_dotnet.dll
extension=php_curl.dll
extension=php_fileinfo.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_exif.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_sqlite3.dll
sendmail_path = "C:\pleiades\xampp\sendmail\sendmail.exe"
session.gc_maxlifetime = 5400

appcmd.exe で アプリケーションの追加

新しいPCに保存しておいた環境を構築する場合、一括で作成できます
※ 管理者権限で実行する必要があります
setlocal

@path=%path%;C:\Windows\System32\inetsrv

appcmd add APP /site.name:"Default Web Site" /path:/ab /physicalPath:"C:\user\lightbox\web\system\webhost\ab"
appcmd add APP /site.name:"Default Web Site" /path:/ad /physicalPath:"C:\user\lightbox\web\system\webhost\ad"
appcmd add APP /site.name:"Default Web Site" /path:/admin /physicalPath:"C:\user\lightbox\web\system\webhost\admin"
appcmd add APP /site.name:"Default Web Site" /path:/misc /physicalPath:"C:\user\lightbox\web\system\webhost\misc"

endlocal


その他の appcmd.exe での処理
▼ 停止
appcmd stop SITE "Default Web Site"

▼ 開始
appcmd start SITE "Default Web Site"

▼ ディリクトリの参照を可能にする
appcmd set config "Default Web Site" -section:system.webServer/directoryBrowse /enabled:"True"

参考記事( Microsoft TechNet ) AppCmd.exe の使用の開始 ディレクトリの参照
posted by lightbox at 2018-05-26 21:15 | Windows10 | このブログの読者になる | 更新情報をチェックする

2018年05月22日


PowerShell で C# のソースコード(get_rec_mysql.cs) を使用して System.Data.Odbc で MySQL のデータを一覧表示( csv )

▼ ps.bat : このバッチファイルがある場所にパスを通しています
@powershell -NoProfile -ExecutionPolicy Unrestricted "./%1.ps1"
PowerShell で System.Data.Odbc を使用して MySQL のデータを一覧表示( csv ) では、PowerShell の記述で処理しましたが、特異な環境や目的でも無いかぎり、C# のコードを直接使用したほうが、流用しやすくコストが安く済みます。 get_rec_mysql.cs は、一般的な using を使用した単純なデータベースの行の取得です。このコードを PowerShell で実行するには以下の3行で可能です。
Add-Type -path "get_rec_mysql.cs" `
	-ReferencedAssemblies System.Windows.Forms, System.Data
[Program]::Start()
get_rec_mysql.cs
using System;
using System.Data.Odbc;
using System.Windows.Forms;

public class Program
{
	public static void Start()
	{

		loadMySql();

		Console.WriteLine( "処理が終了しました" );

		MessageBox.Show("処理が終了しました");

	}

	public static void loadMySql() {

		using (OdbcConnection myCon = new OdbcConnection())
		using (OdbcCommand myCommand = new OdbcCommand())
		{
			// 新しい OdbcConnectionStringBuilder オブジェクトを作成
			OdbcConnectionStringBuilder builder = new OdbcConnectionStringBuilder();

			// ドライバ文字列をセット ( 波型括弧{} は必要ありません )
			// 文字列を正確に取得するには、レジストリ : HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI
			builder.Driver = "MySQL ODBC 5.3 Unicode Driver";

			// 接続用のパラメータを追加
			builder.Add("SERVER", "localhost");
			builder.Add("DATABASE", "lightbox");
			builder.Add("UID", "root");
			builder.Add("PWD", "");

			// 内容を確認
			Console.WriteLine(builder.ConnectionString);

			myCon.ConnectionString = builder.ConnectionString;

			// *********************
			// 接続
			// *********************
			try
			{
				// 接続文字列を使用して接続
				myCon.Open();
				// コマンドオブジェクトに接続をセット
				myCommand.Connection = myCon;
				// コマンドを通常 SQL用に変更
				myCommand.CommandType = System.Data.CommandType.Text;
			}
			catch (Exception ex)
			{
				MessageBox.Show(ex.Message);
				return;
			}

			// *********************
			// 実行 SQL
			// *********************
			myCommand.CommandText = "select * from 社員マスタ";

			// *********************
			// レコードセット取得
			// *********************
			try 
			{
				using (OdbcDataReader myReader = myCommand.ExecuteReader())
				{
					string csv_format = "{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10}";
					string out_line = "";

					while( myReader.Read() ) {

						out_line = string.Format(csv_format,
							myReader.GetValue(0).ToString(),
							myReader.GetValue(1).ToString(),
							myReader.GetValue(2).ToString(),
							myReader.GetValue(3).ToString(),
							myReader.GetValue(4).ToString(),
							myReader.GetValue(5).ToString(),
							myReader.GetValue(6).ToString(),
							myReader.GetValue(7).ToString(),
							myReader.GetValue(8).ToString(),
							myReader.GetValue(9).ToString(),
							myReader.GetValue(10).ToString()
						);

						Console.WriteLine( out_line );

					}
					// リーダを使い終わったので閉じる
					myReader.Close();
				}
			}
			catch (Exception ex)
			{
				myCon.Close();
				MessageBox.Show(ex.Message);
				return;
			}

			// 接続解除
			myCon.Close();
 

		}
	}

}




posted by lightbox at 2018-05-22 19:57 | PowerShell | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり