---手強しエクセルVBA (3)---

 VBAと格闘をしていて、最後に保存しようと、「Crtl+S」を押して
 上書き保存をしようと思うと、なぜか、名前をつけて保存に
 なってしまいます。
 NETで検索してもひっかかりません。
 もしやと思い、ファイル-オプションをたどってみると、なんと
 「保存」という項目があるではありませんか。

 

 ここにブックの保存形式という覧があります。ここがデフォルトでは、
 マクロを保存しない、「.xlsx」になってます。これで、上書きではなく
 て、名前をつけて保存になったようです。
 ここを、マクロも記録できる、「.xltm」にすると上書きができるよう
 になりました。
 もしかして、ここは、「.xlsm」(マクロ有効ブック)でもよかったの
 かも。
 この設定は、以前のものにはなかったような?,気が。
 あったのかな、この辺はちょっと、不確かです。

---手強しエクセルVBA (2)---

 お手伝いでしている仕事の内容は、ある行事の参加者申し
 込みの受付の処理です。
 参加希望者は、HPから申し込みをします。すると。手元に
 申し込みのメールが届きます。
 このメールを処理して、

  1 受講票返信メールの作成・送付
     受付日付
     受付No
  2 受講者一覧表の作成

 の一連の作業をします。以前は、この作業を全部手作業
 でやってました。
 今回の催しの定員が100名ですから、結構な手間です。
 そこで、VBAの登場でしたが、やっと次のような手順で
 かなりの部分を半自動?にすることができました。

 
  送られてくる自動返信メールのコピー(手動)
   ↓
  エクセルに貼り付け(手動)
   ↓
  必要データーの取り出しと成形(エクセル関数)
   ↓
  一覧表への追加(エクセルVBA)
   ↓
  返信文面の作製(エクセル関数)
    受付月日の挿入
    受付Noの挿入
   ↓
  エクセルの返信文面のコピー(手動)
   ↓
  メールへの貼り付け(手動)
   ↓
  送信・・・・・・・・・受付完了

 これらの作業のなかで、一覧表への追加が一番てまどりまし
 た。
 その次にてまどったのが受付Noの挿入です。
 これは、受付名簿の一覧表から、追加した項目のNoを
 読みとることで実現しました。

   Worksheets(“Sheet1”).Range(“B” & Range(“C4”).-
        End(xlDown).Row).Copy
   Range(“J6”).Select
   ActiveSheet.Paste

  表に追加すると、C4の表題以下のセルに種別が追加され
 ますので、

   Range(“C4”).End(xlDown).Row)

 で、どこのセルが記入済みの最下段(行)か取得します。
 この読みとった行とNoの書いてある”B”と&をとって、
 該当のNoのセルの番地を作ってます。

 Worksheets(“Sheet1”).Range(“B” & Range(“C4”).End(xlDown).Row)

 これを、作業セルのJ6にペーストします。

   Range(“J6”).Select
   ActiveSheet.Paste

 こんな一連の動作で、受付Noを挿入した文面を作りました。
 手間取りましたが、ちょっと楽になって、間違いもすくなくなり
 そうです。

---手強しエクセルVBA (1)---

 手強いVBAを少しやっつけました。
 以前にしたことを少し思いだしましたが、未だ手強いのには、
 変わりありません。
 昨日、やっつけたのは、一定の範囲のセルを表の最下行に
 追加でペーストするというものです。
 ただ、これだけで、何時間もかかりました。できてみると、

 Sub コピー()
    Worksheets(“Sheet1”).Range(“K133:O133”).Copy
    Worksheets(“Sheet1”).Range(“C” & (Range(“C4”).End(xlDown).Row + 1)).-
    PasteSpecial Paste:=xlPasteValues, -
    Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  End Sub

 何のことはない、たった、2行です。
 K133~O133のセルに書かれているセルの値だけを、表の
 最下行にコピーするだけです。
 
 表の最下行を

   Range(“C4”).End(xlDown).Row

 で求め、その下を+1で求めます。
 エクセルの番地は、英語と数字です。この番地を

   Range(“C” & (Range(“C4”).End(xlDown).Row + 1))

 で&を使って作ります。
 
 

---手強しエクセルVBA---

 在宅でお手伝いをしている仕事関連で、エクセルでの処理を
 手短にやろうと、久しぶりにエクセルのVBAをいじりました。
 やることは、

  原本
  ↓
  シートのコピー
  ↓
  振分してシートごとに転記
  ↓
  コピーの削除

 これだけですが、0から作ることはできないので、NETと検索
 するとちょうどVBAのプログラムがでていました。

   Sub 担当者別に振り分け()
    Dim OrgWS As Worksheet, TmpWS As Worksheet, CurWS As Worksheet
    Dim FromCell As Range
    Dim ToCellNum As Integer
    Dim CurName As String
    ’変数初期化
        Set OrgWS = Worksheets(“Sheet1”) ‘元のデータがあるシート名を指定
        CurName = “”
    ’処理終了まで描画を止める
        Application.ScreenUpdating = False
    ’シートを作業用にコピーして担当者でソート
        OrgWS.Copy after:=Sheets(Worksheets.Count)
        Set TmpWS = Worksheets(Worksheets.Count)
        TmpWS.Columns(“A:G”).Sort Key1:=Range(“A2”), Header:=xlYes
    ’メイン処理
       For Each FromCell In TmpWS.Range(“A2”, TmpWS.Range(“A65536”).End(xlUp))
        If FromCell.Value <> CurName Then ‘次の担当者に移った場合
          CurName = FromCell.Value
          Worksheets.Add after:=Worksheets(Worksheets.Count) ‘シートを最後に追加
          Set CurWS = Worksheets(Worksheets.Count)
          CurWS.Name = CurName ‘シート名を担当者にする
          ToCellNum = 2 ‘コピー先セルの行番号を初期設定
          OrgWS.Range(“B1”, “G1”).Copy CurWS.Range(“A1”) ‘タイトル行をコピー
        End If
         FromCell.Offset(0, 1).Resize(1, 6).Copy CurWS.Cells(ToCellNum, 1) ‘データのコピー
         ToCellNum = ToCellNum + 1 ‘コピー先セルを一つ下に進める
       Next
    ’作業用シートを削除
       Application.DisplayAlerts = False
       TmpWS.Delete
       Application.DisplayAlerts = True
    ’描画を再開
       Application.ScreenUpdating = True

 でした。すぐ動くかとおもいましたが、エラーでだめでした。
 ネットで検索をしながら、やっと、動くように手直ししました。
 動かなかったのは、多分、掲載してあったVBAは、2003用の
 古いものだったのかもしれません。2013では、動きませんでした。
 下記が、修正して、私の環境で動くようにしたものです。

Sub 振分()
  Dim OrgWS As Worksheet, TmpWS As Worksheet, CurWS As Worksheet
  Dim FromCell As Range
  Dim ToCellNum As Integer
  Dim CurName As String
  ’変数初期化
    Set OrgWS = Worksheets(“一覧”) ‘元のデータがあるシート名を指定
    CurName = “”
  ’処理終了まで描画を止める
  Application.ScreenUpdating = False
  ’シートを作業用にコピーして担当者でソート
    OrgWS.Copy after:=Sheets(Worksheets.Count)
    Set TmpWS = Worksheets(Worksheets.Count) ‘最後ワークシートを作業用に
    TmpWS.Activate
    TmpWS.Range(“B2:I17”).Sort Key1:=TmpWS.Range(“C3”), order1:=xlAscending, Header:=xlYes
  ’メイン処理
    For Each FromCell In TmpWS.Range(“C3”, TmpWS.Range(“C” & Rows.Count).End(xlUp))
      If FromCell.Value = “終了” Then Exit For
      If FromCell.Value <> CurName Then
        CurName = FromCell.Value
        Worksheets.Add after:=Worksheets(Worksheets.Count) ‘シートを最後に追加
        Set CurWS = Worksheets(Worksheets.Count)
        CurWS.Name = CurName ‘シート名を種別名にする
        ToCellNum = 1 ‘コピー先セルの行番号を初期設定
        OrgWS.Range(“B1”, “I2”).Copy CurWS.Range(“B2”) ‘タイトル行をコピー
      End If
      ToCellNum = ToCellNum + 1 ‘コピー先セルを一つ下に進める
      FromCell.Offset(0, -1).Resize(1, 8).Copy CurWS.Cells((ToCellNum + 2), 2) ‘データのコピー
    Next
  ’作業用シートを削除
    Application.DisplayAlerts = False
    TmpWS.Delete
    Application.DisplayAlerts = True
  ’描画を再開
    Application.ScreenUpdating = True
End Sub

  作業シートの作製までは、うまくいったのですが、このシート
  をソートしようと思っても、原本がソートされ、ここを直すのに
  まる一日以上かかってしまいました。
  目が疲れました。 

---Linksatationの不具合---

 NET経由でリンクステーションにアクセスできるように設定
 してありましたが、NET経由でアクセスができなくなりました。
 家にも戻って、ネットワーク内部からアクセスしましたが、
 これもだめでした。
 NASナビゲーターからも、Linksatationがみつからなくなり
 ました。ちょっと焦りました。

 

 念のため、電源を落として再起動しました。
 すると、アクセスができるようになり、NASナビゲーター
 からも見つかるようになりました。

 

 原因は分かりませんが、ソフトの不具合なんでしょうか。
 時々、再起動が必要なんでしょうかね。

---DNSの不具合---

 インターネットの接続で、NTTからOCNに変更したら、特定の
 サイトに接続ができなくなりました。
 OCNのサイト等で調べて、DNSの設定は、「自動で取得」
 でいいとのことだったので、その設定にしてました。
 大きな不具合はなかったのですが、
   http://ktsite.ddo.jp/PIC/
 のサイトに接続ができませんでした。携帯では、できたので、
 多分、DNSの不具合だろうと思いました。
 ネットで検索すると、googleのDNSを使うといい、との記事
 をみかけましたので、
    優先 8.8.8.8
    代替 8.8.4.4
 にルーターのDNS(ドメインネームサーバー)の設定を変更
 しました。やっと見えるようになりました。このサイトには、
 16F88の情報がまとめられているので、重宝しています。
 
 リングバッファーを使って、割り込みによる送信の
 プログラム組みたくて、16F88のUSART割り込みについ
 ていろいろ調べています。受信のプログラムは散見しますが、
 送信のプログラムについては、AVR等のプログラムを
 をよく見かけます。16F88の例題?があるとい
 のですが。

---K2CADのインストール---

 基盤の作成に当たって、CNCで切削するという記事が目に
 とまりました。
 切削にあたっては、ガーバーデーターを作成る必要がある
 みたいで、そのためのソフトは、「eagle」や「K2CAD」等が
 あるようです。
 「K2CAD」は、日本の方が作ったシェアウエア-ですが、
 とりあえず使ってみようとインストールを試みましたが、
 私のWINDWES7では、インストールできませんでした。
 XPの互換モードでもインストールできなかったので、
 「Windows Virtual PC」と「Windows XP Mode」を
 インストールして見ました。ここのHPを参考にしました。
 どちらのソフトもマイクロソフトから無料でダウンロードでき
 ます。次のような手順でインストールしました。
    1ハードウェア支援による仮想化機能を持つことの確認
    2Windows XP Modeのインストール
    3Windows Virtual PC
 
 詳細は前記のリンクに書いてありますので、それぞれの
 ダウンロード先だけをリンクしておきます。
 
 XPの仮想マシンをWINDOWS7上に作成して、
 XPの仮想マシンにK2CADをインストールを試みました。
 仮想マシンには、無事インストールできました。

 

 使い方はまだ未知数ですが、
 いじってみようと思います。

---WINDOW10無償アップデート---

 WINDOW10への無償アップグレードの話題がでているよ
 うです。ノートPCは、10にアップデートすると、一部分の
 ドライバーが使えなくなりそうなので、しばらく様子見です
 が、故郷納税のタブレットは、アップグレードしてみよう
 と思います。
 Window Updateで、KB3035583のアップデイトのプロ
 グラムがインストールされると、青矢印のアイコンが
 右端に表示されるようになります。

 

 ここをクリックすることで、アップデートの予約ができます。
 タブレットは、早速予約をしました。

---Windows Live メール 2009をインストールする---

 WINDOWS7にいてからも、Windows Live Mail 2009を使って
 るが、新しいPCにしてから、保存していたファイルからインストール
 したが、ファイルが壊れているらしくインストールできない。
 いろいろ探したが、本家のマイクロソフトでは、DLできた
 HPが削除されているようで、
 「雛形倶楽部情報データベース」にのっていた、
 http://g.live.com/1rewlive3/ja/wlsetup-all.exe

 からDLできた。
 めでたし、めでたし。

---時代は変わる? LAN内PCが見えない。WINDOWS7---

 普段使ってるPCの調子が悪くなってきた。唯一仕事にも使ってる
 ので、完全に立ち上がらなくならないうちに、新しいPC移行すべく
 安いWINDOWS7のPCを某オクで購入した。
 使えるようになるまで、あれこれ設定をしたが、まずネットワーク
 の設定ではまった。
 LAN内のHDがなかなか見えてこなかった。ネットでたぐってみた。
 似たような症状があるので、試してみたが結局だめで、いろいろ
 やってみた。
 DHCPによるIPアドレスの振り分けがきらいなので、固定のI
 Pアドレスを設定するのだが、このときに、自動構成のIPアドレス
 と、固定のIPアドレスの2種類が割り振られてしまうようだ。
 二つのセグメントの違うドレスは意味のあるのだろうが、
 こうなると、インターネットには接続できるものの、LAN内のPC
 が見れなくなってしまう。
 あれこれやっているうちに解決。それは、2度か3度ほど、IPアドレス
 を設定しなおすというもの。そうしているうちに、自動構成のアドレス
 がなくなって、LAN内のPCもみえてるくようになった。
 それから、プリンタのドライバーだが、なんと、IP4100のドライバー
 
 自動更新からは消えてしまってる。しかたないので、XP用のドライバー
 をキャノンからからDLして、無事インストール。IP4100は古いので、
 しかたないのか。これも時代の流れか。