WebPenguin のすべての投稿

Microsoft Edgeが落ちる(クラッシュする)

Edgeプロファイルの初期化(ユーザーデータの削除)が効果があった

Windowsキー+R でファイル名指定して実行に
%localappdata%\Microsoft\Edge\
と入力

User Data フォルダの名前を「User Data Backup」などに変更して念のため、オリジナルを保存

User Dataフォルダがなくなることでプロファイルがリセットできる

再度、Edgeを起動

これが原因でない場合は、バックアップを元に戻して別の対処を検討

*****
拡張機能の無効化
・Edgeのプライベートウィンドウやゲストモードで起動し、拡張機能が原因で落ちていないか確認
システムファイルチェッカーの実行
・管理者としてコマンドプロンプトを開き、「sfc /scannow」コマンドを実行して、破損したシステムファイルをスキャン・修復
・ハードウェアアクセラレーションの無効化
Edgeの設定で「システム」に進み、「利用可能な場合はハードウェアアクセラレーションを使用する」をオフ

サウンド詳細

サウンド詳細設定を呼び出す
「Windowsキー + R」を押して「ファイル名を指定して実行」を開き、「mmsys.cpl」と入力後Enter

デスクトップショートカット
デスクトップで右クリック →「新規作成」→「ショートカット」→「項目の場所」に「mmsys.cpl」と入力して作成

音量ミキサーを開く:「Win + R」で「SndVol」と入力。

設定アプリのサウンドページ:「ms-settings:sound」や「ms-settings:sound-devices」をショートカット化

Outlookのワードラップ(自動折り返しの設定)

Outlookで、長い文字列のネットワークパスなどを送る場合に自動折り返しで途切れてリンクが機能しない時は、オプションで折り返し文字数を最大に変更するとよいのですが、手動設定できる最大が132文字なので、それより長いパスを使いたい時は、レジストリで修正します

“\\server001\————-\\”
Or
<"\\server001\-------------\\>

でサーバフォルダパスリンクを送信する場合
※Office365のバージョン例

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\MailSettings]
“PlainWrapLen”=dword:000001f4

VBSで設定
Set WshShell = WScript.CreateObject(“WScript.Shell”)

WshShell.RegWrite “HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Common\MailSettings\PlainWrapLen”,500,”REG_DWORD”

VBA等でのダブルクォーテーションの記述方法

ダブルクォーテーションで括ると文字列を表すが、VBAでダブルクォーテーション自体を記述するのはわかりにくい

ダブルクォーテーションのアスキーコードで記述するのと区別がつきやすい
ダブルクォーテーションは、Chr(34)

アスキーコードで記述しない場合は、””のように2つ続けると”を表す
これを、”で括って文字列として表現するには
”””” のように ”” を”で囲むので、4つ続けることになる
例 文字列内に ” を1つ含む
If Left(lineText, 1) = “””” Then は lineText の先頭が ” かどうかを判定

例 ”””Hello””” は、
“Hello”(ダブルクォーテーションで囲まれた文字列)を表す

アスキーコードを使うと以下のように記述できる VBSでも同様

If Left(lineText, 1) = Chr(34) Then

Chr(34) & “Hello” & Chr(34)

Splitの区切り文字を ”,” に指定したいときは
border = “””,”””
border = Chr(34) & “,” & Chr(34)

VBAでのCSV読み込み方法について

VBAでCSVファイルを読み込む方法には、主に「Line Input」と「クエリ(QueryTableまたはPower Query)」の2つがあります。Copilotでコードを生成する際、プロンプトで明確に指示しないと、どちらの方法が使われるかは自動的に決定されるため、意図しないコードが生成される可能性があります。

■Line Input方式
メリット:

シンプルなCSVファイルの読み込みに特化しており、VBA初心者でも比較的簡単に実装可能。
ファイルの内容を一行ずつ文字列として読み込むため、柔軟なデータ加工が可能。
Excelの標準機能のみで完結するため、外部ツールに依存しない。
デメリット:

大量データの処理には不向きで、処理速度が遅くなる可能性がある。
CSVの構造が複雑な場合、コードも複雑になりがち。
エラー処理やデータ変換のコードを自分で記述する必要がある。
文字コードや区切り文字が固定されている場合、柔軟な対応が難しい。
■クエリ方式(QueryTable / Power Query)
メリット:

大量データの高速処理が可能。
CSVの構造を自動認識し、区切り文字や文字コードも自動判別してくれる。
デメリット:

VBAに不慣れな場合、学習コストがやや高い。
Excelのバージョンによっては使用できない場合がある。
VBAとの連携がLine Input方式に比べて複雑になることがある。
■使い分けのポイント
シンプルなCSVファイルを読み込みたい場合や、VBA初心者で簡単な処理を行いたい場合は、Line Input方式が適しています。
大量データの高速処理や、複雑なデータ変換・加工が必要な場合は、クエリ方式(特にPower Query)が適しています。
Copilotでコードを生成する際には、エラー処理やデータ変換の指示を明確に記述できるため、Line Input方式の方がコードの構造がわかりやすくなる傾向があります。

一方で、クエリ方式はパラメータが複雑ですが、Copilotを活用することでその複雑さを吸収できるため、処理時間や目的に応じて両方の方法を試し、最適な方を採用するのが良いでしょう。

■補足
読み込みながらデータを比較・加工する場合は、Line Input方式の方が柔軟で扱いやすいことが多いです。

エクセルVBAでのCSV読み込み

データに半角のカンマが含まれる可能性がある場合は、データをダブルクォーテーションで囲んで、区切り文字としてカンマが使われる

プロンプトで指示する場合にダブルクォーテーションの指示文自体を””で囲んで文字列指示と認識してしまうことが多いので、下記のように、コード番号で指定すると正しい結果が得らやすい

Splitの区切り文字は、Chr(34) & “,” & Chr(34)
データは Chr(34)で囲まれて、カンマで区切られている
データ内に半角のカンマが含まれている可能性があるので、 Chr(34)で囲んでいる

例(現時点での応答結果で、今後は同じプロンプトでも正しい回答となっていくと思われる)

例 以下のプロンプトの応答結果は誤っていた

エクセルのVBAで、指定したパスにあるCSVファイルをシートへ取り込むコードを作成して
データは、””で囲まれています

結果は、コメントには記載されているものの、実際には下記のように通常のカンマを区切り文字に指定したコードが生成された

‘ ダブルクォーテーションで囲まれたデータを分割
values = Split(CleanCSVLine(lineText), “,”)

下記のように追加で、borderを指定する ”をアスキーコードで指定

split(CleanCSVLine(lineText), “,”)をborder = Chr(34) & “,” & Chr(34)で作成して

結果は、以下のようにレコードの最初と最後の”も正しく取り除く処理コードが生成された

‘ 区切り文字:「”,”」をChr関数で表現
border = Chr(34) & “,” & Chr(34)

‘ 最初と最後の ” を削除
If Left(lineText, 1) = “””” Then lineText = Mid(lineText, 2)
If Right(lineText, 1) = “””” Then lineText = Left(lineText, Len(lineText) – 1)

‘ “,” で分割
values = Split(lineText, border)

エクセルVBA 個人マクロでの注意点

個人マクロへVBAコードを格納して実行する時は、プロンプトに処理対象のブックを指定する


<条件>
VBAコードは、個人マクロから実行します
現在、作業しているアクティブなブックのシートを処理対象にしてください

ブックを明示しないと、ThisWorkBookのコードを生成する
※ThisWorkBookは
マクロがどのブックから実行されても、確実にマクロが含まれるブックを対象に操作する場合に使う
複数のブックを開いている場合に、間違えて別のブックに操作を行わないようにするために利用することが多い

個人マクロに登録したVBAで、ThisWorkBookを指定すると非表示にしているPersonal.xlsbブックが処理対象になってしまう

ThisWorkBook:マクロを実行しているワークブック
ActiveWorkBook:現在表示しているワークブック

例 ThisWorkbook
ThisWorkbook.Worksheets(“Sheet1”).Range(“A1”).Value = “Hello”

例 ActiveWorkbook
ActiveWorkbook.Sheets(“Sheet1”).Range(“A1″).Value = “Hello”

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
のコードが記述される
これは、マクロ実行中のブックをアクティブにする
これがあると、処理対象が個人マクロのブックになるので、注意