< | >

(備忘録) Excel & Access vba
  • (2012-04-27 06:46:23)

ポップアップが出ているとVBAもUWSCも動作しない?



(2012/04/27)

置換パネルがでているとSendkeysが効かない



Excelで置換を行うsendkeysを発行しても、動作しない。エラーにもならず無言状態。

下記はAmazonの注文データに含まれている「変なハイフン」をAsciiハイフンに置換する操作。

手作業だと

置換(Ctrl+H) → 置換パネルポップアップ → 置換対象に移動(Alt+N) → 置換対象のペイスト(Ctrl+V)・・・

といった感じなので、それをそのままSendKeysステートメントに入れたもの。

Sendkeys "^H"

Sendkeys "%N"

Sendkeys "^V"

Sendkeys "{TAB}"

Sendkeys "-"

Sendkeys "%A"

なんら問題なさそうに見えたが、動作しなかった。

マクロパネルが出ているとUWSCのキー操作も効かない



Excelが自分自身の操作でどこかでぶつかっていると推測して、マクロパネルボタンから外部のUWCSを起動してキーエミュレーションを試みる。

※UWCSのキーエミュレーションコードは実際の操作をレコードしたものをそのまま記述。ただし、すでに開いているExcelシートを捕捉するために下記コードを追加

Excel = getactiveoleobj("Excel.Application") //起動中Excelオブジェクト取得

Excel.activesheet.range("B5").copy

UWSCは起動するにはするが、ビープ音が一発出るだけで、何も起こらない。

ポップアップ画面でプログラムが阻止される?



全然意味がわからなかったが、偶然マクロパネルからUWSCを起動直後にマクロパネルの「CLOSE」ボタンを間違って押したら想定通りの動作となる。

このことから、マクロパネルや別の操作パネルがポップアップしていると、プログラムがExcel画面を捕捉できないことが予想される。

置換パネルは置換作業が終了するまで消せないので、マクロパネルでUWSCで置換プログラムを呼び出したら、自身はすぐにCLOSE(Unload me)をする手順に書き換えてみると動作するようになった。

なんか原始的ではあるが、今日のところはこれで満足。






< | >

HDDをDtoD領域も含めて丸ごとコピーするEaseUS
  • (2012-04-14 16:18:07)
DtoD領域があるHDDをその資産を残したまま、新しいHDDに移行するにはEaseUS Disk Copyが便利(2012/04/14 小平探検隊)

80BGから2TBのHDDへ



80GBのHDDが容量不足で、2TBのHDDと交換することにした。通常はOSからクリアインストールするが、DtoD領域があるので、これを移行したい。HDDのデータを新HDDに丸ごとコピーする方法を試みる。

HDDコピーマシンは便利



昔の会社ではこういうことは「HDDコピーマシン」でやっていた。HDDを数台並べて無条件にコピーするという物理的な感じの機械だった。

10台くらいのPCをセットアップするときはサイコーにクールだった。しかし、1年に1回使うか使わないか程度の機械、個人で購入するには負担が大きい。

EaseUS Disk Copy



何かよい方法はないかと探すと「EaseUS Disk Copy」というユーティリティソフトが使えることがわかった。

EaseUSは以前、パーティション作成や消去のために利用したことがある(EaseUS Partition Master)。

それまでPartitionMagicというソフトを使用していたが、当時はIDEからSATAのHDDへの移行期で、SATA版には私が持っていたPartitionMagicが使えなかった。

PartitionMagicをアップグレードするかどうか、というときに偶然見つけたソフトが「EaseUS Partition Master」だった。フリーだったのでありがたかった。


※EaseUS Disk Copy
http://jp.easeus.com/disk-copy/home-edition/

※EASEUS Partition Master
http://jp.easeus.com/partition-manager-software/free.html




USB接続のHDDも楽勝で認識



「EaseUS Disk Copy」で、HDDコピーマシンのようにHDDを丸ごとコピーできるかどうか、一番不安だったことはUSBハードディスクケースに入れられたHDDが認識されるかどうか。

この種のユーティリティはCDやフロッピーから独自OSで立ち上げ、内蔵HDDを外部から操作するというモノ。

内蔵HDDは問題ないと思うが、USBケーブルに繋がれたHDDが認識できるものか経験がないだけに不安だった。

やってみると、あったり認識し、何ら問題なく中身を丸ごとコピーできた。1時間程度の作業だった。

ところで、感覚的に理解を超えている2TB時代



私が生まれて初めてHDD単体を購入した記憶はぼんやりしているが、90年代前半、秋葉原のお店で買った500MBのHDDだったように思う。価格は覚えていないが、1万円前後ではなかっただろうか。

今回2TBのHDDを購入した。約1万円。

価格はほぼ同じで容量は4,000倍に跳ね上がった。2倍や4倍ではない。40倍でも400倍でもない。4,000倍である。こんなバリューのある商品は他にないだろう。金融取引のような感覚だ。

産業革命のただ中にあるって、こういうこと?

指標を失って感覚は流れる感じ。こんなことで唖然としているようでは進行中の革命がまるでわかっていない証拠としか言えない。








< | >

文字コードがないハイフンのように見える"−"横棒(Excel)
  • (2012-04-12 11:39:52)
Amazonマーケットプレイスからデータをダウンロードすると電話や住所にやや長めのハイフンがある。これをメールがデータベースに展開すると「?」となる問題(2012/04/12 小平探検隊)

乱れきったハイフン


文字コードのことはよくわからない。全角ハイフンと半角ハイフンには文字コードが割り振られているが、文字コードが割り振られていないハイフンがあるらしい。それがAmazonマーケットプレイスで使用されている。

Excelに展開したときはハイフンらしく表現されるが、メールに取り込むと「?」と文字化けを起こす。

Accessに取り込んでも、取り込み方によるが、ハイフンらしい形状。ということはMicrosoft社製品はおおむね受け入れてくれる文字なのかもしれない。JISベースかな?

しかし、一般には通用しない文字である。

Excel VBAで変換できない理由


そこでExcelにてこの「ハイフンらしきモノ」を、Ascii半角ハイフンなどデファクト的な文字に変換しようとすると、これができない。

たとえば、下記コードをvbaで作成し「ハイフンらしきモノ」をペーストすると「?」に自動変換される。これで置換すると全文字が「-」になる。

selectedRange.Replace "?", "-", xlPart

そこで、文字コード指定で変換を試みる。「ハイフンらしきモノ」の文字コードはChr(63)らしい。これは「?」という文字だそうだ。

Chr(45)は半角ハイフンの意味。

下記のようなコードをVBAに入れてみた → 何も起こらなかった。

selectedRange.Replace "~" & Chr(63), Chr(45), xlPart

この「ハイフンらしきモノ」には文字コードが割り当てておらず、vbaなどのプログラムでは変換できないということらしい。

「ハイフンらしきモノ」をvbaにペーストすると自動的に「?」になることは上に書いたが、これはAsciiコードの「?」ではなく、文字コードが「わからない」という意味らしい。

日本語の文字コードは細部ではグチャグチャみたい。本当に文字コード問題には近寄りたくない。

苦肉の対応策


vbaに落とすことができないので、毎回「ハイフンらしきモノ」をハイフンに置換する作業を手作業で行うことにした。

(1)あらかじめ記入されている「ハイフンらしきモノ」のセルのコピー(Crtl+C)
(2)Ctrl+H(置換)
(3)置換パネルで、置換するモノに「ハイフンらしきモノ」をペースト(Ctrl+V)、置換文字に半角ハイフンを入れて置換していく

数回のキー操作と1分程度の作業 → ムダ。しかし、現状これしかない。多くの人がこの作業をやるしかないとしたら、国益にさえ損ないかねない状況だ。

今はこの手作業自体を、VBAで自動化している。動作するが、本当に美しくない。






< | >

(TEST)
  • (2012-04-02 11:04:38)
これはテスト!test

test






< | >

タイムアウトのテスト
  • (2012-04-02 09:52:38)
手間暇掛けて書いたモノが消えてなくなる瞬間。

タイムアウトで記事消失



このブログは編集画面で長い時間書いているとタイムアウトを起こすようだ。

手間暇掛けて書いたモノを、いよいよ投稿という段になって投稿ボタンを押した瞬間にすべてが消失した経験は何度か。

2回は書けない



消失して再度はじめから書き始めても、もう気分は戻ってこない。どうしても書いていたときのマインドやアイデアは戻ってこない。

どこでこのタイムアウトが実行されるのか?



セッションのタイムアウトの時間が不明。

・時間

・タイムアウト

・セッション

・切れ

・logout

・session

・time

・timeout

などのキーワードで探してみるもコードを探すが見つからない。

テスト結果



今日のテスト:

・30分ではタイムアウトしない

・60分ではタイムアウトしない

※おかしい。タイムアウトするときとしないときがある?






search
layout
admin

[▲page top]