Hatena::ブログ(Diary)

まりふのひと RSSフィード

訪問数:4901471直近記事一覧見かたPCRFAQ別紙ふせんSSKPro一覧)|麻里府発OneDriveiPS-BB掲示板2
MiPS予定予定一覧MAPS-TAMAPS-TPiPS-77iPS-BB)(修了:iPSなかよしiPS遊々, iPSマクロ研WAWP)|よくある質問

 

2018.3.11 (日)

家計簿77/マクロ改修版の概要と試用のお願い

 iPS-BB(掲示板)No.833の案内

 平成29年分確定申告で「医療費の明細書」の様式が変更になりました。
これに伴い家計簿77の変更(項目追加)を余儀なくされ、急遽、マクロ家計簿77の改修を行いました。

つきましては、下記により試用版の説明会を開きますのでご意見・要望等を出してください。

  1. 日時:3月13日(火)13:00〜17:00
  2. 場所:田布施町高齢者いきいき館
  3. 内容:
    • 13:30〜15:30:マクロ家計簿77の変更点
    • 16:00〜17:00:Q&Aコーナー

で行うことを整理した。(直前まで続く予定)



家計簿77関連

◆マクロ家計簿77改修版のインストール

 新しい方法で行うので、各人のPCを確認しながら進める。

  1. バックアップ
     現在の「家計簿77」フォルダーを、フォルダー毎 圧縮し、試用直前のバックアップとする。
    1. ドキュメントを開き「家計簿77」フォルダーが見える状態にする。
    2. 「家計簿77」フォルダーを右クリック ⇒ 送る ⇒ 圧縮(zip形式)フォルダー をクリックする。
    3. 家計簿77.zip が出来、名前の変更状態になるので‥‥
    4. “家計簿77”の右に今日の日付を追加する。例えば “家計簿77_2018-0311”

  2. インストール
     Windows10のエクスプローラーの機能(マイクロソフト社のお奨め?)を使って zipファイルを「展開」してみる。
    1. 麻里府発 ⇒ まりふのひとのOneDrive に接続する。
    2. 家計簿77・フォルダーを開く。
    3. マクロ家計簿77v144a.zip を選択し、[保存]する。
    4. ダウンロードが完了したら[フォルダーを開く]。
    5. ダウンロード・フォルダーが開き、ダウンロードしたファイルが選択状態になるので、[開く]。
    6. 展開・タブがアクティブになるので、「マクロ家計簿77」を選択する。
    7. 展開先・グループが使える状態になるので (詳細)⇒ [場所の選択...]を選択する。
    8. [全て展開]をクリックすると【項目のコピー】ダイアログボックスが出るので、
      ドキュメントを開き、家計簿77・フォルダーを選択し、
    9. [コピー]する。
    10. 確認メッセージが出るので、✓ファイルを置き換える
    11. エクスプローラー、OneDrive を閉じる。

  3. バージョンの確認
    1. 家計簿77を開く。
    2. 収支シートの[メニュー]を開き
    3. タイトルバーでバージョンを確認する。(今回は version 1.44a)
    4. メニューを閉じる。


◆初期設定
  • 医区(医療費区分)列の作成
    • 作るのであれば、すべての収支シートに作る必要がある。さもないと「総収支」シートが作れない。
  • 医区(医療費区分)ボタン([I])の作成
    • これは任意。ショートカットキー(Ctrl+Shift+I)で起動できる‥‥ はず。
  • [通し]ボタンのデザインを[T]に変更 ‥‥ 面倒なので後から行う。
    • これは任意、特に変える必要性はない。無くても下記で...
    • ショートカットキー(Ctrl+Shift+T)で起動できる‥‥ はず。

◆その他の新機能
  • ショートカットキー Ctrl+Shift+D で、「同上」(〃)の機能を持たせた。

◆新機能の試用
  • 新機能は、家計簿77起動直後は利用できない。一旦、メニューを開き、閉じる 必要がある。
    • ∵ 家計簿77起動直後は、マクロ家計簿77 が開かれていないため。

Q&Aコーナー

  1. カレンダーを作成したいが上手くできない
    • Excel2007演習問題集を参考に年間カレンダーを作成した
      1. 復元したExcelファイルを開き、
      2. セルD2に開始の西暦年、セルB2に月を入力すると、1年分のカレンダーができる‥‥ はず。
        • セルを書き換えられるのはこの2ヶ所のみです!
           他のセルは数式が入っていますので、変更するとカレンダーが崩れる可能性があります。(バグが無ければ‥‥ の話)
      ≪カスタマイズ≫
       Excelそのもなので、自由に変更できる。おかしな点や提案があったらコメントしてほしい‥‥ です。
      1. セルD2は結合してあります。結合を解除しても問題ありませんが、「月」は必ずセルD2です!
      2. フォントやフォントサイズ等の設定は自由に変えられます。
        • フォントサイズを大きくするには、列の幅,行の高さも変える必要があるでしょうが、問題ありません。
        • フォントを変えると、大きさが変わることもあります。
      3. 非表示の行があります。表示しても問題ありませんが...
      4. 祝日のセルに自分で色を付けると、ズーッと残るのでおかしなことになる。

2018.2.23 (金)

マクロ家計簿77/直上の行の内容をコピーするマクロを検証中‥‥

 確定申告の作成が一段落したのでデータを保存し、昨日より2017年の女房の医療費★をまとめて入力している...


  • 女房は長年 手書きの家計簿を付けているので、それを尊重。但し、医療費は、確定申告で「医療費控除」申請をするので、領収書は保存してもらうようにしている。
  • ファイル名は「医療費R★_2017.xlsx」とし、シート見出し「2017-01」に1年分を入力する。
  • 領収書は病院(医院)別になっているので、
    • 日付は、2行目のみ年月日で入力、3行目以降は Ctrl+D でコピーし、数式バーで月日を修正した。
    • 費目は全て同じになるので、Ctrl+D
    • 備考も殆ど Ctrl+D で済む。



 自分に質問してみた...

 日付を Ctrl+D でコピーしたついでに、「費目」,「カード」,「備考」もコピーできると、入力の手間が省けるのですが‥‥

  • 例えば、スーパーで焼酎とビールをカード払い買ったとします。
    • 品名は「焼酎&ビール」とし合計金額を入力していましたが、
       1行目の品名は“〇×△焼酎”、2行目は“●×▲ビール”で入力するのが簡単になります。


  • ショートカットキーによるマクロの実行(ExcelやAccessの学習ならOfficePro)
    ‥‥ またショートカットキーは「Ctrlキー」だけではなく「Ctrlキー+Shiftキー」と何か1つの文字という組み合わせにすることもできます。「Shiftキー」も同時に押す必要がある場合には、登録する1文字を入力する時に「Shiftキー」を押しながら文字を入力して下さい。すると次の画面の用に自動的に「Ctrl+Shift」に画面表示が変わります。

    作成済みのマクロにショートカットキーを設定する

     既に記録されたマクロに後からショートカットキーを設定したり、変更したりすることも可能です。メニューの「ツール」から「マクロ」を選択し、さらに「マクロ」をクリックして下さい。
    マクロの一覧画面が表示されますので、ショートカットキーを設定したいマクロを選択してから「オプション」ボタンをクリックして下さい。
    マクロのショートカットキーの設定と説明の編集が行える画面が表示されます。


 早速マクロ(下記)を作成し、ショートカットキーとして Ctrl+Shift+D を割り当てた。

要は日付入力時 Ctrl+D の代わりに Ctrl+Shift+D すると、「日付」「品名」「費目」「カード」「備考」をコピーするもの。


 只今、検証を兼ねて、医療費★ を1年分 入力している...


◆作成したマクロ(VBA)
'カーソルが「日付」にある時、直上の行の内容をコピーする。(Ctrl+D の拡大機能)
Sub 直上のセル内容をコピーする()
Dim mbTitle As String
Dim actRow As Long, actCol As Long
Dim lastRow As Long

    mbTitle = "直上のセル内容をコピーする/" & getMacroTitle()
        '日付の最終行をセットする。
    lastRow = Cells(Rows.Count, 2).End(xlUp).Row
        'アクティブセルのアドレス
    actRow = Selection.Row
    actCol = Selection.Column
    If (actRow = 2) Or (actCol <> 2) Or (actRow <> lastRow + 1) Or (Cells(actRow, actCol) <> "") Then
        MsgBox "この機能は使えません。" & vbCrLf & vbCrLf _
                & " 1)2行目では使えません。" & vbCrLf _
                & " 2)2列目以外では使えません。" & vbCrLf _
                & " 3)直上のセルにデータが入力してある必要があります。" & vbCrLf _
                & " 4)アクティブセルは空白である必要があります。" _
                , vbCritical, mbTitle
        Exit Sub
    End If
        'Ctrl+D(同上)を行う。
    Cells(actRow, 2).FillDown   '日付
    Cells(actRow, 3).FillDown   '品名
    Cells(actRow, 4).FillDown   '費目
    Cells(actRow, 5).FillDown   'カード
    Cells(actRow, get列番号("備考")).FillDown   '備考

End Sub

'概要:引数の項目名の列番号を返す。
Function get列番号(arg項目名 As String) As Long
Dim mbTitle As String
Dim c As Long, lastColumn As Long

    mbTitle = "get列番号/" & ThisWorkbook.Name
    get列番号 = 0
    If arg項目名 = "" Then Exit Function
    
    lastColumn = Cells(1, Columns.Count).End(xlToRight).Column
    
    For c = 1 To lastColumn
        If Cells(1, c) = arg項目名 Then get列番号 = c: Exit For
    Next
    
End Function

2018.1.21 (日)

マクロ家計簿77/[シートの保護]の不具合に対応するため、LAVIE公式サイトの手順でマクロを作り直した

 昨日、6日のWindows10データ移行の続きを高齢者いきいき館で行ったが、

  1. マクロ家計簿77をバージョン1.41aに上げ、
  2. [シートの保護]を行った‥‥ が、上手く動作しなかった。
    • 2行目のカーソルの動きがおかしい?



 [翌年分ブック作成]で「2019年の家計簿」を作り、シート保護のマクロを作った時の方法で行った‥‥ が、やはり上手く動作しなかった。

  • Windows10 Home、バージョン:1709、OSビルド:16299.192
  • Excel2013 (15.0.4981.1000) MSO (15.0.4981.1000) 32ビット
    • 何気なく[今すぐ更新]した‥‥ ら、15.0.4997.1000 になった。これにもビックリ!!!

 改めて、“Excel2013 シートの保護” でググり、Excel2013での方法を確認した。

  • Excel 2013で一部のセルを変更できないようにする方法(NEC LAVIE公式サイト 更新日:2016/07/14)

    操作手順

    1. 編集を許可するセルをドラッグまたはクリックして選択します。
    2. 選択したセルを右クリックして、表示された一覧から「セルの書式設定」をクリックします。
    3. 「セルの書式設定」が表示されます。
       「保護」タブをクリックし、「ロック」のチェックを外して「OK」をクリックします。
    4. 続いてシートを保護します。
       リボンから「校閲」タブをクリックし、「変更」グループの「シートの保護」をクリックします。
    5. 「シートの保護」が表示されます。
       「シートとロックされたセルの内容を保護する」にチェックが入っていることを確認して、「OK」をクリックします。

    補足

     シートの保護を解除する場合は、リボンから「校閲」タブをクリックし、「変更」グループの「シート保護の解除」をクリックします。

 マクロの記録からVBAコードを取得し、下記とした。
バージョンを 1.41b とし、テストにはならないと思うが自分の家計簿で試行中‥‥

Function シートの保護(arg保護 As Boolean) As Boolean
Dim lastCol As Long, lastRow As Long
    
    If arg保護 = False Then
        ActiveSheet.Unprotect
    Else
            'Enter押下で右に移動する…ver.1.41a
        Application.MoveAfterReturn = True
        Application.MoveAfterReturnDirection = xlToRight
            '入力列の範囲を選択し、
        lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
        Range(Columns(1), Columns(lastCol)).Select
            'セルのロックを解除する。
        Selection.Locked = False
        Selection.FormulaHidden = False
            'セルを保護する。
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
            , AllowFormattingCells:=True, AllowFormattingColumns:=True
        
        lastRow = Cells(Rows.Count, 2).End(xlUp).Row
        Cells(lastRow + 1, 1).Select
    End If
    
End Function

2017.8.25 (金)

Word2013VBAでShowParagraphs(段落記号の画面表示)の値を変更できない

 Word2013で文書を開いた時、

  • [編集記号の表示/非表示]はオフにして、
  • 段落記号は常にする。

にしたいので、

  1. 白紙の文書から、
  2. Wordのオプション ⇒ 表示 の「常に画面に表示する編集記号」のチェックをすべて外し、
  3. 文書の画面に戻って[編集記号の表示/非表示]をオンにした。
  4. [マクロの記録]を開始
    1. 【マクロの記録】ダイアログボックスで下記を入力し[OK]
      • マクロ名:“段落記号を表示する”
      • マクロの保存先:文書1(文書)
    2. [ファイル]⇒[オプション]⇒[表示]と進め、
    3. ☑ 段落記号
      □ すべての編集記号を表示する
    4. [OK]
  5. [マクロの記録]終了

 完成したマクロは下記であった。

Sub 段落記号を表示する()
'
' 段落記号を表示する Macro
'
'
    ActiveWindow.View.ShowParagraphs = False
    ActiveWindow.View.ShowAll = False
End Sub
  1. ☑段落記号としたのに、ShowParagraphs = False はおかしいなぁ‥‥ とヘルプ(英文)を参照した‥‥
    f:id:ogohnohito:20170825131504j:image:w600

    が、Exampleでは「段落記号を隠す」が False になっている。
     どう考えても Excelがおかしい...

  2. マクロを動かしてみると、
    • ShowParagraphs = False でも ShowParagraphs = True でも動作しない。
    • ShowAll = False は正しく動作する。

  3. “ShowParagraphs” でググる‥‥ と、
    • Word2007 VBAで ShowParagraphの値を変更できない(マイクロソフト コミュニティ 質問日 2月 3, 2015)
       ShowParagraphsプロパティは、Word2007以降だと実行しても有効にならないようですね。
      ShowParagraphsプロパティをToggleで動作をするように書き換えても、同じ項目にある他のチェック項目は動作するのに、ShowParagraphsプロパティのみ無意味になっているようです。
       そこで、ShowParagraphsプロパティのみ手動で有効なダイアログボックスから実行する方法を検討してみました。
      Sub ChangeSetting()

      With ActiveDocument.ActiveWindow.View
      .ShowAll = True
      .ShowHiddenText = False
      End With

      If ActiveDocument.ActiveWindow.View.ShowParagraphs = False Then

      SendKeys ("{Tab}")

      SendKeys ("%m")

      ' 表示オプションをすぐに閉じたい場合は有効にする
      ' SendKeys ("{Enter}")

      Dialogs(wdDialogToolsOptionsView).Show

      End If

      End Sub
      これなら、ShowParagraphsプロパティを実行したときと同じ動作をしてくれると思います。
      • 回答者の「お茶問屋」さんは一般の人?
         他にresは付いておらず、Microsoft コミュニティ モデレーターもぐうの音も出ないのか...

※ Sub ChangeSetting() を試した
  • 確かに上手く動く。
  • SendKeys ("{Tab}") の目的が理解できない。
    • その前の ShowHiddenText = False を行っているので、[Tab]で次のアイテムの「任意指定のハイフン」をアクティブにする(Wordのオプション/表示をアクティブにする?)のが目的か...
  • 下記関数を Sub AutoOpen() で実行し、目的を達成した。
Function 表示オプションの設定() As Boolean

    With ActiveDocument.ActiveWindow.View
        .ShowTabs = True        'タブ
        .ShowSpaces = True      'スペース
        .ShowParagraphs = True        '段落記号
        .ShowHiddenText = False        '隠し文字
        .ShowHyphens = False       '任意指定のハイフン
        .ShowObjectAnchors = True      'アンカー記号
        .ShowOptionalBreaks = False        '任意指定の改行
        .ShowAll = False
    End With

    If ActiveDocument.ActiveWindow.View.ShowParagraphs = False Then
        SendKeys "{Tab}", True
        SendKeys "%m", True
        SendKeys ("{Enter}")
        Dialogs(wdDialogToolsOptionsView).Show
    End If
    
    表示オプションの設定 = True

End Function

編集後記

  • かなり遠回りをして解決したが、このコードを使うか、使わないで「出来ない」と諦めるか‥‥ 悩んでいる。
  • 解決のきっかけは “ShowParagraphs” でググって「Word2007 VBAで ShowParagraphの値を変更できない」に辿り着いたこと。
  • Word2013でも解決していないとなると、Microsoft社に改善の意図はないと思われる。少なくともヘルプは「嘘」を言っているのであり、変更してもらいたい 

追伸(2017.09.16)

  1. 上記コードを(1)パスワードを使用して暗号化してある文書の(2)Sub AutoOpen に置くと、上手く動作せず、本文を壊してしまうことが判った。
  2. 文書が開いた後に、Alt+F8 から AutoOpenを実行すると、問題なく動作することも判った。
  3. 結論としては、段落記号をオンにするのは、VBAではなく「手動」で行うことにした。
  4. 該Word文書にはパスワードを掛けてある。

2017.7.7 (金)

MiPSネットワーク回線利用予定更新のExcelマクロ(VBA)が完成の域に...

 まりふ・いきいきパソコン学習会(MiPS) ネットワーク回線利用予定(麻里府発 > H29年度学習予定)は、

f:id:ogohnohito:20170707151843j:image:w600

  1. Excelの手作り。
    • 「使用グループ名」は条件付き書式で塗りつぶしている。
  2. 上書き保存後、
  3. 名前を付けて、HTML形式で保存。
  4. FFFTP(ファイル転送)で、Yahoo!ジオシティーズにアップロード している。

 2.〜4. の手順は固定なので「マクロ(VBA)にしよう」と着手して‥‥ 早や2年、昨日、今日の雨天を利用して、やっと完成の域に達した。


§1.Excel(xlsx)の更新後の問題

f:id:ogohnohito:20170707173611j:image:w600

  1. マクロを起動するためのボタン[マクロを有効にする]を、当初はセルH1の適当な場所に作ってあった。
  2. その状態で HTMLファイルを作ると、当然、このボタンも出来る。(飾りであるが...)
  3. そのため、xlsxを上書き保存後、(マクロで出来なので)手でボタンを切り取り後、HTMLファイルを作成していた。

  4. 2年後、
    1. 2行目にボタンを作る。
    2. xlsxを上書き保存後、
    3. 2行目を非表示にし、
    4. HTMLファイルを作ればよいことに気づいた
§2.ページタイトルの問題

f:id:ogohnohito:20170707172102j:image:w480

  1. マクロで付けられない‥‥
  2. そこで、HTMLファイルを同名で「名前を付けて保存」する時に、手入力していた。

  3. その後、セルA1の内容をクリップボードにコピーするコード(下記)がわかり、「貼り付け」で済むようになった
≪文字列をクリップボードにコピーするコード≫
'概要:引数1をクリップボードにコピーする
' http://www.relief.jp/itnote/archives/017881.php(インストラクターのネタ帳)
' [ファイルの参照]ダイアログで「FM20.DLL」ファイルを探す必要があります。
Sub toClipboard(argString As String)
Dim CB As New DataObject
    
    With CB
        .SetText argString          '変数のデータをDataObjectに格納する
        .PutInClipboard             'DataObjectのデータをクリップボードに格納する
    End With

End Sub

§3.マクロ(xlsm)を開いた時の問題
  1. [マクロを有効にする]ボタンは マクロファイル(xlsm)の Sub:AutoOpen を起動するようにしてある。
  2. この AutoOpen には何も記述していない。
  3. このため、[マクロを有効にする]をクリックすると、マクロファイルのシートが表示される。

  4. AutoOpenに
        Windows(ThisWorkbook.Name).Visible = False
    を記述すると、シートは表示されなくなる。
  5. が、マクロファイルにある「更新履歴」を記入できなくなる。
  6. このため、
        Windows(ThisWorkbook.Name).Visible = True
    を実行する必要がある。
     これは、
    • Excel2013の表示・タブ/ウィンドウ・グループの[表示しない]/[再表示]に対応していることが判った。
    • [表示しない]にしてある場合、xlsxを閉じると xlsmも閉じられることも判った。(タスクマネージャで確認)

結果

 昨日、今日の雨天を利用して、「MiPSネットワーク回線利用予定」のマクロ(VBA)の改修を進めた結果、2年越しの課題が解決した

 
迷惑コメント(英文)で困っております
コメント入力方法は
こちら を参照してください。


お世話になります

カレンダー
<< 2018/04 >>
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
おいでませ
4901472