WebPenguin のすべての投稿

AIコラボ 公開楽曲リスト1

勇気の花 - バラード

夜明けのリズム - ボサノバ風

余裕綽々 - ポップ 歌詞の笑う猫は、チェシャー猫をイメージ

ひとりぼっちのバースデイ – ポップ 不憫・・・

夢のかけら - ロック 疾走感

午後のカフェ - おしゃれポップ

白いペイントライン – スロージャズ風(自身の声をサンプル)

孤独の翼 – バラード(自身の声をサンプル)

サンバーストメモリー – ロック(自身の声をサンプル)

あの頃のように - ポップロック

君の影を探して - ポップロック

Eternal Call - エレクトリックロック

True Voice - エレクトリックロック

圧縮ファイルZIP形式でダウンロード(約54M)

Windows11のメモ帳

VBAでテキストファイルを作成して、データを記入するようなコードを作った時に、このデータを処理する時にエラーが発生した

原因は、Windows11のメモ帳がUTF-8がデフォルトに変わった為で、ANSIで処理する際に不具合が起きた

起動オプションを付けることで解決

shellPath = “notepad.exe /a ”
Shell shellPath, vbNormalFocus

個人マクロ

Personal.xlsb をブック非表示で下記へ格納すると個人マクロが使える
C:\Users\%username%\AppData\Roaming\Microsoft\Excel\XLSTART
通常使うブックはマクロ無効でも、通常の拡張子でもALT+F8で個人マクロを利用できるので、便利

注意点は、生成AIでVBAを作成すると、個人マクロでの利用を指示しておかないと、
ThisWorkbook.Activate
のコードが記述される
これは、マクロ実行中のブックをアクティブにする
これがあると、処理対象が個人マクロのブックになるので、注意

Excel 共有フォルダのハイパーリンク

Excelでネットワークパスフォルダのハイパーリンクを作るといつの間にか、相対パス(¥..¥..など)に変換されて、ファイルの場所を変えると開かなくなる

Excelの内部リンク管理が相対パス仕様の為
ファイルのプロパティでハイパーリンクの基点とする設定をすると良いがファイル毎に設定が必要となるのと、他で相対パスの方がよい場合もあるので注意が必要

対処として、ハイパーリンクを関数で設定することが考えられる
VBAでの通常のリンクコード 相対パスに変換されることがある
ActiveCell.Hyperlinks.Add Anchor:=ActiveCell, Address:=folderPath, TextToDisplay:=linkText

数式でのコード 数式のパラメータとして絶対パスを設定するので変換されない
ActiveCell.Formula = “=HYPERLINK(“”” & folderPath & “””,””” & linkText & “””)”

具体例
Option Explicit
Sub フォルダリンク設定()
Dim WshShell As Object
Dim FSO As Object
Dim FILEPATH As String
Dim PathDrive As String
Dim SelectedFile As String
Dim folderPath As String
Dim linkText As String

Set WshShell = CreateObject(“WScript.Shell”) ‘ファイル操作を行う為のオブジェクト

‘ A1セルから初期フォルダパスを取得
On Error Resume Next
FILEPATH = Workbooks(“Personal.xlsb”).Worksheets(“Sheet1”).Range(“A1”).Value
On Error GoTo 0

If FILEPATH <> “” Then ‘記述されている時は存在チェック
Set FSO = CreateObject(“Scripting.FileSystemObject”)
If Not (FSO.FolderExists(FILEPATH)) Then
MsgBox “指定しているフォルダにアクセスできませんでした” & vbCrLf & vbCrLf & “ツールがあるフォルダを設定します”
FILEPATH = ActiveWorkbook.Path
End If
Set FSO = Nothing
Else
FILEPATH = ActiveWorkbook.Path ‘指定ないときはエクセルブックのフォルダ
End If

If Left(FILEPATH, 2) = “\\” Then ‘ネットワークのとき
WshShell.CurrentDirectory = FILEPATH ‘指定のネットワークフォルダをセット
Else
On Error Resume Next
PathDrive = Left(FILEPATH, 2) ‘chdirコマンドはドライブ指定があるとエラーなので、ドライブと分離
ChDrive PathDrive ‘ローカル時は、カレントドライブを変更
If FILEPATH <> “” Then ‘ルートディレクトリでフォルダ指定がないときには chdirコマンドがエラーとなるから処理をスキップ
ChDir FILEPATH
End If
On Error GoTo 0
End If

‘ファイル選択
SelectedFile = Application.GetOpenFilename(“All Files,*.*”, , “サンプルとなるファイルを選択してください”, , False)

‘キャンセルされた場合
If SelectedFile = “False” Then
MsgBox “ファイルの選択がキャンセルされました。”, vbInformation
Exit Sub
End If

‘フォルダパスを抽出
folderPath = Left(SelectedFile, InStrRev(SelectedFile, “\”) – 1)

‘ 表示するテキスト
linkText = “格納フォルダ”

‘選択したセルにハイパーリンクを設定

On Error Resume Next
ActiveCell.Formula = “=HYPERLINK(“”” & folderPath & “””,””” & linkText & “””)”
On Error GoTo 0

Set WshShell = Nothing

‘MsgBox “ハイパーリンクが作成されました: ” & folderPath, vbInformation

End Sub

Option Explicit
Sub 初期参照フォルダ値設定()

‘ 入力ダイアログを表示し、ユーザーに入力を求める
Dim userInput As Variant
userInput = InputBox(“初期参照フォルダを入力してください”)

‘ キャンセルがクリックされた場合は処理を終了
If userInput = “” Then Exit Sub

Workbooks(“Personal.xlsb”).Worksheets(“Sheet1”).Range(“A1”).Value = userInput

Application.DisplayAlerts = False
Workbooks(“Personal.xlsb”).Save ‘ブック名を指定した上書き保存
Application.DisplayAlerts = True

MsgBox userInput & ” を初期参照フォルダに指定しました”

End Sub

エクセルのVBAでフォルダとファイルの存在チェックと、コマンドの実行

フォルダの存在
Dim FSO As Object
Dim FILEPATH As String
FILEPATH = “C:\Program Files\7-Zip”
Set FSO = CreateObject(“Scripting.FileSystemObject”)
If FSO.FolderExists(FILEPATH) Then
MSGBOX ”OK”
Else
MSGBOX ”NG”
End If
Set FSO = Nothing

ファイルの存在
Dim FSO As Object
Dim FILEPATH As String
FILEPATH = “C:\Program Files\7-Zip\7z.exe”
Set FSO = CreateObject(“Scripting.FileSystemObject”)
If FSO.FileExists(FILEPATH) Then
MSGBOX ”OK”
Else
MSGBOX ”NG”
End If
Set FSO = Nothing

FileExistsでは、半角の空白を含む”C:\Program Files\7-Zip\7z.exe”でチェック

Dim WshShell As Object
Set WshShell = CreateObject(“WScript.Shell”)

s7zPath = “””C:\Program Files\7-Zip\7z.exe”””
strFileName = “解凍するファイル名”
cmdtxt = s7zPath & ” x ” & strFileName & ” -otmp -aoa”
‘-aoa:既存ファイルをすべて上書きします。-oに続けて解凍先フォルダを指定 フルパスでない時は相対となる
Call WshShell.Run(cmdtxt)

cmdtxtに組み込む7z.exeのパスは、”””で”括りを指定しないとProgram Filesに含まれる空白の為、エラーとなるが、FileExistsで同様に記述すると”を含んで判別するので、存在しないと判定されるので注意

Fire TVやSwitch Bot ハブでインターネット接続不良

FireTVで、TVer、NHK+が繋がりにくい、SwitchBotハブでインターネット未接続になることが多い
スマホのLineも不調
パソコンのブラウザでは特に異常はない

無線親機のチャンネルなど設定も変更して、試すも改善しない

ホームゲートウェイ PR-500KIの設定も変更してみるが、改善しない
フィルタリング設定やIPアドレス固定、DNS変更、IPv6切断(IPv6が接続になっている?)

結局、HGWでPPPoEブリッジを有効にしてPPPoE接続を解除、無線親機をブリッジモードからルータ機能に変更してPPPoE接続(IPv6ブリッジ有効-デフォルト)で、改善

HGWの設定をどうすれば改善できたかは不明だが、I/Oデータ製の無線ルータでの接続で解決

VBSでDOSコマンド実行

VBScriptでコマンドを実行するとウィンドウ非表示で実行できる

‘実行時のウィンドウサイズ
‘0 非表示
‘1 通常ウィンドウ
‘2 最小化
‘3 最大化

‘DOSのコマンドの実行が終了するのを待って次のコードを実行したい場合は、同期モード”True”


Option Explicit
Dim str,cmdstr
Dim objShell

str = “c:¥temp\ip.txt”
cmdstr = “cmd /c ipconfig /all > ” & str

Set objShell = CreateObject(“WScript.Shell”)

msgbox cmdstr ‘コマンド確認

objShell.Run cmdstr,0,false

セットアップは、USB フラッシュドライブに Windows をインストールすることはできません

セットアップは、USB フラッシュドライブに Windows をインストールすることはできませんの表示でインストールできない

何かのきっかけで通常の内蔵ディスク (ハードディスク、SSD) にインストールされている Windows が、Windows To Go で起動されている環境と誤認されているのが原因

Windows To Go 環境と誤認されている状態を回復するには、以下のレジストリ値を削除するか、データを 0 に設定します。

キー : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
名前 : PortableOperatingSystem

変更後に再起動

 

以下は、通常不要な操作だが、参考としてメモ
内蔵ディスクと重複している USB デバイスのディスク ID を削除するには、USB デバイスを接続した上で以下の手順を実行
※USB デバイスの内容が削除されるので、事前に必要に応じてバックアップして、復元する処理が必要

コマンドプロンプトを管理者で実行
diskpart
list disk
表示されたディスク一覧から、USB デバイスのディスクの番号を確認
select # (# は上で確認したディスクの番号) コマンドを実行してディスクを選択
clean コマンドを実行
exit コマンドを実行し、diskpart を終了

キーボードレイアウトの選択と表示されて起動できない

Windows起動時に、キーボードレイアウトの選択と表示されて、選択するとメンテンナンス画面になり、修復操作でしても、修復できませんでしたとなり、どうにもならなくなった

原因として考えられることは、起動用USB作成等で、いろいろ実験したためと思われる
クローンソフトなどでコピーした時も起こりうる

後で振り返ると、ブートマネージャーが書き換えられ、OSデバイスが見つからなくて、修復ツールのパーティションが起動していたので、OSのデバイス位置を修正してやればよかった

以下に、回復させて手順をメモしておく

1,ボードレイアウトの選択後、コマンドプロンプトを起動を選択

2,bootrec /scanos でOSのドライブを調べる

3,検出されたドライブ名がCになっていたらOKだが、違っていたら、以下のコマンドで戻す

Eドライブが検出されたとき、dir e: などで目的のドライブかを確認して、以下のコマンドで修正 /l はエル

bcdboot E:¥windows /l ja-jp /s c:

c:  ENTERでドライブ切替
c:>bootrec /rebuildbcd で再構築
※マルチブートで複数ある時は、ここではEなので、EをY選択して追加する

これで、起動可能に回復した

FastCopyとBatファイルのログ

FastCopyをバッチファイルで実行するときにログ指定をした時、文字化けで記録されることがある

BatファイルがShift-JISでFastCopyがUTF-8のためで、FastCopyの旧バージョンでは、ログの文字コード指定ができたが、最近のバージョンでは、できない

そこで、コマンドプロンプトの文字コードを変更する必要がある

chcp 65001を記述するとUTF-8の文字コードでコマンドプロンプトが動作する

chcp 65001

date /T >> “C:\bat\backup.log”
time /T >> “C:\bat\backup.log”
echo “バックアップを開始しました” >> “C:\bat\backup.log”

“C:\Program Files\FastCopy\FastCopy.exe” /cmd=sync /acl=FALSE /exclude=”$Recycle.Bin\;$WinREAgent\;System Volume Information\;” /auto_close /force_close /error_stop=FALSE /skip_empty_dir=FALSE /log /logfile=”C:\bat\backup.log” “E:\” /to=”H:\”

date /T >> “C:\bat\backup.log”
time /T >> “C:\bat\backup.log”

echo “**************** backupバックアップが完了しました *******************” >> “C:\bat\backup.log”