MW211 EXIT

devlog
ExcelVBA/別ファイルを開く(2)空のファイル
2018年08月26日
ちなみに、空のファイルを開く、というかアプリケーションを新規起動するには
以下のように「Shell()」(起動成功有無の戻り値あり)を実行してあげればよい。
┌─────┬────────────────────────────────┐
│Word      │Call Shell("winword.exe", vbNormalFocus)                        │
├─────┼────────────────────────────────┤
│Excel     │Call Shell("excel.exe", vbNormalFocus)                          │
├─────┼────────────────────────────────┤
│PowerPoint│Call Shell("powerpnt.exe", vbNormalFocus)                       │
├─────┼────────────────────────────────┤
│メモ帳    │Call Shell("notepad.exe", vbNormalFocus)                        │
└─────┴────────────────────────────────┘
いずれもパスが通っているという前提である。

これらを応用して、紐づいていないアプリで無理やりファイルを開くこともできる。
┌──────────────────────────────────────┐
│Call Shell("winword.exe " & Chr(34) & "C:\説明書.pdf" & Chr(34), _          │
│           vbNormalFocus)                                                   │
└──────────────────────────────────────┘
上記は、PDFファイルを無理やりメモ帳で開いた場合の例。
分類:ExcelVBA
ExcelVBA/別ファイルを開く(1)紐づくアプリで開く
2018年08月25日
ファイルがアプリケーションに紐づいているのであれば、
当該ファイルを以下のように、WSHから.Runしてあげればよい
┌──────────────────────────────────────┐
│Dim objWSH As Object                                                        │
│Set objWSH = CreateObject("Wscript.Shell")                                  │
│objWSH.Run Chr(34) & "C:\説明書.pdf" & Chr(34)                              │
└──────────────────────────────────────┘
パスはスペースが混じるといけないので、Chr(34)で囲っておいた方がよい。

ちなみにシェルから.ShellExecuteでも同様のことができる。
┌──────────────────────────────────────┐
│Dim objShell As Object                                                      │
│Set objShell = CreateObject("Shell.Application")                            │
│objShell.ShellExecute Chr(34) & "C:\説明書.pdf" & Chr(34)                   │
└──────────────────────────────────────┘

また、順番に複数のファイルを開くようにするには、第三引数に「True」を設定する。
これで、一つ目のファイルを閉じた時に二つ目のファイルが開くようにできる。
┌──────────────────────────────────────┐
│Dim objWSH As Object                                                        │
│Set objWSH = CreateObject("Wscript.Shell")                                  │
│objWSH.Run Chr(34) & "C:\説明書1.pdf" & Chr(34), 0, True                    │
│objWSH.Run Chr(34) & "C:\説明書2.pdf" & Chr(34)                             │
└──────────────────────────────────────┘
この指定がない場合には、最初の瞬間に両方のファイルがほぼ同時に開くことになる。
分類:ExcelVBA
削除したiPhoneメールの復活
2018年08月24日
iPhoneのメーラにて、ゴミ箱アイコンをクリックしてしまいメールを削除した場合
ちょっと非表示がわかりにくいので大いに焦る。

ゴミ箱内における当該メールの本文は以下のように表示されたりするのである。
┌──────────────────────────────────────┐
│フォーマットの方法に問題があるため、このメッセージは表示できません。        │
│別のフォーマットまたはメールプログラムを使ってメッセージを再送信するように  │
│送信者へ依頼してください。                                                  │
│                                                                            │
│text/plain                                                                  │
├──────────────────────────────────────┤
│このメッセージには本文がありません。                                        │
└──────────────────────────────────────┘

しかし、焦ることはない。ただ普通にゴミ箱に転送されたのと同じ状態なのだ。

ということで、復活する方法。

(1) ゴミ箱(の最初の画面)のメール一覧にて、右上の「編集」をクリック
(2) メール選択モードになるので、当該メールを選択(チェックを入れる)
(3) フッタメニューより「移動」をクリック
(4) 移動先として「受信」フォルダを選択

すると「受信」フォルダに本文は元のまま復活しているので
後は移動するなり、なんなりすればOK。
分類:iPhone
Office拡張子
2018年08月23日
┌───────────────────────┬────┬────┬────┐
│                 Officeの種類                 │旧式(*1)│マクロ無│マクロ有│
└───────────────────────┴────┴────┴────┘
┌───────────────────────┬────┬────┬────┐
│Word                                          │.doc    │.docx   │.docm   │
├───────────────────────┼────┼────┼────┤
│Wordのテンプレート形式                        │.dot    │.dotx   │.dotm   │
└───────────────────────┴────┴────┴────┘
┌───────────────────────┬────┬────┬────┐
│Excel                                         │.xls    │.xlsx   │.xlsm   │
├───────────────────────┼────┼────┼────┤
│Excelのテンプレート形式                       │.xlt    │.xltx   │.xltm   │
├───────────────────────┼────┼────┼────┤
│Excelのアドイン形式                           │.xla    │   -   │.xlam   │
└───────────────────────┴────┴────┴────┘
┌───────────────────────┬────┬────┬────┐
│PowerPointのプレゼンテーション形式            │.ppt    │.pptx   │.pptm   │
├───────────────────────┼────┼────┼────┤
│PowerPointのスライドショー形式                │.pps    │.ppsx   │.ppsm   │
├───────────────────────┼────┼────┼────┤
│PowerPointのテンプレート形式                  │.pot    │.potx   │.potm   │
├───────────────────────┼────┼────┼────┤
│PowerPointのアドイン形式                      │.ppa    │   -   │.ppam   │
└───────────────────────┴────┴────┴────┘
  *1:Office97からOffice2003までの形式(拡張子ではマクロ有無が判別できない)
分類:Windows
パワーポイント/最初からスライドショー
2018年08月22日
パワポファイルを開いた直後からスライドショー表示にして
その舞台裏を見せなくする方法。

やり方は簡単で「.pps」系拡張子で保存すればよい

「.pps」系拡張子は以下の通り。
┌───┬─────────┬────────────────────────┐
│.pps  │旧方式            │Excelにおける「.xls」にあたるもの               │
├───┼─────────┼────────────────────────┤
│.ppsx │新方式でマクロなし│Excelにおける「.xlsx」にあたるもの              │
├───┼─────────┼────────────────────────┤
│.ppsm │新方式でマクロあり│Excelにおける「.xlsm」にあたるもの              │
└───┴─────────┴────────────────────────┘

なお、この拡張子にしてしまうと舞台裏が見えなくできる代わりに
舞台裏が見れなくなる(要は編集できなくなる)。

編集したい場合には、空のパワポを起動し、そちらからファイルを開く形にすればよい。
分類:PowerPoint
ExcelVBA/テキストボックスの入力
2018年08月18日
【ActiveXコントロールのテキストボックスを入力不可にする方法】

  ■「.Enabled = Flase」にする
    →但し、文字色が淡くなる(濃くはできない)

  ■Textbox_Change()イベントで入力直後に元の値に戻す
    →但し、元の値がわかってなければならない
      (TextBox_GotFocus()イベントで取得しておくとか)
      また、イベントを再度起動してしまい無限ループに陥らないよう注意が必要

  □当該テキストボックスの保護ロックの状態にして(*1)
    シートを保護する(*2)
    但し、これは入力を不可とするものではなく
    デザインモード時にテキストボックスの位置やサイズを変更できなくするものの模様
    →つまり入力不可としては使えない

    *1:デザインモードで、右クリックメニュー「コントロールの書式設定」より
        「保護」タブの「■ロック」にチェックを入れる
    *2:シートの右クリックメニューから「シートの保護」を選ぶか
        リボンメニュー「ホーム」タブの「書式」から「シートの保護」を選ぶ

  □「.Locked = True」にする
    →これは前述の「■ロック」にチェックを入れたのと同等なので
      入力不可としては使えない

    なお、フォーム上のテキストボックスの場合は入力不可として使える模様
分類:ExcelVBA
ExcelVBA/ActiveXコントロール無限ループ
2018年08月17日
以下だと無限ループしてしまう。
┌──────────────────────────────────────┐
│Private Sub TextBox_Change()                                                │
│    Me.TextBox.Value = Rnd()                                                │
│End Sub                                                                     │
└──────────────────────────────────────┘

以下は、Excelシート向けのイベント抑止なので効かない。
┌──────────────────────────────────────┐
│Private Sub TextBox_Change()                                                │
│    Application.EnableEvents = False                                        │
│    Me.TextBox.Value = Rnd()                                                │
│    Application.EnableEvents = True                                         │
│End Sub                                                                     │
└──────────────────────────────────────┘

回避方法としては地道にフラグ制御しかないようだ。
┌──────────────────────────────────────┐
│Private mIs無限ループ回避 As Boolean  ' 初期値はFalseになる                 │
│Private Sub TextBox_Change()                                                │
│    If mIs無限ループ回避 Then                                               │
│        mIs無限ループ回避 = False     ' 次回に向けて再初期化                │
│    Else                                                                    │
│        mIs無限ループ回避 = True      ' 代入処理より前に置くこと            │
│        Me.TextBox.Value = Rnd()                                            │
│    End If                                                                  │
│End Sub                                                                     │
└──────────────────────────────────────┘
なお、「mIs無限ループ回避 = True」の位置は、
「Me.TextBox.Value = Rnd()」の前になければ効かないので注意。
分類:ExcelVBA
ライセンス/MAKとKMSの違い
2018年08月16日
マイクロソフトのライセンス、MAKとKMSの違いについて。

【MAK(マルチプルアクティベーションキー)】
  インターネットを経由して各PCが直接マイクロソフトに認証を行う方式。
  認証回数に上限がある。

【KMS(キーマネジメントサービスキー)】
  認証用PC(KMSホスト)にライセンスを設定(KMSをインストール)し
  ネットワーク上の他のPCはそれを介して認証を行う方式。
  有効期限がある。

かつてはMAKが標準だったが(それしかなかったが)、WindowsVista以降、
KMSが標準となっているので、MAKとする場合には手続きが必要。
分類:Windows
ExcelVBA/テキストボックスの数式は255文字制限
2018年08月15日
テキストボックスの数式欄にセル参照を指定すると
そのセルの内容をテキストボックス内に表示できるが
最大255文字までという制限がある。(末尾が途切れてしまう)

代案は以下の通り

○「ActiveXコントロールのテキストボックス」のLinkedCellにセル参照を設定
  △稀に印刷時にExcel例外が発生する場合がある
    →但し、LinkedCellに一旦別のセル参照を設定してみると回避できた

×「テキストボックス」の数式欄にセル参照を設定
  ×255文字までしか表示できない

×「画像」の数式欄にセル参照を設定
  ×元セルの表示領域しか表示できない
    画像扱いなので領域を拡大すると文字サイズが大きくなる

×「フォームコントロールのラベル」の数式欄にセル参照を設定
  ×255文字しか表示できない
  ×フォントの指定ができない
  ×罫線の指定ができない

×「ActiveXコントロールのラベル」
  ×セル参照を設定できない
分類:ExcelVBA
Excel/ActiveXコントロールのテキストボックス
2018年08月14日
ActiveXコントロールのテキストボックスを
一般的なテキストボックスのようににする設定。

いかにも入力欄のような凹凸をなくし(SpecialEffect)、
逆に枠線を引く(BorderStyle)。
┌───────┬────────────┬────────────┐
│              │         既定値         │         設定値         │
├───────┼────────────┼────────────┤
│SpecialEffect │2-fmSpecialEffectSunken │0-fmSpecialEffectFlat   │
├───────┼────────────┼────────────┤
│BorderStyle   │0-fmBorderStyleNone     │1-fmBorderStyleSingle   │
├───────┼────────────┼────────────┤
│MultiLine     │False                   │True                    │
└───────┴────────────┴────────────┘

入力不可にもできるが(Enabled)、文字色が灰色がかるのが難点。
┌───────┬────────────┬────────────┐
│              │         既定値         │         設定値         │
├───────┼────────────┼────────────┤
│Enabled       │True                    │False                   │
└───────┴────────────┴────────────┘
分類:ExcelVBA
前へ 1 … 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 … 156 次へ