子宝どっとこむ

 

 ExcelでhtmlファイルをWebサーバーにアップロード

商品担当者とWeb担当者は通常分かれていると思います。

商材に関するルーチンの変更(価格改定や売り止め)の都度、商品担当者がWeb担当者にWebの更新を依頼するのは実際面倒です。

これを効率化するために、Webデータベース、社内データベースを連携させる大がかりなシステムを構築するのもお金の無駄です。他に、Webデータベースを構築して、ブラウザでデータを入力できるようにして、それを担当者に更新してもらうというのがありますが、ブラウザの入力というのは手間がかかりますし、融通が利きにくいです。

そこで、定型化されたhtmlファイルはExcelで生成し、そのままFTPでWebサーバーにアップロードする方法を解説したいと思います。

文字コードの変換

Excelで普通にテキストファイルを生成すると文字コードはShift-JISになります。私どものようにMovable TypeでWebコンテンツを管理していなくとも、最近のWebファイルのスタンダードはどうやらUTF-8に落ち着こうとしているようですから、UTF-8で保存できないのはかなり痛いところです。

そもそもUTF-8とは何ぞやというと、一世を風靡するかと思っていたUnicodeがASCIIと互換性がないため、UnicodeにASCII互換性を持たせたものがUTF-8ということのようです(詳細はウィキペディア等参照)

ExcelVBAのSaveAsメソッド(FileFormat)でUTF-8が選択できるといいのですが、残念ながらUnicode止まりです。

コードをUTF-8へ手動変換

コードをUTF-8に手動変換する場合、テキストエディタのTeraPadで、ファイルを開き、「文字コード指定保存」でUTF-8を選択すればできます。が、マニュアルに操作手順を記載するのも馬鹿馬鹿しいですし、変更しなければならないファイルが多い場合は人為ミスが多発するかもしれません。

そこで少し操作を簡略化するために、Code2Codeという文字コード変換ソフトを利用するというのがあります。このソフトは、ディレクトリにある全部(あるいは特定の拡張子ファイル全部)を一括で文字コード変換してくれますのでファイル数が多い場合には手間が省けます。

コードをUTF-8へ自動変換

とはいえ、やはり手動変換は面倒くさいです。最初は「Code2Codeで楽になった」と思っていても、すぐに「もっと楽をしたい」と思うのが人間です。

ということで、やはりExcelでUTF-8に自動変換させたいと思います。そんな希望に好都合なプログラム「UTF-8ファイル作成 for VBA」というものがありました。

ダウンロードしたクラスモジュール(TextFile.cls)をVBEditorでインポートすると、TextFileクラスを生成することができるようになります。

あとは、FileCreateでオブジェクトを生成し、TextWriteかTextWriteLineを使ってテキストの出力を行い、FileCloseでオブジェクトを破棄するという一連の作業の中に出力したい内容を記述すればOKです。

htmlソースの記述

可変的なhtmlソースは数式等を利用してセルに記述し、あとでセルデータを配列に格納して出力するのがよいでしょう。

基本的に変更がなく共通のhtmlソース(ヘッダーやフッター)は、複数行でもひとつのセルに記述しておくのが効率的で、これであれば上記のTextWriteを一度実行するだけで複数行が生成されます。このとき、セル範囲に名前を付けておくとプログラムから参照しやすくて吉です。

htmlファイルをFTP自動転送

出来上がったhtmlファイル(やhtpasswordファイル)をWebサーバーに送信するのが手動というのは、大きなネックです。いちいち商品管理担当者からWeb担当者に業務依頼が発生し、いらぬ摩擦が生じます。商品担当者にWebサーバーへのファイルアップロードも含めてやってもらうのは、「Webは自分の仕事ではない」と反発を受け、そもそもサーバーアクセスのIDパスワードを開示するのはセキュリティ上好ましくありませんし、正しいパスに正しい名前でアップロードされる保証はなく、最悪誤ってファイルを削除される危険もあります。

そこで、指定ディレクトリに特定の命名規則でファイルをアップロードするという風に機能を限定させたいと思います。これであれば、商品担当者が社内のExcelファイルを更新したら、勝手にhtmlファイルが生成されて、そのままの流れでWebサーバーにファイルがアップロードされてもさほどの危険はないでしょう。

BASP21を利用したFTP送信

ここで紹介する手法はBASP21というDLLファイルをインストールしておかないとできません。BASP21はFTP送信の他にも有益な機能が多いので、インストールは損にはならないでしょう。

BASP21のインストールさえ済めば、Office Tanamaの「FTPで送受信する」を読めば簡単にExcelVBAでFTP送信ができるようになります。

最後に、VBAプログラムにパスワードをかけるのを忘れないように(「ツール」-「VBAProjectのプロパティ」-「保護タブ」)。

 Trackback Pings(0)

No trackbacks found.

 Comments(0)

No comments found.

 Post a Comment

コメント用フィード