拡大縮小→”alt+右ドラッグ上下”
移動→”alt+ホイール押し込みドラッグ”
ExcelVBAのフォームのテキストボックス/コンボボックスに右クリックメニューのコピペをつける
標準では右クリックメニューがでないので
わざわざ追加しないといけない。
===== フォームモジュール(MyUserForm) ===== Option Explicit 'クラスのインスタンス保持用 Private colText As Collection Private Sub UserForm_Initialize() Dim myCopy As cCopyPaste Dim myText As MSForms.Control Set colText = New Collection 'TextBoxとComboBoxに対して設定する For Each myText In Me.Controls If TypeOf myText Is MSForms.TextBox Then Set myCopy = New cCopyPaste Set myCopy.Text = myText colText.Add myCopy ElseIf TypeOf myText Is MSForms.ComboBox Then Set myCopy = New cCopyPaste Set myCopy.Comb = myText colText.Add myCopy End If Next End Sub Private Sub UserForm_Terminate() Dim i As Integer For i = 1 To colText.Count colText.Remove 1 Next Set colText = Nothing End Sub ===== 標準モジュール(Module1) ===== Option Explicit '「MyUserForm」は適宜変更 Sub ShowForm() MyUserForm.Show End Sub Public Function 切り取り() MyUserForm.ActiveControl.Cut End Function Public Function コピー() MyUserForm.ActiveControl.Copy End Function Public Function 貼り付け() MyUserForm.ActiveControl.Paste End Function ===== クラスモジュール(cCopyPaste) ===== Option Explicit 'コピー&ペースト用プロシージャのプロジェクト名とモジュール名。ここは適宜変更のこと。 Private Const Project As String = "myProject.Module1" Public WithEvents Text As MSForms.TextBox Public WithEvents Comb As MSForms.ComboBox 'ComboBoxがリスト表示している時はショートカットメニューを表示しないようにするため Private flgDrop As Boolean Private Sub Class_Terminate() Set Text = Nothing Set Comb = Nothing End Sub Private Sub Comb_DropButtonClick() 'リスト表示中はTrueとなる flgDrop = Not flgDrop End Sub Private Sub Comb_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If flgDrop Then Exit Sub 'リスト表示中は無効にする MouseUp Button, Comb End Sub Private Sub Text_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) MouseUp Button, Text End Sub Private Sub MouseUp(ByVal Button As Integer, Ctrl As MSForms.Control) If Button <> 2 Then Exit Sub Dim Cb As CommandBar Dim Btn As CommandBarButton Set Cb = Application.CommandBars.Add(Position:=msoBarPopup, Temporary:=True) Set Btn = Cb.Controls.Add(Type:=msoControlButton) With Btn .Caption = "切り取り" .OnAction = Project & ".切り取り" 'テキスト未選択時は無効にする If Ctrl.SelText = "" Then .Enabled = False End If End With Set Btn = Cb.Controls.Add(Type:=msoControlButton) With Btn .Caption = "コピー" .OnAction = Project & ".コピー" 'テキスト未選択時は無効にする If Ctrl.SelText = "" Then .Enabled = False End If End With Set Btn = Cb.Controls.Add(Type:=msoControlButton) With Btn .Caption = "貼り付け" .OnAction = Project & ".貼り付け" 'クリップボードに文字列が無い時は無効にする If Not Ctrl.CanPaste Then .Enabled = False End If End With Cb.ShowPopup Cb.Delete End Sub
VBAでJavaScriptのイベントを強制的に発火させる
With ie.Document.getElementById("mySelect") .Value = "1" .fireEvent ("onchange") End With
らしいけど何故かうまくいかなかった。
メモとして残しとく
ExcelVBAで時間差分
Dim startDate As Date Dim endDate As Date startDate = "2018/10/10 12:00:00" endDate = "2018/10/10 18:30:50" '差を表示 Debug.Print "時分秒の差分は、それぞれ以下のとおりです。" Debug.Print "--------------------------------------------" Debug.Print DateDiff("h", startDate, endDate) & "時間" Debug.Print DateDiff("n", startDate, endDate) & "分" Debug.Print DateDiff("s", startDate, endDate) & "秒" Debug.Print "--------------------------------------------"
Winmail.datという添付ファイルが届いたら
Winmail.dat(TNEF 形式)でメール送信してるとこうなるらしい。
https://www.winmaildat.com/でデータ解析できる。
送信してくる人にあんないするならこの方法で
support.hdeone.com
電子契約導入時に、契約文言、書式の変更例
① 契約書前文の文言変更例
書面契約書「甲と乙は、本契約成立の証として、本書2通を作成し、両者記名押印のうえ、各自1通を保有するものとする。」
↓
電子契約書「甲と乙は、本契約の成立を証として、本電子契約書ファイルを作成し、それぞれ電子署名を行う。なお、本契約においては、電子データである本電子契約書ファイルを原本とし、同ファイルを印刷した文書はその写しとする。(※)」
(※)なお書は、税務調査を印刷した書面で受ける場合、原本が電子データであることを明示するために記載
② 契約書前文の文言変更例
書面契約書「第○条(再委託) 乙は、甲による事前の書面による承諾がないかぎり、本件業務の全部または一部を第三者に再委託できない。」
↓
「乙は、甲による事前の書面または双方が合意した方法による電磁的措置による承諾がないかぎり、本件業務の全部または一部を第三者に再委託できない。」
無料のブロックチェーン技術を活用した電子契約サービス e-sign
契約する関係者のスマフォに認証用のアプリ(xID)入れて署名する仕組み。
料金は無料。
認証用のアプリ(xID)を広めて稼ぐ仕組みとのこと
https://help.xid.inc/a6f8035a735a4f7aa95af0aef8d770c4
アプリ(xID)入れるとマイナンバーカード登録する案内でますが、登録しないで使えます。
phpPgAdminでUpdateのSQLがエラーになる場合の対処方法
「結果のページ分割処理を行う」のチェックをオフにすればOK。
WebView2で「Microsoft Edge で、データ ディレクトリに対する読み取りと書き込みができません」と出る
Edgeのユーザーデータフォルダーにアクセスできないとき出る。
標準だとユーザーデータフォルダーは<ブログラム名>.exe.WebView2/EBWebView/
になる。
CoreWebView2Environment()の第2引数でフォルダ指定できるので、別のところにしてみよう
しかしExcelからDLL経由で呼び出すとこの指定が無視される。
環境変数WEBVIEW2_USER_DATA_FOLDERを指定してもダメ。
まいったな。
ネタ元
- https://stackoverflow.com/questions/62470733/set-cache-directory-for-webview2
- https://docs.microsoft.com/ja-jp/microsoft-edge/webview2/concepts/userdatafolder
- http://docwiki.embarcadero.com/Support/ja/WebView2_SDK%E3%81%8C%E5%B1%95%E9%96%8B%E3%81%99%E3%82%8B%E3%83%87%E3%83%BC%E3%82%BF%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%91%E3%82%B9%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%3F
MFCでやるなら
CreateCoreWebView2Environment()は厳禁。
CreateCoreWebView2EnvironmentWithOptionsでデータ ディレクトリ指定しないとNG
// データ ディレクトリはドキュメントに固定する CStringA strA; CStringW strW; char lpszPath[MAX_PATH] = ""; LPITEMIDLIST pidl; if (::SHGetSpecialFolderLocation(NULL, CSIDL_PERSONAL, &pidl) == NOERROR) { ::SHGetPathFromIDList(pidl, lpszPath); ::CoTaskMemFree(pidl); } strA = lpszPath; strW = strA; HRESULT hr = CreateCoreWebView2EnvironmentWithOptions(nullptr, strW.GetBuffer(0), nullptr, Callback<ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler>( this, &CWebBrowserEdge::OnCreateEnvironmentCompleted).Get()