カテゴリー「パソコン・インターネット」の83件の記事

2023年1月 2日 (月)

REGZA全録サーバー D-M430 システムメンテナンスの長時間化

私は全録機として、REGZA D-M430を愛用している。

D-M430に関する過去記事は、以下を参照。

REGZAサーバー D-M430改造計画 ~ハードディスク換装~
REGZAサーバー D-M430改造計画 ~ファン騒音対策(その1)~
REGZAサーバー D-M430改造計画 ~ファン騒音対策(完結編)~
REGZA全録サーバ D-M430改造機が故障した
全録REGZA D-M430 故障 ~ 再生、録画、電源ランプが5回点滅

最後の記事は、2022年8月のもので、全録開始後、数時間で勝手に停止するという不具合に関するものであった。
今回もその3ヶ月後に、同じ個体で発生した別の不具合に関する報告となる。

症状は、記事の件名の通り、システムメンテナンス(以下、「メンテナンス」と記載)が1時間で終わらないというものである。
D-M430は全録機とは言うものの、1日24時間すべてでの録画はできず、24時間中の予めメンテンナンス時間として指定した1時間は一切の録画ができない仕様となっている。(私の場合はAM6~7時を指定)
この時間になると、D-M430は自動でメンテナンス作業を開始し、その間はハードディスク(以下、「HDD」と記載)がアクセスしっぱなしとなる。(当然、録画時間帯もHDDにアクセスしっぱなしとなるが、外付けHDDのアクセスランプで見る限り、録画時間帯は点滅となるが、メンテナンス時間帯は点灯状態となる。)

ある程度HDD内に過去の録画番組が溜まると約30分~45分程度を要するため、恐らく古い番組の削除の他に、HDDのデフラグをやっているのではないかと推測する。

さて、不具合に話を戻す。
最近、メンテナンスが既定枠の1時間どころか、いつまでたっても終わらない現象がでてきた。毎回発生するので、このままでは通常使用できない状態である。)
現象を以下に整理する。

  1. 中断させようとして、リモコンで電源をOFFにすると電源ランプは消えるが外付けHDDはアクセスしっぱなしの状態。
  2. 本体の電源ボタン長押しで強制シャットダウンすると外付けHDDのアクセスも停止し、以降は正常な状態になる。
  3. 中断させないまま全録の予約時間帯になると全録動作に切り替わり録画は行われる。ただし、録画中にタイムシフトの番組表を表示しようとすると異常に時間がかかる。(数分待てば表示されるが、実用的なレベルではない。)
  4. 全録中に本体の電源ボタン長押しで強制シャットダウンすると、以降は正常な状態になる。
  5. 電源長押しをしない場合は、録画終了時間で通常通り終了(電源OFF状態になる)。ただし、通常の電源ON操作をやっても「起動中」のまま進まず。電源長押しで強制シャットダウンすると通常に戻る。ただし、この後、1度手動で電源ON/OFFしておかないと、全録時間帯になっても録画は始まらない。

何とも不可解でやっかいな現象である。

ググってみると、同様の事象として、唯一以下の記事を見つけた。
この方は、ファームウェアをバージョンアップしたところ「不具合が解消されたっぽい」とのことだが、私の場合は既に最新バージョンが当たっている状態だ。

2020_1109_REGZAサーバー D-M430

 
仕方なく、いろいろと試してみた。

  • 内蔵HDDの番組全消去
    「はじめての設定」でシステム全体の初期化を行うと、内蔵/外付けHDDの全ての録画番組が消去されるので、まずは内蔵HDDの不調を疑い録画済み番組を削除してみる。

    【保存番組の削除】
    HDD管理メニューで内蔵HDDの番組消去を実施。これで個別に保存した番組は消去される。(タイムマシンでの録画番組は消去されない)
    Dm430_setting_001

    【タイムマシン録画番組の削除】
    タイムマシン録画チャンネルメニューで、タイムマシン録画するチャンネルの設定を変更する。
    「設定完了」ボタンを押す前に、6つの録画チャンネルの設定を変更(一旦解除し再登録を含む)しても、チャンネル番号と録画先が以前と同じであればそのチャンネルの録画番組は削除されないので、一旦、011==>012などにチャンネルを変換して「設定完了」ボタンを押して削除する。(必要であれば、再度元の設定に戻して「設定完了」ボタンを押す。)
    Dm430_setting_002
    Dm430_setting_003

    ==> 残念ながら問題は解消ぜす。

  • 外付けHDDの登録解除(その1)
    HDD管理メニューより、外付けHDDの登録を一旦解除した後、再登録を実施。(外付けHDDの録画番組は消えてしまう。)
    Dm430_setting_004

    ==> 残念ながら問題は解消ぜす。

  • 外付けHDDの登録解除(その2)
    HDD管理メニューより、外付けHDDの登録を一旦解除した後、メンテナンスを実施したところ20分程度で終了。その後に再登録を実施。
    ==> 正常な状態に戻った。と、喜んでいたところ、数日後に再発。(涙)

  • 外付けHDDのローレベルフォーマット
    外付けHDDが怪しそうなのでWindows PCに接続して調査。
    CrystalDiskInfoでは「正常」であったが、NTFSでフォーマットしようとするとエラーで失敗してしまう。不良セクタが発生しているのかも知れない。
    それを解消するため、ローレベルフォーマット(全セクタへのゼロフィル)を試みる。具体的には、このHDDは WesternDigital社の製品だったので、Data Lifeguard Diagnostic で Erase を実施してみた。結果は特にエラーもなく終了。

    ==> その後、D-M430に接続して2ヶ月程度使用しているが、特に問題は発生していない。 めでたし、めでたし。

では。

| | コメント (0)

2022年11月13日 (日)

IO-DATA 外付けHDD HDJA-UT を分解してみた

IOデータ社の外付ハードディスク HDJA-UTシリーズは

  • 電源内蔵(電源アダプタは不要でコンセント周りがスッキリ)
  • 空冷ファン搭載

という特徴を持つ信頼性の高いモデルである。
特に型番の後ろに W が付く HDJA-UTWHDJA-UTRWシリーズは、 WesternDigital社の REDシリーズのハードディスクを採用しており、更に信頼性を高めている。

私は、REGZAの全録機 D-M430 の外付けハードディスクとして、4TBハードディスク内蔵のHDJA-UT4.0W を中古で購入して使用している。ところが、最近、D-M430 の調子が悪くなり、その原因切り分けのため内蔵ハードディスクを取り出そうと思い、「HDJA-UT 分解 殻割 換装」などでググってみたのだが HDJA-UTシリーズの分解方法を見つけることができなかった。
そこで、自分で(半分壊しながら)分解してみたので備忘録として記載しておく。
恐らくここで記載した分解方法は、HDJA-SUTHDJA-UTN など HDJAシリーズ全てで共通と思われる。

以下が、分解手順である。

本体ウラ側(ファンのある側)のネジ(以下の黄色の丸部分)を外す。
Hdjautw_0001

写真の赤線のスキマにプラスチックのヘラなどを挿し込んで、ケースの上部カバーを①の方向へずらしてスキマの広げた後、②の方向へカバーを持ち上げる。カバーは、アクセスランプのリード線で本体とつながっており完全には離れない。(端子を外すことができるかもしれないが、私はやっていない。)

Hdjautw_0002

カバーを開けた写真が以下である。

本体側
Hdjautw_0003

本体側の黄色の矢印や丸印のところにツメがあり、カバーを①の方向にずらすことで、ツメが下の写真の矢印の方向に外れて、②の方向に持ち上げられるようになっている。私の場合、①の動作をせずに強引に②の方向にこじ開けたため、本体側のツメやカバー側の「ツメをロックするプラ部品」が軒並み折れてしまった。

カバー側
Hdjautw_0004

カバーを開けたところ
Hdjautw_0005

製品ラベルを剥いで、ハードディスクを固定しているプラスネジを外す。

Hdjautw_0006

基板を留めている4本のネジ(以下の黄色の丸部分)を外す。

Hdjautw_0007

ハードディスク、基板、ハードディスクを固定している金具が丸ごと外れる。
基板上のSATAと電源コネクタがハードディスクに刺さっているので、基板を下の写真の矢印方向に抜いた後、ハードディスク側面のネジ(黄色の丸部分)を外す。なお、基板はリード線で本体と繋がっているが無理に切り離す必要はない。

Hdjautw_0009

ハードディスク下面側の2つの固定ネジを外す。

Hdjautw_0010

これで、ハードディスクが完全に取り外せる。

Hdjautw_0011

ファンを掃除したり交換する場合は、電源スイッチや電源コードを以下の写真の矢印方向に抜けば、ファンの固定ネジ(黄色の丸部分)が露出するので、ファンを取り外すことができる。

Hdjautw_0012

組み立て方は、分解と逆にすればよい。

では。

 

| | コメント (0)

2022年5月 3日 (火)

HDMI切替器とAmaozn Fire TV Stickの相性問題

私はテレビ兼用のPCモニターとして、SHARP AQUOS LC-22K7 を使用している。

2016年にヤフオクで購入したものだが、解像度 1,920(水平)×1,080(垂直)で HDMI入力 3系統と、今でもお手頃価格のテレビでこのスペックのものはないのではないかと思う。

HDMIが3系統があるのでこれまで不足を感じたことはなかったのだが、最近になって接続機器が下記の4台に増えてしまい、やむなくHDMI切替器を購入することとなった。

  1. デスクトップPC
  2. HDDレコーダ
  3. 会社の在宅勤務用PC
  4. Amazon Fire TV Stick

最初に買ったのは、BUFFALO の3入力、リモコン付属の BSAK302。値段は、新品で買うと2300円、メルカリなどではその半額程度である。

Hdmi_switcher_003

4つの接続機器のうち2つをHDM切替器経由にしないといけないのであるが・・・
在宅勤務用PC(MS Surface)の本体にはHDMI出力がなくUSB-C端子に接続した変換アダプタ経由でHDMIを接続しているためか、HDMI切替器経由では正しい解像度で画面が表示されないことがあり、まずはこれはTV直結が必須となった。
残す1枠は利用頻度の高さからデスクトップPCに決定し、結局、PC系はTVに直結、映像系はHDMI切替器経由ということでうまく収まったと思ったのだが、ここで問題が発生。

Fire TV Stickが動作中に時々リブートするのだ。
ググってみると、外部電源なしのHDMI切替器だと電力不足でこのような現象が発生することがあるようだ。Fire TV Stick自身にはmicro USBケーブルで電源を供給しているので、何故電力不足になるのかわからないが仕方がない。
そこで止む無く、外部電源付きのHDMI切替器を購入することにした。

購入したのは サンワサプライの SW-HD31L。
Hdmi_switcher_002

同じ3入力であるがリモコンは付いていないので BSAK302 より少し安く、私はメルカリで 1,000円くらいで購入した。micro USBケーブル(別売、市販品で可)で電源が供給できることに加え、私としては、入出力端子が同一面にある点と、機器切替の手動/自動の設定が可能という点が決め手であった。
これに変えたところ、リブート現象は無事収まった。

ついでにもう1つ購入したのが、ON/OFFスイッチ付のUSB延長ケーブル。Fire TV Stick は電源スイッチがないので、強制的に電源OFFにするために使っている。

Hdmi_switcher_001


色々なショップでノーブランド品が売られているが、私は Amazon で300円台で購入した。

そして現在の使用状況は以下。100均の磁石を両面テープでHDMI切替器に張り付け、机の棚の下面に設置している。(右が SW-HD31L、左はIOデータのLANスイッチ)

Hdmi_switcher_004

では。

| | コメント (0)

2022年1月26日 (水)

Excelの外部リンク(外部参照)について調べてみた

私はシステム関連のサラリーマンなので、普段の業務でExcelをバリバリ使っており、そこそこ使える方だと思っている。ただ、自分が作る資料では他のブックのセルの参照、いわゆる外部リンクは使わないので、たまに、他人が作成したExcelを開いた時に
「このブックには、安全ではない可能性のある外部ソースへのリンクが1つ以上含まれています。」
などの警告が出ると、(ほとんどの場合は作成者が意図とは別にリンクが残っているケースなので)「ちゃんと後始末しておけよ」という思いでイラッとしてしまう。

ところが、最近、意図して外部リンクを使っている奴とファイルを共有することが多くなったのだが、そのファイルの改廃において、外部リンクのパスが勝手に変わったりする現象に出くわしたことから、この外部リンクなるものの仕様・挙動を自分なりに調べてみた。

本記事ではその調査結果について記載する。

調査したExcelのバーションは 365 であるが、ざっと見た限りでは 2016でも同じ動きをするようだ。

【用語について】

  • 本記事ではExcelファイルしか現れないため、ブックと呼ばず全てファイルに統一する。
  • パスは、ドライブ、フォルダ、ファイル名までを含む。
  • ファイルAの中にファイルBを参照する式を記載していた場合、私の感覚では「ファイルAがリンク元、ファイルBがリンク先」なのだが、Excelの用語ではファイルBをリンク元と呼んでいるので、本記事の記載もそれに合わせる。一方、ファイルAを本記事では「基準ファイル」と記す。

 
【外部リンクのあるExcelファイルを開くときの警告】

本題に入る前に、外部リンクを含むExcelファイルを開くときに表示される警告について説明する。

  • 「セキュリティの警告:リンクの自動更新が無効にされました」が上部に帯状に表示されることがある。

    Excel_link_021

    ここでとり得る選択肢と動作は以下の通りである。
    1. 「コンテンツの有効化」ボタンを押下 ⇒ リンク元のファイルの内容を参照して、基準ファイル内の外部リンクを含むセルの値を最新のものに更新する。
    2. 帯の右端の X印を押下して帯を消す ⇒ 内容を更新せずに基準ファイルを開く。

  • 「このブックには、安全ではない可能性のある外部ソースへのリンクが1つ以上含まれています。リンクを信頼できる場合、リンクを更新して最新データを取り込みます。信頼できない場合は、データをそのまま手元で処理してかまいません。」というダイアログが表示されることがある。
    Excel_link_022

    ここでは以下の選択肢がある。

    1. 「更新しない」を押下 ⇒ 内容を更新せずに基準ファイルを開く
    2. 「更新する」を押下 ⇒ リンク元のファイルの内容を参照して、基準ファイル内の外部リンクを含むセルの値を最新のものに更新する。
      ただし、外部リンクにリンク切れがある場合(リンク元のファイルが見つからない場合)
      「ブック内の一部のリンクはすぐに更新できません。値を更新せずにそのままにするか、間違っていると思われるリンクを編集してください。」のダイアログがでる。

      Excel_link_023

      ここでは以下の選択肢がある。

      • 「続行」を押下 ⇒ 内容を更新せずに基準ファイルを開く。
      • 「リンクの編集」を押下 ⇒ 「リンクの編集」画面が表示される。(後述)

 
これらの警告を乗り越えると、やっと基準ファイルを開くことができる。

それでは、外部リンクの挙動の説明に入る。


【説明のために用意したファイル】

以下の4ファイルを準備した。

Excel_link_008

G:\Excel_test\基準フォルダ というフォルダの直下に「基準ファイル」と名付けたExcelファイルを置き、そのファイルの中に、以下をそれぞれ参照する式を記載した。

  1. サブフォルダに置いたExcelファイルの参照
  2. 上位フォルダに置いたExcelファイルの参照
  3. 他のドライブ(E:\temp)に置いたExcelファイルの参照

上記のリンク元の3ファイルの内容も記載しておく。

 左から、サブフォルダ、上位フォルダ、他ドライブのファイルの内容
 Excel_link_003 Excel_link_004 Excel_link_005 


【基準ファイル内の外部リンクの式の表記

まず、基準ファイルだけを開いた場合の外部リンクの計算式の表記を見てみると、

=ドライブレター:\フォルダのパス\[ファイル名]シート名!$A$1

のように、フルパス+シート名+セル番地 で記載されている。

基準ファイル内の計算式
Excel_link_006

基準ファイル内の値表示
Excel_link_002

なお、上図の計算式と値の表示切替は
「ファイル」-「オプション」-「詳細設定」-「次のシートで作業する場合の表示設定」の「計算結果の代わりに数式をセルに表示する」のチェックをON/OFFすることで切り替えている。この後の図でも、特に記載なしに適宜このチェックをON/OFFして表示を切り替えているので留意して欲しい。

 「計算結果の代わりに数式をセルに表示する」 
 Excel_link_020


【リンク元のファイルを開いた場合】

上記の状態から、リンク元のファイルも開くと、その瞬間に基準ファイルの計算式は以下のように変化する。

Excel_link_001

すなわち、フォルダ部分は表示から消え、ファイル名+シート名+セル番地 だけとなる。
※なお、上図は、3ファイルとも開いた場合。当然ながら、開いたリンク元ファイルを参照している式だけがこのように変化する。
リンク元のファイルを閉じると、その瞬間に元のフルパス付きの表現に戻る。

また、基準ファイルとリンク元のファイルを同時に開いた状態から、リンク元ファイルを「名前を付けて保存」で別のパスやファイル名で保存すると、その瞬間に基準ファイル内の外部リンクの計算式もそれに変更される。

 
【外部リンク内のパスやシート名を手動で変更しようとした場合の挙動】

基準ファイル内の外部リンクのパスを手で修正しようとした場合、以下のケースに分かれる。

  • 修正しようとした外部リンクのファイルが存在し、かつ、シート名も存在する場合、修正は成功するとともに、その値が読み込まれ更新される。
  • 修正しようとした外部リンクのファイルは存在するが、シート名が存在しない場合、条件は不明だが以下の2つのケースがあった。
     
    1. シート名は変更されず(手修正が反映されず元のまま)、何も起こらない(値も変わらない)。
    2. 「シートの選択」というダイアログが現れ、実際に存在するシートの一覧が表示されるので、その中から1つ選択する。その結果、外部リンクのシート名は変更され、値は、そのシートの現在の値に変更される。
      「シートの選択」でキャンセルを選択した場合、シート名は手修正による変更が反映されたまま(存在しないシート名のまま)で、値は #REF! になる。
        
      シートの選択
      Excel_link_024
        
       
  • 修正しようとした外部リンクのファイルが存在しない場合、「値の更新」というファイルを選択するダイアログが現れるので、以下のどれかを行う。なお、外部リンクのパスは、以下のどの場合でも、修正しようとした「存在しないパス」に変更される。

    1. ファイルダイアログでキャンセルした場合 ⇒ 何も起こらない。(外部リンクのパスは修正されたままで、表示(値)は #REF! になる。
    2. ファイルダイアログで、存在するファイルを指定した場合は、以下のケースに分かれる。

      • 指定したファイル内に外部リンクに記載したシート名が存在する場合 ⇒ そのシートが採用され、表示(値)はその値に更新される。ただし、外部リンクのパスは修正されたまま(存在しないパスのまま)、シート名は正しい(存在する)名前に変更される。
      • 指定したファイル内にシートが1つしかない場合 ⇒ (シート名の一致、不一致にかかわらず)そのシートが採用され、表示(値)はそのシートの値に更新される。その結果、外部リンクのパスは修正されたまま(存在しないパスのまま)、シート名は正しい(存在する)名前に変更される。
      • 指定したファイル内にシートが複数存在し、外部リンクに記載したシート名が存在しない場合 ⇒ 「シートの選択」というダイアログが現れて、実際に存在するシートの中からシートを1つ選択する。その結果、外部リンクのパス内のシート名は選択したシート名に変更される。その結果、外部リンクのパスは修正されたまま(存在しないパスのまま)、シート名はダイアログで指定したシート名に変更され、かつ表示(値)は当該シートの値に更新される。
        「シートの選択」ダイアログでキャンセルを押下した場合、シート名は変更されず存在しないシート名のままで、値は #REF! となる。

 
【Excelの変換機能で外部リンクの計算式内のパスやシート名を変更しようとした場合の挙動】

Excelの変換機能で、外部リンクのパスを存在しないパスやシート名にに変換しようとした場合の挙動は、基本的には手修正の挙動と同じで、それが変換個所の数だけ繰り返される。
ただし、途中のダイアログでキャンセルを選択すると、そこで変換処理は中断され、残った変換個所は処理されない。

 
【フォルダーをコピーまたは移動した場合の挙動】

外部リンクを含むファイル(基準ファイル)を、(ファイル単体ではなく)そのファイルを含むフォルダごと他の場所へコピーした場合は、以下のような挙動となる。

  • リンク元のファイルも同時にコピーされる場合(基準ファイルとリンク元ファイルの両方が、コピーするフォルダ配下にある場合)
     ⇒ 基準ファイルとリンク元ファイルの相対関係が維持される形で、外部リンクのパスもコピー先のパスに変更される。
  • 上記以外の場合 ⇒ 外部リンクのパスは変わらない。

図で示すと以下となる。(G:\Excel_test フォルダを E ドライブ直下にコピーした場合)
図の実線矢印が前者、点線矢印が後者の場合である。

 Excel_link_026

なお、フォルダを移動した場合の挙動もコピーの場合と同じである。
また、フォルダごとではなく、基準ファイルだけを単独で別の場所へコピーまたは移動した場合は、外部リンクのパスは変更されない。

 

以上が、私が調査した、外部リンクの挙動である。

以下では、外部リンクに関するExcelの機能「リンクの編集」について記載する。
他の人が送ってきたファイルなど、構造はわからないけど外部リンクの警告がでるようなものについては、まずこの機能で外部リンクの状況を把握すると良い。
「リンクの編集」は以下の操作で表示される。

 「データ」-「クエリと接続」グループ-「リンクの編集」
 Excel_link_011

【リンクの編集】

リンクの編集ダイアログを開くと、使用している外部リンクの一覧が表示され、最初は「状態」は全て「不明」となっている。
ここで右側のボタン押下で以下の操作が行える。
1 ~ 4 は選択した行に対する操作で、5 は全行に対する操作となる。

  1. 値の更新
    外部リンクが示すファイルを参照して値を更新しようとし、成功すれば「状態」は「OK」となる。
    ファイルやシートが存在しなかった場合の挙動は、【外部リンクの計算式内のパスやシート名を手動で変更しようとした場合の挙動】と同じである。例えば、ファイルが存在しない場合は、「値の更新」というファイルダイアログが現れるので、ファイルの指定を行う。ただし、ファイルを指定しても、外部リンクのパスが変わらない点も同じである。
  2. リンク元の変更
    「リンク元の変更」というファイルダイアログがでてくるので、リンク元のファイルを指定する。また、外部リンクに記載したシートが存在しない場合は、「シートの選択」ダイアログでシートを選択する。その結果、外部リンクのパスやシート名は指定されたものに変更され、値が更新されて状態が「OK」となる。
  3. リンク元を開く
    リンク元のファイルを開く。リンク切れの場合(リンク元ファイルが存在しない場合)は、「申し訳ございません。[外部リンクのパス名の表記]が見つかりません。名前が変更されたか、移動や削除が行われた可能性があります。」というエラーが表示される。
  4. リンクの解除
    外部リンクを値に変更する。(外部リンクの情報は削除されるので注意)
    リンク切れの場合(リンク元ファイルが存在しない場合)は、値が「#REF!」に変更される。
  5. 状態の確認
    外部リンクの状態を確認して(ファイルやシートの存在を確認して)、「状態」欄を以下の通り更新する。 
    • ファイルが存在しない場合 ⇒ 「エラー:ソースが見つかりません」
    • ファイルは存在するが、シートが存在しない場合 ⇒ 「エラー:シートが見つかりません」
    • ファイルとシートが存在し、そのファイルが開かれている場合 ⇒ 「リンク元は開かれています」
    • ファイルとシートが存在するが、まだ値を読み込んでいない(更新していない)場合 ⇒ 「警告! 他のブックを参照している値は更新されませんでした」
    • ファイルとシートが存在し、既に以前の操作で値を読み込んでいる場合 ⇒ 「OK」

 
利用者目線で言うと、その外部リンクを使用している場所(セルなど)を知りたいのだが、残念ながら検索で調べる以外に方法はないようだ。

ブック内のリンク (外部参照) を検索する

 
では。

| | コメント (0)

2020年8月29日 (土)

OPPO Reno A を購入した

私の場合、スマホは通勤時の暇つぶしに使っている程度で、これまで ASUS Zenfone5 → Zenfone3 とお手頃価格の SIMフリースマホを利用してきた。今使っている Zenfone3 は Sofmapで新古品を買ってから2年半を超え、バッテリーが少しヘタったくらいで大きな支障があるわけではないが、そろそろ更新しようと思い 3万円台くらいのコスパの高いスマホを探すことにした。

そんな折、おサイフケータイ機能も気になってき始め、どうせこれから3年近く使うので、とりあえずおサイフケータイ機能がついている、SHARP の AQUOS sense 3 か OPPOの Reno3、Reno A あたりに目を付けることにした。

これらの機種をググってみると、異常に価格の安い「あるサイト」が嫌でも目に付く。OCNのスマホセットのセール価格で、音声付きSIMを新規契約することで、各種スマホを格安で手に入れることができる。

これらのセット商品でありがちなのが、スマホ本体価格を分割して通信費に上乗せしているだけで、総合的にみると決して安くないというパターンだが、OCNの場合は通信費への上乗せなし(本体の残債はなし)、SIM契約にも最低期間制限なしというとんでもない好条件だ。(ただし、実際はそんなにうまい話はなく、最低契約期間は設定されていないものの、すぐに解約するとブラックリストに載せられ次回からは購入できなくなるとのこと。)

OCNのセールは常時やっているわけではなく、OCN本体(NTTコミュニケーションズ)のサイト、goo SimSellerという販売代理店(NTTレゾナント)のサイト(本店楽天市場店PayPayモール店の3店あり)で入れ替わりでやっているので、欲しいスマホを決めたらこれらのサイトを定期的にチェックしておく必要がある。

私の場合は、結局、OPPO Reno3 が販売されたことによって型落ちとなった Reno A が 7月下旬に税込 9,240円になった時点で、楽天市場店で購入した。(同タイミングでは、楽天市場店とPayPayモール店が同額でセールを行っていた。)

OPPO Reno A
Oppo_renoa

OCNでスマホセットを購入する場合の大きな流れは以下の通りである。
楽天市場店で購入の場合なので、OCN本体のサイトとは少し違うかも知れない。

  1. サイトでスマホを購入する。
  2. 購入後の翌営業日に、SIM申し込みの案内メールを受領し、指定サイトで1週間以内に申込みを行う。(その際に免許証などの本人確認書類のアップが必要)
  3. (私の場合)2の2日後に商品発送連絡があり、翌日にスマホ本体とSIMを受領した。

なお、OCNのSIM契約は、契約初月のデータ通信費は無料である。「契約初月」とは、「OCN側で本人確認書類の確認が完了した日の10日後を含む月」となるので、上記の2の申し込みを毎月22日とすれば、その翌月がまるまる無料となるのでお得である。
私の場合、申込みが7月27日だったので、8月分のデータ通信料は無料となるとは思っていたが、実際は7月も契約したデータ容量が付与され、それらの未使用分が8月に上乗せ(キャリーオーバー)されていた。なかなか太っ腹である。
また、OCNは任意のタイミングで契約容量の変更ができるので、契約時は最大の容量としておき、無料期間が終わる間際に本来の容量に変更するという手も使えるらしい。

 

以下、Reno A と OCNの格安SIM(OCN モバイル ONE) を使い始めて半月時点での私の備忘録である。

 

【データ移行】
過去に ASUS Zenfone5 から Zenfone3 に移行した際には、特別なツールは使わずに、Googleにログインすることで自動的に旧スマホで利用していたアプリが自動でインストールされた記憶があるが、今回は OPPO Reno A の初回起動時に表示される指示に従ってデータ移行を行った。具体的には、旧スマホに OPPOのデータ移行アプリ 「ClonePhone」をインストールして行う方法となるが、現時点で、1点を除き、データ移行に関する不具合は発生していない。
1点とは、Lineの移行後に 「再インストールのご案内(LINEを削除して公式バージョンを再インストールしてください)」という通知が定期的に送られてきたことである。これは、「ClonePhone」ではアプリを1からインストールするのではなく、内部的に apkファイルで移行しているのが原因と思われるが、この通知もいつのまにか来なくなったので現実的には問題ない。

なお、「ClonePhone」は Google Play には置かれていないということであったが、2020年8月現在アップされている。

参考サイト

 

【ColorOS】
OPPOスマホでは、Androidを独自にカスタマイズした ColorOS が採用されており、Reno A も Andriod 9ベースの ColorOS 6 が搭載されている。ネットでは、このカスタマイズによるクセや使いにくさを欠点として挙げている意見もあるが、私レベルの普通のユーザは特に気にせずに使えるという印象である。
なお、Reno A 特有かつお決まりの設定については、以下のサイトが役に立つ。

 

【不具合】
メインで使い始めてまだ半月くらいしかたたないため、特に大きな問題や違和感はなかったが、昨日、通勤中の電車内で突然ネットが使えない状態になった。SIMが認識されておらず「モバイルデータ通信」をONにできない状態である。突然のことでかなり焦ったが、結局電源をリセットすることで復活した。その後、この現象をググってみたところ、価格comのクチコミで、正に
「通信事業者」が消えます。何故?(再起動で復活)
というスレッドがあり、どうも Reno A 固有の未解決のバグのようである。そのスレッドの最後に、ある方が試行錯誤的に見つけた回避策も載っているが、私はまだ設定していない。

 

【通信速度】
OCNモバイルONEは、私にとって Zenfone5 でスマホデビューした時に最初に使った格安SIMである。しかし、2年くらいして mineo に切り替えて今日までそれを使ってきた。切り替えた理由は通信品質である。格安SIMは通信速度の点で3大キャリアに劣るのは仕方がないことは認識していたが、当時の OCNモバイルONEは は朝の通勤時に新宿あたりで全く繋がらないなどの問題があった。(その後、契約した mineo も通信速度が遅い時間帯などはあったが、繋がらないということはなかった。)
OCNモバイルONE が従来の通信品質のままであれば切替を躊躇していたかも知れないが、2019年11月より新コースが始まり通信速度も改善されたとなので、それに期待してみた。
使ってみた結果、十分快適になったというのが正直な印象である。(mineo よりも早く感じることが多い気がする。)OCNモバイルONE の新コースはまだ始まって日が浅く、ユーザが増えれば遅くなるという話もあるが、とりあえずうれしい誤算であった。

 

では。

| | コメント (0)

2020年5月 6日 (水)

エクスプローラからファイル一覧を出力するVBScript(検索結果もOK)

本記事では、Windowsのファイルエクスプローラで表示・選択されているファイルの一覧(ファイル名、パス、サイズ、更新日時)をクリップボードに張り付ける方法について記載している。
これは、エクスプローラで検索した結果に対しても有効である。

実は、これは、以前の記事「エクスプローラでファイル名をクリップボードにコピーする」で紹介した内容の改良版で、前回との違いなどを最初に記載しているが、手っ取り早く試したい人は、【導入手順】から読んでほしい。


【前回記事内容と今回の変更点】

前回は(今回も同じであるが)以下の方法で実現している。

step1.対象ファイルを選択した状態でエクスプローラの右クリックメニュー →「送る」で特定のバッチファイルを選択
step2.バッチファイルが実行され、ファイルの情報をクリップボードへコピー
step3.(人が)テキストファイルやExcelに貼り付け

また、出力する情報別に、以下の3種類のバッチファイルを用意していた。

  1. ファイル名のみのの一覧(テキスト形式)
  2. パス、ファイル名、更新日時、ファイルサイズ の一覧(Excelに張り付けられるようTAB区切り)
  3. tree情報(Dosコマンドの tree の実行結果)

自分でも日々の業務の中で使用しており、特に 2 は重宝して使っていた。
エクスプローラ内のファイルの一覧を表示するのであれば、Dosコマンドの Dir でも何とかなるが(それでも Excel に貼って2次加工したい場合はひと手間必要)、エクスプローラで検索した結果の一覧を更新日時やサイズと合わせて出力する場合はこれ以外の方法はないと思う。

ところが、これまで使っていて、うまく動作しないケースを発見した。ファイル名やフォルダ名に全角空白が含まれる場合で、なぜか、全角空白で名称が分断され、2つのファイルやフォルダが存在するように誤動作してしまう。

この原因調査のためググってみたところ、以下の記事を発見した。

ファイル名に=;,や全角空白を使うときは、半角空白も併せて使うべし。
ファイルエクスプローラからバッチファイルへドラッグ&ドロップして正しいファイル名を得る方法


結果的には、これはバッチファイルの仕様(バグ?)でどうしようもないようである。それも、ファイル名やフォルダ名に一緒に半角空白が入っていればOKという謎仕様である。

そこで、バッチファイルの使用は諦め、1と2を VBScript で書き直したのが今回の記事である。VBScript はどの Windowsにも実装されているので、利用にあたって特に設定を変更したり何かのモジュールを導入する必要はない。


【導入手順】

Step1.

以下のリンクを右クリックし、メニューから「名前を付けてリンク先を保存」や「対象をファイルに保存」などを選択して VBScript ファイルをダウンロードし、ファイル名の最後の「.txt」を削除して(拡張子をvbsにして)保管したいフォルダに保存する。
それぞれ、上記の 1, 2 に対応しているので、どちらか一方でも問題ない。
文字コードは SJISを使っているため ブラウザ上で表示した場合は文字化けするので注意。

「1_copy_filenames.vbs.txt」をダウンロード
「2_copy_file_info_for_Excel.vbs.txt」をダウンロード

 

なお、「2_copy_file_info_for_Excel.vbs.txt」については、テキストエディタでファイルの先頭で定義されている定数を変更することで、以下のカスタマイズが可能である。(デフォルトで問題なければそのままで良い。)

  • fol_level_q = 0

フォルダが選択されている場合、サブフォルダ以下を階層的に調査するかを指定する。
     0:調査しない
     1:調査する
    -1:毎回確認画面でどちらかを指定する

  • Const def_fol_level = 20
       
       調査する場合の階層レベルを指定する。
        -1:制限なし
         0:サブフォルダは調査しない
         n:N階層まで調査

        通常 -1 でも問題ないが、シンボリックリンクなどがある場合に無限ループに陥る可能性があるので初期値は20にしている
        
  • Const fol_output = 1

   フォルダ自身の情報を1行として出力するかを指定
     1:出力する
     0:出力しない(ファイルの情報のみを出力する)
      

Step2.

Step1.で保存したバッチファイルのショートカットを SendToフォルダの直下に作成し、お好みで名称を判りやすいものに変更する。

SendToフォルダは、右クリックメニューで「送る」を選択した時に表示されるファイルを格納する場所で、エクスプローラ上部のパスが表示されるところに「shell:sendto」と入力して開くことができる。
私の場合(OSはWindows10 Home)は以下のフォルダである。
C:\Users\ユーザ名\AppData\Roaming\Microsoft\Windows\SendTo

 
【利用方法と実行例】

エクスプローラ上で対象ファイルやフォルダを選択し(複数選択可)、右クリック → 送る から 実行するVBScriptを選択して実行する。
その後、「1_copy_filenames.vbs」であればテキストエディタなどへ、「2_copy_file_info_for_Excel.vbs」であれば Excelの空シートに貼り付ける。


以下が貼り付けイメージである。

  • サンプルのファイル構成(青背景の4つを選択した状態で右クリック)

  E:\PROGRAM FILES (X86)\MOZILLA FIREFOX
  ├─Accessible.tlb
  ├─AccessibleHandler.dll
  ├─AccessibleMarshal.dll
  └─uninstall
    ├─helper.exe
    ├─shortcuts_log.ini
    ├─uninstall.log
    └─uninstall.update 

  • 1_copy_filenames.vbs の実行結果
     
      E:\Program Files (x86)\Mozilla Firefox  <= 1行目はパス
      Accessible.tlb
      AccessibleHandler.dll
      AccessibleMarshal.dll
      uninstall
     
  • 2_copy_file_info_for_Excel.vbs の実行結果
    • fol_level_q = 1 (サブフォルダを調査)で実行した場合
    • fol_level_q = 0 の場合は、6行目以降は表示されない

  Excel_image_001

 

もう1つ、検索結果についての貼り付け例を示す。

  • エクスプローラでの検索結果
    • Firefox のインストールフォルダ内で "log"を検索し4ファイルがヒット

Excel_image_002

  • 2_copy_file_info_for_Excel.vbs の実行結果
    • 検索結果の4ファイルとも選択して実行

Excel_image_003

 

では。

| | コメント (0)

2020年2月24日 (月)

ORICO 5.25インチベイ用 着脱式HDDケースの電源ボタンを交換した

今回は、以前の記事「余剰部品を活用した ~ Orico 1105SS と AREA TTH Quattro」でも書いた、Orico社の内蔵HDDケースの話である。
あれから4年間、バックアップ用のHDDを入れて使用してきた。バックアップを取るときだけ電源を入れるので地震などの不意の衝撃で壊れる可能性は少なく、外付けのUSB HDDと比べ場所をとらないのが気に入っていた。

 正面から見たところ
 Orico_hddcase_001


 本体(上面の丸印のネジは既に外してある)
 Orico_hddcase_002

  背面にはSATAのコネクタがある
 
Orico_hddcase_003

 

ところが、1年くらい前から正面左にある電源ボタンを押す時に引っかかるような感触がでてき始め、ついに押しても戻らなくなってしまった。しばらくは、内側側面の隙間から精密ドライバの先端を挿し込んで強制的に戻していたが、それも面倒くさくなり修理にチャレンジすることにした。

以下、そのメモである。

(手順は後述するが)分解してみたところ、押ボタンの部品を取り外すことができ、ググってみたところ秋葉原の秋月電子で、見かけ・サイズ・脚の数まで全てそっくりな部品を発見、早速購入してみた。


基板用押ボタンスイッチ(黒・オルタネート) PS-85S(1個 税込40円)


細長いボタン(下の写真左)が付属しているが、ボタンは挿し込み式になっており、Oricoに付いていた大きなボタン(写真中央)と交換可能。結論として、本体は全く同じ仕様のようである。

 Orico_hddcase_008

脚は6本あり、その回路図は上記リンクのデータシート参照。

 Orico_hddcase_009


ケースの前方上面と側面のネジ(写真内の黄色の丸)を外してフロントパネルを前方に引き出すとボタン部品が見え、後方に引き抜いて外すことができる。(下の写真中央のリード線が繋がっている部品をリード線側に引き抜く。)

 Orico_hddcase_011


2本のリード線のハンダを溶かして部品から外し、新しい部品にハンダ付けして(短絡防止のため)熱収縮チューブで覆う。

 Orico_hddcase_012

あとは、逆の手順で組み立てれば完成である。

では。

| | コメント (0)

2019年8月18日 (日)

outlookメールの添付ファイル名を検索するVBScriptを作成してみた

今回は、自分の仕事で使う目的で作成した「outlookを操作するVBScriptシリーズ」の恐らく最終回である。

これまでのこのシリーズの出し物は以下の通りである。

今回は、outlookの添付ファイルを検索し、ファイル名の中に、指定した文字列を含むものを検索するスクリプトである。

使い方は、以下の通りである。

まず、事前準備として、本記事の最後に添付されている「search_for_attached_files_in_outlook.vbs」を任意の場所に置いておく。
あとは、outlook上で検索対象のメールを選択した状態で(もちろん複数選択可)、このvbsファイルをダブルクリックして実行するだけである。

実行すると「ファイル名の一部を指定してください。」というメッセージと入力ウィンドウが現れるので検索文字列を入力すると、検索完了後に、

  • 1件でも見つかった場合は「N件のファイルが見つかりました。情報をクリップボードにコピーしました。」
  • 1件も見つからなかった場合は「該当ファイルは見つかりませんでした。」

のいずれかを表示し終了する。

前者の場合は、Ctrl-v などの貼り付け操作で、Excelやテキストエディタなどにクリップボードの内容を貼りつけると

見つかった添付ファイル名,  該当メールの受信日時,  件名,  送信者

の一覧(各項目はタブ区切り)を見ることができる。

留意事項としては以下の通り。

  • 一度に入力できる検索文字列は1つだけで、ファイル名の中に、その文字列を完全一致で含むものだけがヒットする。
  • 実行中にoutlookへのアクセス許可を求める以下のダイアログが表示された場合は「許可」を選択する。
    Outlook_acceess_permission

 

以下がスクリプトである。


Option Explicit

Dim objOA, objSelection, objItm, objAtt, objWS
Dim I, MySrch, MyCnt, Mystring

Set objOA = CreateObject("Outlook.Application")

Set objSelection = objOA.ActiveExplorer.Selection
If objSelection.Count = 0 Then
 MsgBox "メールが選択されていません。"
 WScript.Quit
End If

MySrch = InputBox("選択されたメールの添付ファイル名を検索します。" & vbCrLf & "ファイル名の一部を指定してください。")

If Len(MySrch) = 0 Then
 WScript.Quit
End If

MyCnt = 0
Mystring = ""
For I = 1 To objSelection.Count
 set objItm = objSelection.Item(I)
 For Each objAtt In objItm.Attachments
  If InStr(1,objAtt.FileName,MySrch,1) > 0 Then
   MyCnt = MyCnt + 1
   Mystring = Mystring & vbCrLf & objAtt.FileName & vbTab & objItm.ReceivedTime & vbTab & objItm.Subject & vbTab & objItm.Sender
  End If
 Next
Next

If MyCnt > 0 Then
 Mystring = "ファイル名" & vbTab & "受信日時" & vbTab & "件名" & vbTab & "送信者" & Mystring
 MsgBox(MyCnt & "件のファイルが見つかりました。情報をクリップボードにコピーしました。")
 Set objWS = CreateObject("WScript.Shell")
 objWS.Exec("clip").StdIn.Write Mystring
Else
 MsgBox("該当ファイルは見つかりませんでした。")
End If


 

ファイルのダウンロードは、以下のリンクを右クリックで「保存」(ファイルの文字コードは SJIS)

ダウンロード - search_for_attached_files_in_outlook.vbs

 

では。

 

| | コメント (0)

2019年5月 3日 (金)

outlookメールの添付ファイルを削除するVBScriptを作ってみた

今回も、自分の仕事で使う目的で作成した、outlookを操作するVBScriptシリーズである。

これまで、以下のVBScriptをアップしてきた。


私の場合、会社のメールサーバの容量が限られているので、定期的にサーバ上のメールを削除し、過去メールはデータファイル(pstファイル)にバックアップしている。
その際、データファイルの容量を極力小さくするため、サイズが大きく、かつ保存する必要のない添付ファイルは個別に削除しているのだが、そのためには以下の操作をメールの数だけ繰り返す必要がある。

  1. 対象メールを開く
  2. 添付ファイルを右クリックして削除
  3. メールを保存

そこで今回は、メールの添付ファイルを削除するVBScriptを作成してみた。

使い方は、以下の通りである。
まず、事前準備として、本記事の最後に添付されている「delete_attached_files_in_outlook.vbs」を任意の場所に置いておく。
あとは、outlook上で対象メールを選択した状態で(複数選択可)このファイルをダブルクリックし、確認ダイアログに回答するだけである。VBスクリプトなので、VBAと違いoutlookに組み込む必要はない。
途中で「1ファイルづつ確認しながら削除しますか?」と聞いてくるので、ここで「はい」を選択すると添付ファイル毎に メール件名、添付ファイル名、サイズ が表示されるので個別に削除するか否かを指定でき、「いいえ」を選択すると個別の確認はなく全添付ファイルが削除される。
また、outlookへのアクセス許可を求める以下のダイアログが表示された場合は「許可」を選択する。

 Outlook_acceess_permission

 

以下がスクリプトである。


Option Explicit

Dim objOA, objSelection, objItm, objAtt, objAtts
Dim I, MyDlt, MyMsg, MyCnt, MyCnfm, MyChng, MyIdx

Set objOA = CreateObject("Outlook.Application")

Set objSelection = objOA.ActiveExplorer.Selection
If objSelection.Count = 0 Then
 MsgBox "メールが選択されていません。"
 WScript.Quit
Else
 MyMsg = "★★警告★★" & vbCrLf & "以下のメールの添付ファイルが削除されます。良いですか?"
 MyCnt = 0
 For I = 1 To objSelection.Count
  set objItm = objSelection.Item(I)
  If objItm.Attachments.count > 0 Then
   MyCnt = MyCnt +1
   MyMsg = MyMsg & vbCrLf & Right(Space(5) & MyCnt, 5) & ": "& objItm.Subject
  End If
 Next
 If (MyCnt = 0) Then
  MsgBox "添付ファイル付きのメールが1通も選択されていません。"
  WScript.Quit
 Else
  If MsgBox(MyMsg, vbYesNo) = vbNo Then
   WScript.Quit
  End If
 End If 
End If

MyCnfm= MsgBox ("1ファイルづつ確認しながら削除しますか?", vbYesNoCancel)
If MyCnfm = vbCancel Then
 WScript.Quit
End If

For I = 1 To objSelection.Count
 set objItm = objSelection.Item(I)
 Set objAtts = objItm.Attachments
 If objAtts.Count > 0 Then
  MyChng = vbNo
  MyIdx = 1
  While objAtts.Count > MyIdx - 1
   set objAtt = objAtts.Item(MyIdx)
   If MyCnfm = vbYes Then
    MyDlt = MsgBox ("以下のファイルを削除しますか?" & vbCrLf & " メール件名[" & objItm.Subject & "]" & vbCrLf & " ファイル名[" & objAtt.FileName & "]" & vbCrLf & " サイズ[" & Round(objAtt.Size/1024) & "KB]", vbYesNoCancel)
    If MyDlt = vbCancel Then
     WScript.Quit
    ElseIf MyDlt = vbYes Then
     objAtts.Remove(MyIdx)
     MyChng = vbYes
    Else 'MyDlt = vbNo
     MyIdx = MyIdx + 1
    End If
   Else
    objAtts.Remove(MyIdx)
    MyChng = vbYes
   End If
  Wend
  If MyChng = vbYes Then
   '既読に変更
   objItm.UnRead = False
   '変更を保存
   objItm.Save
  End If
 End If
Next


 

ファイルのダウンロードは以下のリンクを右クリックで「保存」を選択(ファイルの文字コードは SJIS)

ダウンロード - delete_attached_files_in_outlook.vbs

 

では。

| | コメント (0)

2019年5月 2日 (木)

outlookからメールと添付ファイルを出力する(その2)

以前の記事「outlookからメールと添付ファイルを抽出するVBScriptを作ってみた」で、outlookからメールと添付ファイルを取り出すVBScriptを紹介した。

そのバージョンでは、あらかじめ対象メールをoutlookの指定フォルダにコピーしておかなければならなかったが、今回、その改良版としてoutlook上で選択されたメールを対象とするように仕様変更したので紹介する。
なお、私が試した環境は、Windows7とoutlook2010の組合せのみである。

主な機能は以下の通りである。

  • outlookのメールを、msgファイルとして、Windowsの指定フォルダに出力する。ファイル名は「YYYYMMDD_HHMMSS_メール件名.msg」で YYYYMMDD HHMMSS はメールの受信日時である。
  • オプションで、メールの添付ファイルを同じフォルダ直下の「添付_YYYYMMDD_HHMMSS_メール件名」というフォルダの下に出力することも選択可能。更に、オプションで、添付ファイル出力後、メールの添付ファイルを削除し、代わりに「添付ファイルを出力したフォルダのパスを記載したテキストファイル(ファイル名「元の添付ファイルの保存先フォルダ.txt」)」をメールに添付することも可能。

使い方は、以下の通りである。
まず、事前準備として、本記事の最後に添付されている「export_from_outlook.vbs」を任意の場所に置いておく。
あとは、outlook上で対象メールを選択した状態で(複数選択可)、このファイルをダブルクリックするだけである。VBスクリプトなので、VBAと違いoutlookに組み込む必要はない。

ダブルクリック後の手順をもう少し説明する。

  1. ダブルクリックすると「n 通のメールが選択されています。続けますか?」ときいてくるので「はい」を選択する。
  2. 以下のダイアログが表示されるので、出力先(格納先)フォルダを選択する。なお、ダイアログの下の「フォルダー(F):」にフルパスを直接貼り付けても良い。

    Folder_dialog

  3. 「添付ファイルを取り出しますか?」というダイアログが表示されるので「はい」「いいえ」のいずれかを選択する。
    「いいえ」を選択した場合は msgファイルのみ、「はい」を選択した場合は msgファイルに加え添付ファイルも抽出される。
  4. 3で「はい」を選択した場合、「添付ファイルを削除しますか?」というダイアログが表示されるので「はい」「いいえ」のいずれかを選択する。「はい」を選択した場合、元のメールの添付ファイルは削除されるので注意。
  5. 4で「はい」を選択した場合、「保存先フォルダを記載したテキストファイルを添付しますか?」というダイアログが表示されるので「はい」「いいえ」のいずれかを選択する。ここで「はい」を選択した場合、元の添付ファイルは削除されるが、代わりに添付ファイルを出力したフォルダのパスを記載したテキストファイルが添付される。なお、いずれの場合も、元が添付ファイル付きメールの場合、抽出された msgファイルには添付ファイルが含まれている。
  6. outlookへのアクセス許可を求める以下のダイアログが表示されるので、「許可」を選択する。

    Outlook_acceess_permission 

手順は以上である。


以下がスクリプトである。


Option Explicit

Dim objOA, objSelection, objShell, objFolder, objFSO, objItm, objAtt, objWss, objTxt
Dim MyDate, MyFileName, MyFolder, MySubFolder, MyMsgPath, YNCont, YNExt, YNDel, YNRplc, ENVtmp, MyTmpTxt, MyMsg, MyCnt, I

Const olMSG = 3
Const ErrReject = -2147467260

'添付ファイル格納サブフォルダ名の接頭語
Const PreWord = "添付_"
'元の添付ファイルの保存先フォルダを記載した添付ファイル名
Const AttFileName = "元の添付ファイルの保存先フォルダ.txt"

Set objOA = CreateObject("Outlook.Application")

Set objSelection = objOA.ActiveExplorer.Selection
If objSelection.Count = 0 Then
 MsgBox "メールが選択されていません。"
 WScript.Quit
Else
 YNCont = MsgBox(objSelection.Count & " 通のメールが選択されています。続けますか?", vbYesNo)
 If YNCont = vbNo Then
  WScript.Quit
 End If
End If

Set objShell = WScript.CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder( 0 , "フォルダを選択して下さい" , &h4050 , &h11)

If (objFolder Is Nothing) Then
 WScript.Quit
End If
MyFolder = objFolder.Items.Item.Path

'MsgBox "MyFolder = " & MyFolder

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If Not(objFSO.FolderExists(MyFolder)) Then
 MsgBox("存在しないフォルダが指定されました")
 WScript.Quit
End If

MyCnt = 0
For I = 1 To objSelection.Count
 set objItm = objSelection.Item(I)
 If objItm.Attachments.count > 0 Then
  MyCnt = MyCnt + 1
 End If
Next

YNExt = vbNo
If MyCnt > 0 Then
 YNExt = MsgBox("添付ファイルを取り出しますか?", vbYesNoCancel)
 If YNExt = vbCancel Then
  WScript.Quit
 ElseIf YNExt = vbYes Then
  YNDel = MsgBox("添付ファイルを削除しますか?", vbYesNoCancel)
  If YNDel = vbCancel Then
   WScript.Quit
  ElseIf YNDel = vbYes Then
   YNRplc = MsgBox("保存先フォルダを記載したテキストファイルを添付しますか?", vbYesNo)
   If YNRplc = vbYes Then
    MyMsg = "★★警告★★" & vbCrLf & "以下のメールの添付ファイルが置き換えられます。良いですか?"
   Else
    MyMsg = "★★警告★★" & vbCrLf & "以下のメールの添付ファイルが削除されます。良いですか?"
   End If
   MyCnt = 0
   For I = 1 To objSelection.Count
    set objItm = objSelection.Item(I)
    If objItm.Attachments.count > 0 Then
     MyCnt = MyCnt +1
     MyMsg = MyMsg & vbCrLf & Right(Space(5) & MyCnt, 5) & ": "& objItm.Subject
    End If
   Next
   If MsgBox(MyMsg, vbYesNo) = vbNo Then
    WScript.Quit
   End If 
  End If
 End If
End If

Set objWss = WScript.CreateObject("WScript.Shell")
ENVtmp = objWss.expandEnvironmentStrings("%TMP%")

For I = 1 To objSelection.Count
 set objItm = objSelection.Item(I)
 
 MyDate = objItm.ReceivedTime
 MyDate = Replace(MyDate, "/", "")
 MyDate = Replace(MyDate, ":", "")
 MyDate = Replace(MyDate, " ", "_")

 MyFileName = MyDate & "_" & objItm.Subject

 '使用禁止文字を置換する
 MyFileName = Replace(MyFileName, "?", "?")
 MyFileName = Replace(MyFileName, ":", ":")
 MyFileName = Replace(MyFileName, "/", "/")
 MyFileName = Replace(MyFileName, "\", "¥")
 MyFileName = Replace(MyFileName, "*", "*")
 MyFileName = Replace(MyFileName, """", "”")
 MyFileName = Replace(MyFileName, "<", "<")
 MyFileName = Replace(MyFileName, ">", ">")
 MyFileName = Replace(MyFileName, "|", "|")
 
 MyMsgPath= MyFolder & "\" & MyFileName & ".msg"
 
' MsgBox MyMsgPath
 
 Err.clear
 On Error Resume Next

 objItm.SaveAs MyMsgPath , olMSG
 
 If (Err.Number = ErrReject) Then
  MsgBox "終了します"
  WScript.Quit
 End If

 On Error Goto 0

 If (YNExt = vbYes) and (objItm.Attachments.count > 0) Then
  
  MySubFolder = MyFolder & "\" & PreWord & MyFileName

  If objFSO.FolderExists(MySubFolder) = True Then
   MsgBox "フォルダ " & MySubFolder & " は既に存在しています。"
  Else
   objFSO.CreateFolder(MySubFolder)
  End If

  For Each objAtt In objItm.Attachments
   objAtt.SaveAsFile MySubFolder & "\" & objAtt.FileName
  Next
  
  If YNDel = vbYes Then
   Set objAtt = objItm.Attachments
   While objAtt.Count > 0
    objAtt.Remove 1
   Wend
   '既読に変更
   objItm.UnRead = False
   '変更を保存
   objItm.Save
   
   If YNRplc = vbYes Then
    MyTmpTxt = ENVtmp & "\" & AttFileName
    Set objTxt = objFSO.OpenTextFile(MyTmpTxt, 2, true)
    objTxt.Write(MySubFolder)
    objTxt.Close
    objItm.Attachments.Add(MyTmpTxt)
    objItm.Save
    objFSO.DeleteFile MyTmpTxt, True
   End If
  End If
 End If
Next


ファイルのダウンロードは以下のリンクを右クリックで「保存」を選択(ファイルの文字コードは SJIS)

ダウンロード - export_from_outlook.vbs

 

どうぞご自由に。

| | コメント (0)

より以前の記事一覧