ログや注文日時などを「datetime型」でフィールドを入れると思うんですが、そんな時に例えば
ID | order_date
レコード1:1 | 2011-01-01 11:11:11
レコード2:2 | 2011-01-01 12:12:12
レコード3:3 | 2011-01-01 13:13:13
レコード4:4 | 2011-01-01 14:14:14
レコード5:5 | 2011-02-01 15:15:15
レコード6:6 | 2011-02-01 16:16:16
レコード7:7 | 2011-02-01 17:17:17
レコード8:8 | 2011-03-01 18:18:18
レコード9:9 | 2011-03-01 19:19:19
こんな時に「order_date」を普通にGroup BYすると
結果は上と同じになってしまう。
そんな時に意外と便利な方法がこれ
SELECT substring(order_date,1,7) as o_date FROM TB1 GROUP BY o_date;
こうすれば、年と月だけを見てGROUP BYしてくれる。
とっても便利!!
得意な言語PHP, JavaScript , VBAですかね・・・ 今までPGしか勉強してなかったのですが、最近サーバーの事も勉強初めて忘れる事が多いので書き貯めて行こうと思います。
2011年10月2日日曜日
2011年9月8日木曜日
CSSで改ページを挿入できるなんて〜
知りませんでした〜!
CSSでプリント時(印刷時)に改ページを挿入できるスタイルがあったとは〜w
page-break-before: always;
これは便利ですね〜〜〜!
CSSでプリント時(印刷時)に改ページを挿入できるスタイルがあったとは〜w
page-break-before: always;
これは便利ですね〜〜〜!
2011年9月4日日曜日
jQueryでテーブルのヘッダ部分を固定するプラグイン
http://www.otchy.net/javascript/tablefix/
OTCHYさんのページで紹介というか、この方が作られたみたいですが
非常に簡単に、テーブルレイアウトをエクセルの「ウィンドウ枠の固定」のようなことができる。
これは、本当にすばらしぃ〜
OTCHYさんのページで紹介というか、この方が作られたみたいですが
非常に簡単に、テーブルレイアウトをエクセルの「ウィンドウ枠の固定」のようなことができる。
これは、本当にすばらしぃ〜
2011年8月9日火曜日
phpで月末日の取得
PHPで月末日を調べる凄く簡単な方法があった〜
date('y-m-t');
とすると、例えば
例)
echo date('y-m-t', strtotime('2008-02-01'));
とすると、この年の2月は閏年なので結果として2008-02-29と帰って来たらOK
結果:2008-02-29でした
date関数の最後を「t」とする事で、PHP マニュアルに説明があります。
だから、出てくるのか!すばらしぃPHP
date('y-m-t');
とすると、例えば
例)
echo date('y-m-t', strtotime('2008-02-01'));
とすると、この年の2月は閏年なので結果として2008-02-29と帰って来たらOK
結果:2008-02-29でした
date関数の最後を「t」とする事で、PHP マニュアルに説明があります。
t | 指定した月の日数。 | 28 から 31 |
だから、出てくるのか!すばらしぃPHP
2011年8月7日日曜日
MySql GROUP BYでLast idを取得
忘れん為に・・・
こんなテーブルがある。
ここで、SELECT * FROM `Table_Name` WHERE `社員番号` = '1111' GROUP BY `社員番号`とすると
こんな形で出てくるが
ここで欲しいのは、GROUP BYとして、重複データをまとめて、尚かつ社員番号1111のIDの大きい物を出したい
それで、調べてみたら合った
SELECT max(id), id, 社員番号, 名前 FROM `Table_Name` WHERE `社員番号` = '1111' GROUP BY `社員番号`
とすると
と表示される。
これで、社員番号1111の新しいIDと古いIDが両方取得できる
こんなテーブルがある。
ID | 社員番号 | 名前 |
1 | 1111 | Aさん |
2 | 2222 | Bさん |
3 | 3333 | Cさん |
4 | 1111 | Aさん |
5 | 1111 | Aさん |
6 | 4444 | Dさん |
7 | 5555 | Cさん |
8 | 2222 | Bさん |
ここで、SELECT * FROM `Table_Name` WHERE `社員番号` = '1111' GROUP BY `社員番号`とすると
ID | 社員番号 | 名前 |
1 | 1111 | Aさん |
こんな形で出てくるが
ここで欲しいのは、GROUP BYとして、重複データをまとめて、尚かつ社員番号1111のIDの大きい物を出したい
それで、調べてみたら合った
SELECT max(id), id, 社員番号, 名前 FROM `Table_Name` WHERE `社員番号` = '1111' GROUP BY `社員番号`
とすると
max(id) | ID | 社員番号 | 名前 |
5 | 1 | 1111 | Aさん |
と表示される。
これで、社員番号1111の新しいIDと古いIDが両方取得できる
2011年7月25日月曜日
GoogleのSpeech APIがすごぃ!
現在、GoogleのChromeしか対応してないものですが
inputの属性に下記のようにすると、マイクアイコンが出てきて音声入力が可能になっています。
属性「speech」は今のところ飾りのようですが、後々何かあるんでしょうね。
HTML5に実装かな?
IE、FireFoxと試してみましたが、だめでした。
ブラウザの設定なのか、日本語しか聞き取ってもらえませんでした。
「Hello」と発音しても、聞き返されだめでした(私の発音が悪いのかしら…いやいやそんなことないはず!
日本語で「しちがつじゅういちにちはあめでした」と言うとしっかり「7月11日は雨でした」と帰ってきました。
これはすごいですね~
もっともっとChromeが普及してIEを追い越してくれる事を説に願います
inputの属性に下記のようにすると、マイクアイコンが出てきて音声入力が可能になっています。
属性「speech」は今のところ飾りのようですが、後々何かあるんでしょうね。
HTML5に実装かな?
IE、FireFoxと試してみましたが、だめでした。
ブラウザの設定なのか、日本語しか聞き取ってもらえませんでした。
「Hello」と発音しても、聞き返されだめでした(私の発音が悪いのかしら…いやいやそんなことないはず!
日本語で「しちがつじゅういちにちはあめでした」と言うとしっかり「7月11日は雨でした」と帰ってきました。
これはすごいですね~
もっともっとChromeが普及してIEを追い越してくれる事を説に願います
2011年6月27日月曜日
IE8からある互換機能をロックする方法
IE8からある、互換表示させる機能をロックする方法。
metaたぐで指定可能
IE7で固定する場合
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
IE8で固定する場合
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
これを入れておくと、互換表示のボタンがブラウザから消えて
どちらか設定したブラウザでしか開かない
metaたぐで指定可能
IE7で固定する場合
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
IE8で固定する場合
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
これを入れておくと、互換表示のボタンがブラウザから消えて
どちらか設定したブラウザでしか開かない
2011年6月16日木曜日
AjaxZip2がAjaxZip3になっていた
ふと気がつくと、AjaxZip2からAjaxZip3になっていた。
以前からそうだったのか解らないのだけど、AjaxZip3は、GoogleCodeから引き出せる様になっていて、以前AjaxZip2を使っていた時みたいに郵便番号で格納されているファイルを
持つ必要が無い。
GoogleCodeから直接参照出来る様になっていた。
これだけでも便利だと思う。
そして、以前使っていたコード
AjaxZip2.zip2addr('zip1','ken','address','zip2','str);
が
AjaxZip3.zip2addr('zip1','zip2','ken','address','strt');
になる。
さほど変わりはしてないけど、まぁ便利になったと言えるのは無いかな!!!
AjaxZip2 => AjaxZip3になっている。
うしろについてる .zip2addr()は同じで中の引数の順番も変わっている。
ここだけ注意すれば問題無い!!!
便利っすねぇ〜
以前からそうだったのか解らないのだけど、AjaxZip3は、GoogleCodeから引き出せる様になっていて、以前AjaxZip2を使っていた時みたいに郵便番号で格納されているファイルを
持つ必要が無い。
GoogleCodeから直接参照出来る様になっていた。
これだけでも便利だと思う。
そして、以前使っていたコード
AjaxZip2.zip2addr('zip1','ken','address','zip2','str);
が
AjaxZip3.zip2addr('zip1','zip2','ken','address','strt');
になる。
さほど変わりはしてないけど、まぁ便利になったと言えるのは無いかな!!!
AjaxZip2 => AjaxZip3になっている。
うしろについてる .zip2addr()は同じで中の引数の順番も変わっている。
ここだけ注意すれば問題無い!!!
便利っすねぇ〜
2011年5月27日金曜日
PHPでPDFを生成【mPDF】
PHPやHTMLで作成されたWEBページなどをそのままPDFヘ出力してくれる
便利なライブラリを発見(古い?)
まぁあまりPDF出力とか使ってなかったからね・・・・
調べもしてなかった
まぁ調べてると色々と有るみたいですが、私が気に入ったのは「mPDF」
これは便利だと思って、早速インストールしてみたが
最新版mpdf51は、どうも日本語対応してないのか文字化けする。
色々と調べたら「CJK Lang....(ry」ってのをDLして公式に「unifont」ディレクトリに入れろって書いてるが、mpdf51に「unifont」なんてディレクトリないしw
メンドクセ・・・・
色々と調べると、mpdf4xには「unifont」あった。
とりあえずこれで動かすかと思ってやった見たら、日本語奇麗に表示された。
しかし、なぜか画像が表示されない。
うーーーん・・・
と思ったら、見え難かったんだけど、「mPDF5.0」ってのがあった
どうも、これが日本語フォントとかもとりあえずサポート?してるっぽい。
早速使ってみたら
なんとも!イメージ通り表示された!!
おぉ〜ソースコードも奇麗になるし、たった5行6行でPDF出力
凄過ぎるぜ!!
とあるブログを見ると
$mpdf = new mPDF('UTF-8','A4');
と書いてあったが、これは間違い。
$mpdf = new mPDF('ja','A4');
こうしないと、日本語が文字化けしますので、後者が正解。
そして、ダウンロードするのであれば「mPDF v5.0」をDLしてやってください。
http://www.mpdf1.com/mpdf/download
ここからDLできるよん。
便利なライブラリを発見(古い?)
まぁあまりPDF出力とか使ってなかったからね・・・・
調べもしてなかった
まぁ調べてると色々と有るみたいですが、私が気に入ったのは「mPDF」
これは便利だと思って、早速インストールしてみたが
最新版mpdf51は、どうも日本語対応してないのか文字化けする。
色々と調べたら「CJK Lang....(ry」ってのをDLして公式に「unifont」ディレクトリに入れろって書いてるが、mpdf51に「unifont」なんてディレクトリないしw
メンドクセ・・・・
色々と調べると、mpdf4xには「unifont」あった。
とりあえずこれで動かすかと思ってやった見たら、日本語奇麗に表示された。
しかし、なぜか画像が表示されない。
うーーーん・・・
と思ったら、見え難かったんだけど、「mPDF5.0」ってのがあった
どうも、これが日本語フォントとかもとりあえずサポート?してるっぽい。
早速使ってみたら
なんとも!イメージ通り表示された!!
おぉ〜ソースコードも奇麗になるし、たった5行6行でPDF出力
凄過ぎるぜ!!
とあるブログを見ると
$mpdf = new mPDF('UTF-8','A4');
と書いてあったが、これは間違い。
$mpdf = new mPDF('ja','A4');
こうしないと、日本語が文字化けしますので、後者が正解。
そして、ダウンロードするのであれば「mPDF v5.0」をDLしてやってください。
http://www.mpdf1.com/mpdf/download
ここからDLできるよん。
2011年5月22日日曜日
maximum execution time of 30 seconds exceeded php.iniの設定変更
php.iniのmax_execution_timeの設定がデフォルト30となっている。
これは30秒以上かかると、自動的にタイムアウトするって設定らしい。
なので、php.iniのmax_execution_timeの設定を60などと大きくすると
結構な量のデータを処理できる。
ブラウザ側でのタイムアウトの設定もあるみたいなので
大きいからといって、処理できるわけでもないみたい。
そういう時は、「ブラウザ タイムアウト 設定」などで検索するといろいろと出てきます。
IEの場合だとレジストリを触らないとだめみたいですね。
まぁ60とか180くらいならぜんぜんいけるのかな・・・
これは30秒以上かかると、自動的にタイムアウトするって設定らしい。
なので、php.iniのmax_execution_timeの設定を60などと大きくすると
結構な量のデータを処理できる。
ブラウザ側でのタイムアウトの設定もあるみたいなので
大きいからといって、処理できるわけでもないみたい。
そういう時は、「ブラウザ タイムアウト 設定」などで検索するといろいろと出てきます。
IEの場合だとレジストリを触らないとだめみたいですね。
まぁ60とか180くらいならぜんぜんいけるのかな・・・
2011年5月19日木曜日
MySqlを外部接続するための設定
今更な気もしますが、忘れっぽいので・・・・
A.com と B.comがあって
A.comを外部データベースサーバーとして使用する。
B.comはA.comからのデータを取得して閲覧のみ。
A.comのmy.confの中にある
bind-address=127.0.0.1をコメントにする
↓↓↓↓↓↓↓↓↓↓
# bind-address = 12.0.0.1
(bind-addressは外部からの接続を許可しない時に使用します。)
次に、A.comにssh接続する
(phpMyAdminの特権ところでも確認やSQL文を発行して追加する事はできますがROOT権が無かったらエラーになるので、今回はターミナルなどのソフトでSSH接続で行います。)
ssh接続完了したら
mySqlへ移動します
> mysql -u root -p
mysql > となったらOK
次に、GRANTで発行する。
mysql> GRANT ALL PRIVILEGES ON *.* TO user@'%' IDENTIFIED BY '任意のパスワード';
「*.*」だと、全部のテーブルを見れる設定になってしまうので
「TABLE_NAME.*」とすると、見れるテーブルを指定できます。
「user@%」になっている「%」の所を外部のIPアドレスにする事で、指定されたIPからしか接続出来ない様にする。(セキュリティ強化の為)
「user」となってる所は接続用のUSER名かな?(ここらへん解らん)
あまり、私も詳しく理解してないので自己責任でお願いします。
上記QUERYを発行して、OKだったら
Query OK, 0 rows affected (0.00 sec)
A.com と B.comがあって
A.comを外部データベースサーバーとして使用する。
B.comはA.comからのデータを取得して閲覧のみ。
A.comのmy.confの中にある
bind-address=127.0.0.1をコメントにする
↓↓↓↓↓↓↓↓↓↓
# bind-address = 12.0.0.1
(bind-addressは外部からの接続を許可しない時に使用します。)
次に、A.comにssh接続する
(phpMyAdminの特権ところでも確認やSQL文を発行して追加する事はできますがROOT権が無かったらエラーになるので、今回はターミナルなどのソフトでSSH接続で行います。)
ssh接続完了したら
mySqlへ移動します
> mysql -u root -p
mysql > となったらOK
次に、GRANTで発行する。
mysql> GRANT ALL PRIVILEGES ON *.* TO user@'%' IDENTIFIED BY '任意のパスワード';
「*.*」だと、全部のテーブルを見れる設定になってしまうので
「TABLE_NAME.*」とすると、見れるテーブルを指定できます。
「user@%」になっている「%」の所を外部のIPアドレスにする事で、指定されたIPからしか接続出来ない様にする。(セキュリティ強化の為)
「user」となってる所は接続用のUSER名かな?(ここらへん解らん)
あまり、私も詳しく理解してないので自己責任でお願いします。
上記QUERYを発行して、OKだったら
Query OK, 0 rows affected (0.00 sec)
でます。エラーだと何らかのエラー文が出ると思います。
あとは接続ですが
$hostname = ホストのIPアドレス;
$database = TABLE_NAME;
$dbuser = 設定したuser名;
$dbpass = 設定したパスワード;
$con = mysql_connect($hostname, $dbuser, $dbpass) or die(mysql_error());
mysql_select_db($database,$con) or die(mysql_error());
PHPで書くとこんな感じだとおもいますが
これで、接続できたらOKですね。
2011年5月15日日曜日
CKeditorを画像ファイルアップロード可能にする方法
以前から、色々と重宝してるCKEditorですが
デフォルトでは、画像のリンクは出来ますが、画像のファイルアップローダーは付いてないってことで
外部プラグイン「CKfinder」を利用します。
色々と調べると、有料版とか有償版とか書かれてるのですが
たぶん無料で使えます。
ただこんなコメント出てますので意味不明です(笑
「This is the DEMO version of CKFinder. Please visit the CKFinder web site to obtain a valid license.」
まぁとりあえず使えるならDEMOバージョンだろうがどーだっていい。
ってことで,設定を。
まずはCKfinderをDL
最新の物が良いかもしれないですね。
DLしたら、ファイルをサーバーへアップロード(好きな所へ)
アップロードしたら、CKfinderの中の
config.phpを触ります。
33行目のreturn false;をreturn true;へ変更
63行目の$baseUrl = '/user/userfile/'; を 好きなURLヘ変更します。
63行目で書いた場所が画像のアップロード先になります。
これで設定はほぼ完了。簡単。
config.jsの中の
language = "fr"とかってなってるコメントされてるところを
jaとして、コメントはずしてもOK
ちなみに、今回は触りませんが、ここでスキンの設定も出来そうですね。
次は参照元(先)を追加します。
次に、今まで使っていたCKeditorですが
CKfinderを入れる前はたぶんこんな感じになってるのかな
<textarea id="ckeditor" class="ckeditor" name="details"></textarea>
これを変更せずに
<script type="text/javascript">
// This is a check for the CKEditor class. If not defined, the paths must be checked.
if ( typeof CKEDITOR == 'undefined' ){
//CKエディタが見つからん時の処理
}else{
var editor = CKEDITOR.replace( 'ckeditor' );
CKFinder.setupCKEditor( editor, '/参照元/ckfinder/' );
) ;
}
</script>
とします。
とまぁこれで、設定完了です。
超簡単でした。
デフォルトでは、画像のリンクは出来ますが、画像のファイルアップローダーは付いてないってことで
外部プラグイン「CKfinder」を利用します。
色々と調べると、有料版とか有償版とか書かれてるのですが
たぶん無料で使えます。
ただこんなコメント出てますので意味不明です(笑
「This is the DEMO version of CKFinder. Please visit the CKFinder web site to obtain a valid license.」
まぁとりあえず使えるならDEMOバージョンだろうがどーだっていい。
ってことで,設定を。
まずはCKfinderをDL
最新の物が良いかもしれないですね。
DLしたら、ファイルをサーバーへアップロード(好きな所へ)
アップロードしたら、CKfinderの中の
config.phpを触ります。
33行目のreturn false;をreturn true;へ変更
63行目の$baseUrl = '/user/userfile/'; を 好きなURLヘ変更します。
63行目で書いた場所が画像のアップロード先になります。
これで設定はほぼ完了。簡単。
config.jsの中の
language = "fr"とかってなってるコメントされてるところを
jaとして、コメントはずしてもOK
ちなみに、今回は触りませんが、ここでスキンの設定も出来そうですね。
次は参照元(先)を追加します。
<script type="text/javascript" src="/参照元/ckfinder/ckfinder.js"></script>
次に、今まで使っていたCKeditorですが
CKfinderを入れる前はたぶんこんな感じになってるのかな
<textarea id="ckeditor" class="ckeditor" name="details"></textarea>
これを変更せずに
<script type="text/javascript">
// This is a check for the CKEditor class. If not defined, the paths must be checked.
if ( typeof CKEDITOR == 'undefined' ){
//CKエディタが見つからん時の処理
}else{
var editor = CKEDITOR.replace( 'ckeditor' );
CKFinder.setupCKEditor( editor, '/参照元/ckfinder/' );
) ;
}
</script>
とします。
とまぁこれで、設定完了です。
超簡単でした。
2011年4月30日土曜日
SQLのUPDATEで自動で計算して計算してくれる。
MySqlをよく使うのですが
あるテーブル(ZAIKO_KANRI)で例えば
ID , item_name , zaiko
1 , 商品名1 , 10
2 , 商品名2 , 15
3 , 商品名3 , 30
4 , 商品名4 , 5
5 , 商品名5 , 20
と言う感じでフィールドがあったとします。
ここで、例えばUPDATEでzaikoの数をコチラが渡す数値で勝手に足し算、引き算してほしい!って時に便利
例えば、在庫の減算
やっぱりデータベース便利だなぁ〜
結果はこうなる
ID , item_name , zaiko
1 , 商品名1 , 9
2 , 商品名2 , 15
3 , 商品名3 , 30
4 , 商品名4 , 5
5 , 商品名5 , 20
もちろん + すると加算してくれる。
あるテーブル(ZAIKO_KANRI)で例えば
ID , item_name , zaiko
1 , 商品名1 , 10
2 , 商品名2 , 15
3 , 商品名3 , 30
4 , 商品名4 , 5
5 , 商品名5 , 20
と言う感じでフィールドがあったとします。
ここで、例えばUPDATEでzaikoの数をコチラが渡す数値で勝手に足し算、引き算してほしい!って時に便利
例えば、在庫の減算
UPDATE `ZAIKO_KANRI` SET `zaiko` = `zaiko` - 1 WHERE `id` = 1
とすると、ID:1のフィルードzaiko の数値10-1となり、UPDATEと同時に計算してくれるやっぱりデータベース便利だなぁ〜
結果はこうなる
ID , item_name , zaiko
1 , 商品名1 , 9
2 , 商品名2 , 15
3 , 商品名3 , 30
4 , 商品名4 , 5
5 , 商品名5 , 20
もちろん + すると加算してくれる。
2011年3月27日日曜日
Androidアプリを公開する為の設定(Eclipse Export Wizard)
Androidのアプリを公開する為には、設定が必要!!!
EclipceのPackageを右クリックして
Android Tool -> Export Signed Application Package
を選択する。
アプリの名前が入ってるので、そのまま次へ
Create new keystoreを選択する。
Browse...(参照)を押して、公開するapkファイルを選択する。
次に、任意でパスワードを入力する。
こんな感じ〜
パスワードまで入力したら、次へを押す
こんな感じで設定して終了(Finish)を押したら公開出来る設定でapkが生成される。
これで、Androidマーケットに公開できる!
ひゃっほぃ!!!
Androidマーケットにアプリを公開するには、$25が必要です。(一回きり!)
一度$25を払うと、永遠?に払う事無くアプリをがんがん作ればアップできますよ!
ちなみに、Androidマーケットへ公開するには、開発者登録を行えばOKです。
ここで、$25を支払うってことになります。
また、登録方法は難しく無いので(個人情報とクレジット入力するだけ)あえて、紹介はしません。
Googleで「Android 開発者登録」と入力すると沢山でてきますのでそちらを参照してください!
EclipceのPackageを右クリックして
Android Tool -> Export Signed Application Package
を選択する。
アプリの名前が入ってるので、そのまま次へ
Create new keystoreを選択する。
Browse...(参照)を押して、公開するapkファイルを選択する。
次に、任意でパスワードを入力する。
こんな感じ〜
パスワードまで入力したら、次へを押す
こんな感じで設定して終了(Finish)を押したら公開出来る設定でapkが生成される。
これで、Androidマーケットに公開できる!
ひゃっほぃ!!!
Androidマーケットにアプリを公開するには、$25が必要です。(一回きり!)
一度$25を払うと、永遠?に払う事無くアプリをがんがん作ればアップできますよ!
ちなみに、Androidマーケットへ公開するには、開発者登録を行えばOKです。
ここで、$25を支払うってことになります。
また、登録方法は難しく無いので(個人情報とクレジット入力するだけ)あえて、紹介はしません。
Googleで「Android 開発者登録」と入力すると沢山でてきますのでそちらを参照してください!
2011年3月24日木曜日
PHP:今更かも・・・でも便利Glob()
PHPのGlob関数を改めて、良いなぁと思いました。
<?
$dir = "./img/gallery/*.jpg";
$f_list = glob($dir);
for($i=0;$i<count($flist);$i++){
処理
}
var_dump($f_list);
?>
これで、img/gallery/の中にあるJPEGのみを全部取り出してくれる。
以前は、readdirなど使ってましたが・・readdirは「.」「..」とかの処理や
ディレクトリの中に「.txt」など、表示したく無い物を除外する為の処理をしなければダメでしたが、glob()を使えばサクッと取り出せます。
便利なので忘れない様にメモ
<?
$dir = "./img/gallery/*.jpg";
$f_list = glob($dir);
for($i=0;$i<count($flist);$i++){
処理
}
var_dump($f_list);
?>
これで、img/gallery/の中にあるJPEGのみを全部取り出してくれる。
以前は、readdirなど使ってましたが・・readdirは「.」「..」とかの処理や
ディレクトリの中に「.txt」など、表示したく無い物を除外する為の処理をしなければダメでしたが、glob()を使えばサクッと取り出せます。
便利なので忘れない様にメモ
Android Manifestの編集(アップグレード処理)
Android ManifestをEclipsで開いて
Version Codeと言う所(Integer)の数字を1->2とすることで
すでに、そのアプリケーションが入ってる場合、アップグレードと聞かれる様になる。
それをしておかないと、毎回アンインストールして、インストールをし直さないとダメで
結構めんどくさい。
Version Codeと言う所(Integer)の数字を1->2とすることで
すでに、そのアプリケーションが入ってる場合、アップグレードと聞かれる様になる。
それをしておかないと、毎回アンインストールして、インストールをし直さないとダメで
結構めんどくさい。
2011年2月22日火曜日
Excel(エクセル)のセル内で特定の文字をカウント
プログラムとは関係ない・・・
こうすると、セルA1の中に特定の文字がいくつあるかカウントしてくれる。
例)
A1の中から、「¥」がいくつあるか探す。
A1の値が、「AAA¥BBB¥CCC¥DDD」の場合
上の式を書くと、3が返される。
=LEN(A1)-LEN(SUBSTITUTE(A1,"特定文字",""))
こうすると、セルA1の中に特定の文字がいくつあるかカウントしてくれる。
例)
A1の中から、「¥」がいくつあるか探す。
A1の値が、「AAA¥BBB¥CCC¥DDD」の場合
上の式を書くと、3が返される。
2011年2月7日月曜日
Android ボタンを端末のセンターに持ってくる
端末の表示位置で忘れそうなのでMEMO!!
各パーツに黄色部分を追加する事で、パーツの位置を端末のセンターに持ってくる事が出来る。
赤字の部分が、CSSで言う所のマージン
<button
android:text="ClickMe" android:id="@+id/btClick" android:layout_width="100px" android:gravity="center_vertical|center_horizontal" android:layout_height="wrap_content" android:layout_gravity="center_vertical|center_horizontal|center"
android:layout_marginTop="100px" >
</button>
marginに関しては、端末のディスプレイ解像度が違うので
位置がおかしくなるなぁ・・・
なにかいい方法は無いのか・・・
Android開発 独学で作ってみせる!
以前ブログで2月末くらいには!って思ってましたが
ぜんぜんあまかった!(^^;)
思っていた以上に、JAVAに慣れてなくて・・・ようやく少しずつですが
慣れてきました・・・(ヤベェ
躓いた問題点を忘れない為に!!
※ 画面レイアウトで背景を画像にする。
間違ってるかもしれないけど・・・・
/res/layout/main.xmlに下の赤字を追加する。
赤字の@drawable/の次のピクチャって所は、任意で設定
(画像はres/drawable-hdpi/の中に一緒に入れてみたら、あっさりと表示した)
<linearlayout
android:background="@drawable/ピクチャ名"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
</linearlayout>
layout_heightやwidthに関しては"fill_parent"と入ってますが
これは、端末の縦横をいっぱいまで表示するって意味らしぃです。
ぜんぜんあまかった!(^^;)
思っていた以上に、JAVAに慣れてなくて・・・ようやく少しずつですが
慣れてきました・・・(ヤベェ
躓いた問題点を忘れない為に!!
※ 画面レイアウトで背景を画像にする。
間違ってるかもしれないけど・・・・
/res/layout/main.xmlに下の赤字を追加する。
赤字の@drawable/の次のピクチャって所は、任意で設定
(画像はres/drawable-hdpi/の中に一緒に入れてみたら、あっさりと表示した)
<linearlayout
android:background="@drawable/ピクチャ名"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
</linearlayout>
layout_heightやwidthに関しては"fill_parent"と入ってますが
これは、端末の縦横をいっぱいまで表示するって意味らしぃです。
2011年2月6日日曜日
JavaScriptでPHPのnumber_format!
PHPにあるnumber_format()便利ですよね〜
JavaScriptにはそんな関数無いみたいなので、作ってみました
忘れない為にメモ
var num = "10000000";
num.toString().replace(/([0-9]+?)(?=(?:[0-9]{3})+$)/g , '$1,');
出力:10,000,000
JavaScriptでPHPのExplodeと同じSplit関数
すぐ忘れちゃうので、忘れない為にメモ
data1 = "aaa,bbb,ccc";
var str = data1.split(",");
出力
str[0]:aaa
str[1]:bbb
str[2]:ccc
こんな感じ。
data1 = "aaa,bbb,ccc";
var str = data1.split(",");
出力
str[0]:aaa
str[1]:bbb
str[2]:ccc
こんな感じ。
2011年1月29日土曜日
【Mac】Android GoogleMap API Key 証明書の手順
Macで、Eclipseの環境をしっかりとして
ターミナルで
keytool -list -alias androiddebugkey -keystore ~/.Android/debug.keystore -storepass android -keypass android
とすると、認証キーが出てくる。
これを、Sign Up for the Android Maps APIに貼付けて(Generate API Key)押したら
おわり。
ターミナルで
keytool -list -alias androiddebugkey -keystore ~/.Android/debug.keystore -storepass android -keypass android
とすると、認証キーが出てくる。
これを、Sign Up for the Android Maps APIに貼付けて(Generate API Key)押したら
おわり。
2011年1月27日木曜日
2011年1月20日木曜日
Android Appを勉強始めました
Androidの勉強でもがんばろうと思って、18日から環境を整えてがんばろうと思い
今日は出来てないけど、18日はとりあえず定番の「Hello World」からがんばりました。
これから、猛勉強してがんばって行こうと思う!!!
最近仕事も忙しいのですが、何でも作れるよ!って言えるまでがんばります!(^^;)
今日は出来てないけど、18日はとりあえず定番の「Hello World」からがんばりました。
これから、猛勉強してがんばって行こうと思う!!!
最近仕事も忙しいのですが、何でも作れるよ!って言えるまでがんばります!(^^;)
2011年1月16日日曜日
Google YouTubeAPIを使ってみた
Googleから提供されているYouTube APIを使ってみた。
色々と悩みましたが、慣れてしまえば何のその。
結構便利に良い物が面白く作れました!!
忘れない様にコードをここへ・・・
YouTubeに動画をアップロードするプログラム
if($_GET['status']==200){
if($_GET['id']){
$douga_insert = new Sql;
$douga_insert->value = array($login->dataset[0]['id'],$_GET['id']);
$douga_insert->sql_insert('Douga');
$_SESSION['report'] = '動画のアップロードが完了しました';
header('Location: ?dsp=douga_admin');
exit();
}
}
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_YouTube');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
$sDeveloperKey = 'YouTubeAPIの開発コード';
$sAccount = 'YouTubeのログインアカウント(ID)';
$sPassword = 'YouTubeのログインパスワード';
$sMovieTitle = 'DatsuNet Movie '.$login->dataset[0]['user_name'];
$sDescription = '';
$sTags = '';
$sNextUrl = 'アップロード後の戻り先URL(フルパス)';
$authenticationURL= 'https://www.google.com/youtube/accounts/ClientLogin';
$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
$username = $sAccount,
$password = $sPassword,
$service = 'youtube',
$client = null,
$source = 'gwiki', // a short string identifying your application
$loginToken = null,
$loginCaptcha = null,
$authenticationURL);
$httpClient->setHeaders('X-GData-Key', "key=${sDeveloperKey}");
$yt = new Zend_Gdata_YouTube($httpClient);
// create a Zend_Gdata_YouTube_VideoEntry
$myVideoEntry= new Zend_Gdata_YouTube_VideoEntry();
// set up media group as in the example above
$mediaGroup = $yt->newMediaGroup();
$mediaGroup->title = $yt->newMediaTitle()->setText($sMovieTitle);
$mediaGroup->description = $yt->newMediaDescription()->setText($sDescription);
$categoryScheme = 'http://gdata.youtube.com/schemas/2007/categories.cat';
$developerTagScheme = 'http://gdata.youtube.com/schemas/2007/developertags.cat';
$mediaGroup->category = array(
$yt->newMediaCategory()->setText('Autos')->setScheme($categoryScheme),
$yt->newMediaCategory()->setText('mydevelopertag')->setScheme($developerTagScheme),
$yt->newMediaCategory()->setText('anotherdevelopertag')->setScheme($developerTagScheme)
);
$mediaGroup->keywords = $yt->newMediaKeywords()->setText($sTags);
$myVideoEntry->mediaGroup = $mediaGroup;
$tokenHandlerUrl = 'http://gdata.youtube.com/action/GetUploadToken';
$tokenArray = $yt->getFormUploadToken($myVideoEntry, $tokenHandlerUrl);
$tokenValue = $tokenArray['token'];
$postUrl = $tokenArray['url'];
$nextUrl = $sNextUrl;
View部分
echo $form = '<form action="'. $postUrl .'?nexturl='. $nextUrl .
'" method="post" enctype="multipart/form-data">'.
'動画ファイルを選択して下さい:<input name="file" type="file"/>'.
'<input name="token" type="hidden" value="'. $tokenValue .'"/>'.
'<input value="動画アップロード" type="submit" />'.
'</form>';
これで、アップロード出来ます。
そして、削除するには
$videoId = $_GET['YouTubeのVideoID'];
$videoEntryToDelete = $yt->getVideoEntry($videoId, null, true);
$yt->delete($videoEntryToDelete);
これで、消えます。
Googleってすばらしいですね〜最高ですね〜
色々と悩みましたが、慣れてしまえば何のその。
結構便利に良い物が面白く作れました!!
忘れない様にコードをここへ・・・
YouTubeに動画をアップロードするプログラム
if($_GET['status']==200){
if($_GET['id']){
$douga_insert = new Sql;
$douga_insert->value = array($login->dataset[0]['id'],$_GET['id']);
$douga_insert->sql_insert('Douga');
$_SESSION['report'] = '動画のアップロードが完了しました';
header('Location: ?dsp=douga_admin');
exit();
}
}
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_YouTube');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
$sDeveloperKey = 'YouTubeAPIの開発コード';
$sAccount = 'YouTubeのログインアカウント(ID)';
$sPassword = 'YouTubeのログインパスワード';
$sMovieTitle = 'DatsuNet Movie '.$login->dataset[0]['user_name'];
$sDescription = '';
$sTags = '';
$sNextUrl = 'アップロード後の戻り先URL(フルパス)';
$authenticationURL= 'https://www.google.com/youtube/accounts/ClientLogin';
$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
$username = $sAccount,
$password = $sPassword,
$service = 'youtube',
$client = null,
$source = 'gwiki', // a short string identifying your application
$loginToken = null,
$loginCaptcha = null,
$authenticationURL);
$httpClient->setHeaders('X-GData-Key', "key=${sDeveloperKey}");
$yt = new Zend_Gdata_YouTube($httpClient);
// create a Zend_Gdata_YouTube_VideoEntry
$myVideoEntry= new Zend_Gdata_YouTube_VideoEntry();
// set up media group as in the example above
$mediaGroup = $yt->newMediaGroup();
$mediaGroup->title = $yt->newMediaTitle()->setText($sMovieTitle);
$mediaGroup->description = $yt->newMediaDescription()->setText($sDescription);
$categoryScheme = 'http://gdata.youtube.com/schemas/2007/categories.cat';
$developerTagScheme = 'http://gdata.youtube.com/schemas/2007/developertags.cat';
$mediaGroup->category = array(
$yt->newMediaCategory()->setText('Autos')->setScheme($categoryScheme),
$yt->newMediaCategory()->setText('mydevelopertag')->setScheme($developerTagScheme),
$yt->newMediaCategory()->setText('anotherdevelopertag')->setScheme($developerTagScheme)
);
$mediaGroup->keywords = $yt->newMediaKeywords()->setText($sTags);
$myVideoEntry->mediaGroup = $mediaGroup;
$tokenHandlerUrl = 'http://gdata.youtube.com/action/GetUploadToken';
$tokenArray = $yt->getFormUploadToken($myVideoEntry, $tokenHandlerUrl);
$tokenValue = $tokenArray['token'];
$postUrl = $tokenArray['url'];
$nextUrl = $sNextUrl;
View部分
echo $form = '<form action="'. $postUrl .'?nexturl='. $nextUrl .
'" method="post" enctype="multipart/form-data">'.
'動画ファイルを選択して下さい:<input name="file" type="file"/>'.
'<input name="token" type="hidden" value="'. $tokenValue .'"/>'.
'<input value="動画アップロード" type="submit" />'.
'</form>';
これで、アップロード出来ます。
そして、削除するには
$videoId = $_GET['YouTubeのVideoID'];
$videoEntryToDelete = $yt->getVideoEntry($videoId, null, true);
$yt->delete($videoEntryToDelete);
これで、消えます。
Googleってすばらしいですね〜最高ですね〜
2011年1月13日木曜日
VBAでFTPファイルアップロード
VBAを使って、ファイルをプットするためのプログラム。
これにはBASP21をインストールしておく必要がある。
使用用途としては、FTPのアカウントを教えたくない人に対して
これを使って、指定の位置へファイルをアップロードさせるためのもの。
HTML5になってからは、不要になりましたがIE8などは
まだ、FILE POSTにMultiが対応していないので、使えるのかなぁ~?
まぁ、VBAなのでプロジェクト保護してても、パスワードは抜き取られちゃうので
セキュリティ的には、ヘボヘボですが・・・・
一応、忘れないためにメモ。
Sub picture_uploader()
Dim FTP, rc As Long, Server As String, User As String, Pass As String
Dim Target As String, Folder As String
Dim a As String
Dim folder_path As Object
'FTPオブジェクト
'TAKARA FTP設定(設定する場合は「'」を外してください。)
Server = "ホスト"
User = "ユーザーID"
Pass = "ユーザーパスワード"
Set folder_path = CreateObject("Shell.Application").BrowseForFolder(0, "フォルダを選択してください", 1, ",")
If Not folder_path Is Nothing Then
a = folder_path.Items.Item.Path
End If
If a = "" Then
MsgBox "参照先が選択されませんでした。"
Range("B1") = ""
End
Else
fp = a
Range("A1") = fp
With Application.FileSearch
.LookIn = fp
.SearchSubFolders = True
.FileType = msoFileTypeAllFiles
.Filename = ".jpg"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
MsgBox .FoundFiles.Count & "個のファイルが見つかりました。"
For i = 1 To .FoundFiles.Count
fname = .FoundFiles(i)
d = Len(fp)
fname1 = Len(fname)
fname2 = Right(fname, fname1 - d - 1)
'フォルダパス1を画像名から取り出す
'f_path1 = Len(fname2)
'f_path1_1 = Right(fname2, f_path1 - 3)
'f_path1_2 = Len(f_path1_1)
'f_path1 = Left(fname2, f_path1 - f_path1_2)
'フォルダパス2を画像名から取り出す
f_path2 = Replace(fname2, ".jpg", "")
f_path2_1 = Len(f_path2)
f_path2 = Left(f_path2, f_path2_1)
'Cells(i + 1, 2).Value = "/" & f_path1 & "/" & f_path2 & "/"
Cells(i + 1, 2).Value = fname2 'ファイル名
Next i
Else
MsgBox "条件を満たすファイルはありません。"
End If
End With
Set FTP = CreateObject("basp21.ftp")
'サーバー接続
rc = FTP.Connect(Server, User, Pass)
If rc <> 0 Then
MsgBox "接続できませんでした。", vbCritical
FTP.Close
Exit Sub
End If
For i = 2 To 65536
Range("B" & i).Activate
If Range("B" & i) = "" Then
Exit For
Else
'ローカルファイルの場所
Target = Range("A1") & "\" & Range("B" & i)
'FTP送信先
Folder = "/IMAGES/"
rc = FTP.PutFile(Target, Folder, 1)
If rc <> 1 Then
MsgBox Range("B" & i) & "の画像がアップロード出来ませんでした。", vbCritical
FTP.Close
Exit Sub
Else
Range("C" & i) = "OK"
End If
End If
Next
MsgBox "全ての画像がアップロード出来ました。", vbInformation
FTP.Close
Set FTP = Nothing
End If
End Sub
これにはBASP21をインストールしておく必要がある。
使用用途としては、FTPのアカウントを教えたくない人に対して
これを使って、指定の位置へファイルをアップロードさせるためのもの。
HTML5になってからは、不要になりましたがIE8などは
まだ、FILE POSTにMultiが対応していないので、使えるのかなぁ~?
まぁ、VBAなのでプロジェクト保護してても、パスワードは抜き取られちゃうので
セキュリティ的には、ヘボヘボですが・・・・
一応、忘れないためにメモ。
Sub picture_uploader()
Dim FTP, rc As Long, Server As String, User As String, Pass As String
Dim Target As String, Folder As String
Dim a As String
Dim folder_path As Object
'FTPオブジェクト
'TAKARA FTP設定(設定する場合は「'」を外してください。)
Server = "ホスト"
User = "ユーザーID"
Pass = "ユーザーパスワード"
Set folder_path = CreateObject("Shell.Application").BrowseForFolder(0, "フォルダを選択してください", 1, ",")
If Not folder_path Is Nothing Then
a = folder_path.Items.Item.Path
End If
If a = "" Then
MsgBox "参照先が選択されませんでした。"
Range("B1") = ""
End
Else
fp = a
Range("A1") = fp
With Application.FileSearch
.LookIn = fp
.SearchSubFolders = True
.FileType = msoFileTypeAllFiles
.Filename = ".jpg"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
MsgBox .FoundFiles.Count & "個のファイルが見つかりました。"
For i = 1 To .FoundFiles.Count
fname = .FoundFiles(i)
d = Len(fp)
fname1 = Len(fname)
fname2 = Right(fname, fname1 - d - 1)
'フォルダパス1を画像名から取り出す
'f_path1 = Len(fname2)
'f_path1_1 = Right(fname2, f_path1 - 3)
'f_path1_2 = Len(f_path1_1)
'f_path1 = Left(fname2, f_path1 - f_path1_2)
'フォルダパス2を画像名から取り出す
f_path2 = Replace(fname2, ".jpg", "")
f_path2_1 = Len(f_path2)
f_path2 = Left(f_path2, f_path2_1)
'Cells(i + 1, 2).Value = "/" & f_path1 & "/" & f_path2 & "/"
Cells(i + 1, 2).Value = fname2 'ファイル名
Next i
Else
MsgBox "条件を満たすファイルはありません。"
End If
End With
Set FTP = CreateObject("basp21.ftp")
'サーバー接続
rc = FTP.Connect(Server, User, Pass)
If rc <> 0 Then
MsgBox "接続できませんでした。", vbCritical
FTP.Close
Exit Sub
End If
For i = 2 To 65536
Range("B" & i).Activate
If Range("B" & i) = "" Then
Exit For
Else
'ローカルファイルの場所
Target = Range("A1") & "\" & Range("B" & i)
'FTP送信先
Folder = "/IMAGES/"
rc = FTP.PutFile(Target, Folder, 1)
If rc <> 1 Then
MsgBox Range("B" & i) & "の画像がアップロード出来ませんでした。", vbCritical
FTP.Close
Exit Sub
Else
Range("C" & i) = "OK"
End If
End If
Next
MsgBox "全ての画像がアップロード出来ました。", vbInformation
FTP.Close
Set FTP = Nothing
End If
End Sub
2011年1月12日水曜日
Qdsmtpを使ってGmail SMTPを使ってメール送信
PHPのライブラリQdsmtpでSMTPメールを送信するのですが
いつもなら、PHPのファンクションのmb_send_mail()を使うのですが
今回は、サーバーにメールサーバーを構築してないので、GmailのSMTPを使って
メール送信するんですが、ちょっとハマってしまったので忘却記録を・・・
こんな事で、つまづくとは・・・・
とりあえず、Qdsmtpをダウンロードしてきて
あとは、インクルードするだけだったので、結構簡単です。
問題は初期設定。
$setting = array(
'host' => 'ssl://smtp.gmail.com',
'port' => '465',
'from' => 'sample@gmail.com',
'user' => 'sample@gmail.com',
'pass' => 'password',
'protocol' => 'SMTP_AUTH'
);
つまずいたのは、hostの部分とポートの部分。
まぁ調べたらすぐ解った事だったので、一件落着。
hostの部分は smtp.gmail.comとだけ入力してたのですがエラーがずっと出ていて
なんで!なんで!って思いながら
http://mail.google.com/support/bin/answer.py?hl=jp&answer=44793
を読むとSSLだったので、tlsでも動くと思うんですが上のURL見たら解決出来ました。
Qdsmtpの良い所は、mb_send_mail()と同じように扱えるので便利です。
例えば
$smtp = new QdSmtp($setting);
$smtp -> mail('送り先','件名','メール内容','ヘッダ(省略可)','パラメータ(省略可)');
とすれば、メール送信されます。
色々とQdsmtpの中身を見てましたが、便利なクラスです。
送信したいメールアドレスを配列にして
$mail_array = array('1@test.jp', '2@test.jp', '3@test.jp');
$smtp->to($mail_array);
でもOK!!
すごい便利ですねぇぇぇ
世の中、良い物が転がってますね。
QdsmtpはMITライセンスなので、ご自由にダウンロードして使用してください。
いつもなら、PHPのファンクションのmb_send_mail()を使うのですが
今回は、サーバーにメールサーバーを構築してないので、GmailのSMTPを使って
メール送信するんですが、ちょっとハマってしまったので忘却記録を・・・
こんな事で、つまづくとは・・・・
とりあえず、Qdsmtpをダウンロードしてきて
あとは、インクルードするだけだったので、結構簡単です。
問題は初期設定。
$setting = array(
'host' => 'ssl://smtp.gmail.com',
'port' => '465',
'from' => 'sample@gmail.com',
'user' => 'sample@gmail.com',
'pass' => 'password',
'protocol' => 'SMTP_AUTH'
);
つまずいたのは、hostの部分とポートの部分。
まぁ調べたらすぐ解った事だったので、一件落着。
hostの部分は smtp.gmail.comとだけ入力してたのですがエラーがずっと出ていて
なんで!なんで!って思いながら
http://mail.google.com/support/bin/answer.py?hl=jp&answer=44793
を読むとSSLだったので、tlsでも動くと思うんですが上のURL見たら解決出来ました。
Qdsmtpの良い所は、mb_send_mail()と同じように扱えるので便利です。
例えば
$smtp = new QdSmtp($setting);
$smtp -> mail('送り先','件名','メール内容','ヘッダ(省略可)','パラメータ(省略可)');
とすれば、メール送信されます。
色々とQdsmtpの中身を見てましたが、便利なクラスです。
送信したいメールアドレスを配列にして
$mail_array = array('1@test.jp', '2@test.jp', '3@test.jp');
$smtp->to($mail_array);
でもOK!!
すごい便利ですねぇぇぇ
世の中、良い物が転がってますね。
QdsmtpはMITライセンスなので、ご自由にダウンロードして使用してください。
VBA TextBoxを配列処理する
Dim Val_Array as Variant
For i = 1 to 20
if UserForm1.Controls("TextBox" & i) = "" Then
Exit For
Else
Text_Val = UserForm1.Controls("TextBox" & i) & "," & Text_Val
End if
Next
Values = split(Text_Val, ",")
たぶん、考えたらもっといい方法あるんですが
なにぶん時間がなかったので、微妙なコードになっちゃいました・・・
まぁ、これで配列に格納出来るし良いかな・・・
For i = 1 to 20
if UserForm1.Controls("TextBox" & i) = "" Then
Exit For
Else
Text_Val = UserForm1.Controls("TextBox" & i) & "," & Text_Val
End if
Next
Values = split(Text_Val, ",")
たぶん、考えたらもっといい方法あるんですが
なにぶん時間がなかったので、微妙なコードになっちゃいました・・・
まぁ、これで配列に格納出来るし良いかな・・・
VBAでフォルダダイアログを開く
With Application.FileDialog(msoFileDialogFolderPicker)
if .Show = True Then
dir_path = .SelectedItems(1) & "¥"
End if
End With
WSHで作るダイアログの方が好きなんですが
まぁ、VBAで関数あるならそれ使っとこうってことで。
これを実行すると、フォルダを選択と言うダイアログが表示され
開きたいフォルダの所まで行ってOK押したら
変数 dir_path の中にそのフォルダまでのフルパスが格納される。
フォルダの中にある(サブフォルだも含む)情報を取り出した場合は
Dim buf As String
buf = Dir(dir_path & "*.*" , vbDirectory)
Do While buf <> ""
i = i + 1
Worksheets("Sheet1").Cells(i , 1) = dir_path
Worksheets("Sheet1").Cells(i , 2) = buf & "¥"
buf = Dir()
Loop
これで、サブフォルダの情報をぶっこ抜きます。
Dir(dir_path & "*.jpg", vbDirectory)とするとJPEGファイルを取り出せる。
これ結構忘れて、いつも探しまわっちゃうのでそろそろ保管しておこう
if .Show = True Then
dir_path = .SelectedItems(1) & "¥"
End if
End With
WSHで作るダイアログの方が好きなんですが
まぁ、VBAで関数あるならそれ使っとこうってことで。
これを実行すると、フォルダを選択と言うダイアログが表示され
開きたいフォルダの所まで行ってOK押したら
変数 dir_path の中にそのフォルダまでのフルパスが格納される。
フォルダの中にある(サブフォルだも含む)情報を取り出した場合は
Dim buf As String
buf = Dir(dir_path & "*.*" , vbDirectory)
Do While buf <> ""
i = i + 1
Worksheets("Sheet1").Cells(i , 1) = dir_path
Worksheets("Sheet1").Cells(i , 2) = buf & "¥"
buf = Dir()
Loop
これで、サブフォルダの情報をぶっこ抜きます。
Dir(dir_path & "*.jpg", vbDirectory)とするとJPEGファイルを取り出せる。
これ結構忘れて、いつも探しまわっちゃうのでそろそろ保管しておこう
登録:
投稿 (Atom)