Excel x64の場合のエラー
このプロジェクトのコードは、64 ビット システムで使用するために更新する必要があります。Declare ステートメントの確認および更新を行い、次に Declare ステートメントに PtrSafe 属性を設定してください。
Officeのx64と x86でVBAマクロに非互換があるなんて知らなかった。
#If Win64 Then ' 64Bit 版 Private Declare PtrSafe Function GetPrivateProfileInt _ Lib "kernel32" Alias "GetPrivateProfileIntA" _ (ByVal lpApplicationName As String, _ ByVal lpKeyName As String, _ ByVal nDefault As Long, _ ByVal lpFileName As String) As Long #Else ' 32Bit 版 Private Declare Function GetPrivateProfileInt _ Lib "kernel32" Alias "GetPrivateProfileIntA" _ (ByVal lpApplicationName As String, _ ByVal lpKeyName As String, _ ByVal nDefault As Long, _ ByVal lpFileName As String) As Long #End If
※DeclareをDeclare PtrSafeにするだけ。
追記
サンプルが悪かった。
引数も非互換があった。
ポインタはLongからLongPtrに、ハンドルはLongからlonglongへ変更する必要あり。
docs.microsoft.com
www.saka-en.com
momo7w Windows 10 バージョン1903(May 2019 Update)
WindowsUpdateがずっと失敗してたので、調査したら1809に失敗してた。
内部ストレージを4Gちょっと空ける必要あるようで、SDカードだけではダメな模様。
ディスククリーンナップを行っても2.4Gくらい空きが足りなかったので、以下のことを実施。
- Windows10の最新版isoをダウンロード
Windows10のダウンロードページでツールをダウンロード。
ツールを実行してisoファイルをダウンロードして、SDメモリへ保存。
最新は1903だった。
- ハイバネーションを切る
powercfg /h off
- 仮想メモリを減らす
1.仮想メモリをCドライブからSDメモリのドライブへ移動【失敗】
仮想メモリの設定で、SDカードの方に仮想メモリを移したところ、
起動時にドライブが認識できてないらしく、結局Cドライブに作成されてしまった。
2.仮想メモリを止める【失敗】
仮想メモリの設定で「ページングファイルなし」を選択。
再起動後に動作が不安定になり、更新アシスタントが起動しなかった。
3.仮想メモリを小さくする【成功】
仮想メモリをカスタムにして、最少16、最大512にする。
- アップデート実行
isoイメージを仮想DVDとしてマウント。
ルートフォルダにある「setup.exe」を実行。
空き容量確認で弾かれなければOK。
3時間たってもアップデートが終わらないので放置して就寝。
朝にはアップデートが終わってた。
仮想メモリをシステム管理サイズに戻して、ハイバネーションをonにして終了。
特に問題は出てない。そろそろ寿命がくるかもしれないが。
・softether入れて、VPNサーバとして常時稼動中
・radikool入れて、ラジオ録音機として常時稼動中
複数のMS-WordのドキュメントをPDFへ変換する
結論としては、pdfにしてからまとめればいいことにする。
まとめるのはスクリプトじゃできないから、個々にpdf化するスクリプトに変更した。
PDFにするのに変更履歴とかコメントが不要だったので、それも潰した。
本当は結合までしたかったけど、VBScriptでのやり方が分からない。
iTextSharpとpowershell使えばできるんだが、、、COMじゃないとVBSから呼べないし。
結局、pdfをまとめるのは、CubePDF Pageを使った。
自動化したかったらPDFtkを使えばいいし。
Option Explicit ' 検索対象ファイル拡張子 Dim targetFileExp targetFileExp = Array("doc", "docx") Dim objFso Set objFso = CreateObject("Scripting.FileSystemObject") Dim objWord Set objWord = CreateObject("Word.Application") Dim objDoc Dim objView Dim strInFile Dim strOutFile ' 一応見せておく objWord.Visible = True ' カレントディレクトリのファイルリストから抽出する Dim exp Dim file For Each exp in targetFileExp For Each file In objFso.GetFolder("./").Files if UCase(objFso.GetExtensionName(file)) = UCase(exp) Then strInFile = file.path strOutFile = objFso.BuildPath( file.ParentFolder , objFso.GetBaseName(file.Name) & ".pdf" ) WScript.Echo "PDF変換:" & file.Name Set objDoc = objWord.Documents.Open(strInFile) If Err.Number = 0 Then ' 変更履歴マージ objDoc.Revisions.AcceptAll ' 変更履歴オフ Set objView = objWord.ActiveDocument.ActiveWindow.View objView.RevisionsView = 0 ' 0:wdRevisionsViewFinal objView.ShowRevisionsAndComments = False 'PDF形式で保存 objDoc.SaveAs2 strOutFile, 17 ' 17:PDF objDoc.Close Else WScript.Echo "エラー:" & Err.Description end if End If Next Next objWord.Quit set objFso = Nothing set objDoc = Nothing set objWord = Nothing MsgBox "終了"
複数のMS-Wordのドキュメントを1つにまとめる
たくさんあるMS-Wordのドキュメントを1つにまとめたくてスクリプト作ってみた。
でもいまいちだな。
セクション単位で追加してるけど、印刷設定は元のドキュメントを引き継いでくれないから、
常に先頭の印刷書式に依存してしまう。
全部同じなら使えそうなので、一応メモしておく。
(エラーとはか考えてない)
Option Explicit ' 検索対象ファイル拡張子 Dim targetFileExp targetFileExp = Array("doc", "docx") Dim objFso Set objFso = CreateObject("Scripting.FileSystemObject") Dim objWord Set objWord = CreateObject("Word.Application") Dim objNewDoc Dim strInFile Dim strOutFile dim objSelection ' 一応見せておく objWord.Visible = True ' カレントディレクトリのファイルリストから抽出する Dim exp Dim file For Each exp in targetFileExp For Each file In objFso.GetFolder("./").Files if UCase(objFso.GetExtensionName(file)) = UCase(exp) Then strInFile = file.path If strOutFile = "" Then ' 親フォルダ名を結合ファイル名に strOutFile = objFso.BuildPath( file.ParentFolder , objFso.GetFileName(file.Name) & "_ALL." & objFso.GetExtensionName(file) ) WScript.Echo "doc結合:" & strOutFile 'Set objNewDoc = objWord.Documents.Add ' 新規の場合はこっち Set objNewDoc = objWord.Documents.Open(strInFile) ' 先頭の書式に合わせる場合はこっち Set objSelection = objWord.Selection Else WScript.Echo " +:" & file.Name objSelection.InsertFile(strInFile) objSelection.InsertParagraphAfter objSelection.InsertBreak(2) ' 2:wdSectionBreakNextPage objSelection.Collapse(0) End if End If Next Next objSelection.WholeStory() objSelection.Fields.Update() objNewDoc.SaveAs2 strOutFile objNewDoc.Close objWord.Quit set objFso = Nothing set objNewDoc = Nothing set objWord = Nothing MsgBox "終了"
Wireshark 3.0
Npcap同梱でループバックのキャプチャが可能になってる。
forest.watch.impress.co.jp
※インストール時に「Support loopback trafic」オプションをインストールする必要がある。
SSPIを使ったSSL/TSLのソース
nPOPukSSPIj、nPOPukのクライアント証明書のサポートしたやつ。
ジオシティーズのせいで消滅しちゃうサイト。
消える前にソースのダウンロードした方がいいやつ。
SSPIってなんであんなに面倒なインタフェースなんだろうか。