komekichix’s diary

日々の仕事、生活でぶち当たった問題の解決策を書き残しています。あなたのお役に立てれば幸いです。

【Excel】Microsoft 365やoffice 2021のエクセルで型指定でCSVファイルをインポートする方法

Microsoft 365(ms365)、office 2021になってから、ウィザードでCSVファイルを取り込むときの型指定が無くなりました。

[データの取得]-[ファイルから]を選ぶと、「コレジャナイ感」満載の結果に…。

実は無くなったのではなく、エクセルの設定を変更することで以前同様に型指定が可能です。その方法を記しておきます。

目次

1.オプション変更のやり方

Excelのオプション画面から従来のデータインポートウィザードを有効にすることができます。

1.1.「Excelのオプション」画面

Excelの [ファイル]-[オプション] でExcelのオプション画面を開きます。

Excelのオプション画面を開く

[データ]を選択します。
「レガシ データ インポート ウィザードの表示」の [テキストから(レガシ)] チェックをONにします。
「OK」ボタンを押して設定完了です。

テキストから(レガシ)チェックをONにする

2. インポートのやり方

[データの取得]メニューに[従来のウィザード]項目が追加されています。ここからは以前の手順と同様に行なえます。

2.1.ファイル選択

[データ]-[データの取得]-[従来のウィザード]-[テキストから(レガシ)]を選択します。

[従来のウィザード]が選択可能になっている。

インポートするファイルを指定します。

ファイルを選択する
2.2.ウィザード実行

ウィザードの指示に従って進んでいきます。

  • CSVデータの場合は「コンマやタブなどの区切り文字によってフィールドごとに区切られたデータ」を選択して「次へ」。
  • 区切り文字はコンマを選択して「次へ」。
  • データのプレビューから各項目を選択して「文字列」を選択します。なお、プレビューはSHIFTキーを使うと全項目を一気に選択できます。
ウィザードを進めていく

データの取り込み先を指定します。

取り込み先指定は、そのままOKを押す。
2.3.取込完了

 指定したデータ形式での取込が完了します。

テキストデータの取込完了。


以上です。

【DaVinci Resolve】DaVinci Resolveの音をAfterShokz OpenMoveで聴こえるようにする方法

 それまで、PCと骨伝導ヘッドホンのShokz(AfterShokz) OpenMoveを接続して正常に聴こえていたのに、DaVinci Resolveを起動すると音が聴こえなくなりました。Davinci Resolveから聞こえないのと同時に、OS自体からも音が出なくなります。
この事象はOpenMoveに限らず、Bluetooth接続の機器全般で同様の事象となるようです。(所有のスピーカー Tribit XSound Goでも同じでした)
どうやら原因はDavinci ResolvがBluetooth接続デバイスをヘッドホンではなくヘッドセット(マイク付き)として扱いたがるからのようです。
 完全には解消しないのですが、以下の方法で聴こえるようにすることが可能です。(音質が悪いです。モノラルになります。)


1.再生デバイスを選択する。

 タスクバーのスピーカアイコンからヘッドセット(OpenMove by AfterShokz Hands-Free...)のほうを選択します。

ヘッドセット(OpenMove by AfterShokz Hands-Free...)を選択


2.DaVinci Resolveの設定

 (1) 環境設定を開く
  メニューから[DaVinci Resolve]-[環境設定]を選択します。

 (2) オーディオ入出力を表示する
  [ビデオ&オーディオ入出力]を選択します。

 (3) 出力デバイスを選択する
  [オーディオ入出力]の[出力デバイス]項目で、
 [自動スピーカーコンフィギュレーション]をチェックオフ。
 [ヘッドセット(OpenMove by AfterShokz Hands-Free AG Audio)]を選択します。

ヘッドセット(OpenMove by AfterShokz Hands-Free AG Audio)を選択

 (4) 出力先を選択する
  [モニタースピーカーコンフィギュレーション]の[出力]項目から[ヘッドセット(OpenMove by AfterShokz Hands-Free AG Audio)]を選択します。
 [フォーマット]がStereoの場合はLeftとRightの一方しか選択できませんが、結果はMonoと同じになります。
 【重要】選択肢に表示されない場合は、一度[保存]で画面を閉じ、再度開き直します。それでも表示されない場合は、DaVinci Resolveを起動し直します。

ヘッドセット(OpenMove by AfterShokz Hands-Free AG Audio)を選択する

 (5) 保存する
  以下の状態になっていることを確認して[保存]します。

保存する


以下のサイトにお世話になりました。ありがとうございます。
Bluetooth接続のヘッドフォンで音が出ない/音質が悪い/片方しか音が出ない時の原因と対策】
https://asteriscus.jp/davinci-resolve/2141/


以上です。

【Excel】エクセルVBAでCSVデータを開いたときに自動変換を回避する方法

1.データが勝手に日付型に変換される!

1-1,A,09011112222
1-2,B,08011112222
1-3,C,05011112222

このようなCSVファイルをエクセルで処理したいことがありますよね。CSVファイルを開くVBAコードはこんな感じ。

Sub main()
    Dim myFile As String, MyPath As String '変数宣言
    Dim wb As Workbook
    
    MyPath = ThisWorkbook.Path & "\" '自分のパスを取得
    myFile = "csvdata.csv" 'パス内のcsvファイル
    
    Set wb = Workbooks.Open(MyPath & "\" & myFile) '選択したファイルを開く
End Sub

実行すると、ご丁寧にも以下のように自動で日付に変換してくれます。前ゼロも取り除いてくれます。(0落ち、ゼロ落ち)

この仕様を、「ありがたい!」と考える人がこの世に何人存在するのだろうかという疑問はさておき、対処法を記しておきます。

2.対処法

ここを見ている人は紆余曲折を経てこのページにたどり着いているはずですので、結論だけ書きます。

VBAのOPENステートメントでは、CSVの各項目に対してデータ型指定が出来ないので使いません。代わりに「外部データの取り込みウィザード」をVBAから実行します。

まずは、「マクロの記録」機能を利用してウィザード実行用のVBAコードを生成します。

「マクロの記録」を開始してから以下の操作を実施します。
「データ」-「外部ファイルの取り込み:テキスト」でCSVファイルを選択し、文字列としてデータを取り込みします。

(なお、この操作が分かりづらい場合は【Excel】エクセルでマクロ記録する方法 - komekichix’s diaryも参考にしてください。)

各項目を文字列指定して取り込みする

なお、Microsoft365、Office 2021のエクセルではウィザードの起動方法が異なりますので、こちら
【Excel】Microsoft 365やoffice 2021のエクセルで型指定でCSVファイルをインポートする方法 - komekichix’s diary
を参考にしてください。


手動操作で「マクロの記録」を流用して作成したコードは以下のようになります。
なお、型指定(.TextFileColumnDataTypes = Array)はcsvファイルの項目数を超えてもエラーとならないので、必要十分なだけ項目定義しておけば汎用的に使えます。

Sub main()
    Dim myFile As String, MyPath As String '変数宣言
    Dim wb As Workbook
    
    MyPath = ThisWorkbook.path & "\" '自分のパスを取得
    myFile = "csvdata.csv" 'パス内のcsvファイル
    
    Set wb = Workbooks.Add ' ブックを作成
    Call opencsv(wb, MyPath, myFile)    '作成したブックに読み込み
    
End Sub

' CSVファイルをテキスト形式で読み込む(日時項目の自動変換対策)
Sub opencsv(wb, pathnm, filenm)
    With wb.ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;" & pathnm & filenm _
        , Destination:=Range("$A$1"))
        .Name = filenm
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 932
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array( _
            2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
            2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

実行した結果は以下のようになります。希望通りに読み込めました。

マクロで読み込んだ結果

新たなファイルに保存しても元のデータのままです。
めでたしめでたし。


以上です。

【Windows】OneDriveをネットワークドライブに割り当てる

はじめに

OneDriveのデータは、Windows上では
c:¥users¥<ユーザー名>¥OneDrive に割り当てられています。
プログラムからOneDrive上のデータを扱う際にここを直接操作しても良いのですが、事前にネットワークドライブ(X:, Y:など)としておいてからアクセスすることも可能です。多人数で利用するバッチ処理などでは便利かもしれません。

なお、Dockerではネットワークドライブをマウントすることができないようで、この方法ではうまくいきません。DockerでOneDriveを利用したい場合は、こちらの記事を参考にしてください。



目次


0.前準備

ネットワークドライブに登録する際に、OneDriveをブラウザで開いた際のURLに含まれるcidを使用します。事前にテキストエディタなどにコピペしておくとよいでしょう。

cidを確認する


1.コマンドプロンプトから割り当てる方法

net useコマンドを利用します。
net use x: https://d.docs.live.net/cidコード と入力します。

C:¥>net use x: https://d.docs.live.net/<cidコード>
'd.docs.live.net' のユーザー名を入力してください:
d.docs.live.net のパスワードを入力してください:
コマンドは正常に終了しました。
C:¥>

x:部には割り当てたいドライブを指定します。
初回のみOneDriveのアカウント情報を訊いてきますのでユーザ名、パスワードを入力します。

C:¥>X:

X:¥>cd test

X:¥test>dir
 ドライブ X のボリューム ラベルがありません。
 ボリューム シリアル番号は 0000-0000 です

 X:¥test のディレクトリ

2023/02/03  22:03    <DIR>          .
2023/02/03  22:03    <DIR>          ..
2023/02/03  22:02                 3 テキストファイル.txt
2023/02/03  22:01            10,863 ドキュメント1.docx
2023/02/03  22:02             8,464 ブック 1.xlsx
2023/02/03  22:02            30,665 プレゼンテーション 1.pptx
               4 個のファイル              49,995 バイト
               2 個のディレクトリ  31,809,466,368 バイトの空き領域

X:¥test>

X:ドライブからOneDriveのファイルにアクセス出来るようになりました。
ちなみに、空き領域31,809,466,368 バイトはおよそ32GBのこと。このOneDriveは無料版(5GB)を使用しているのですが、ドライブの最小単位としては32GBが割り当てられることが伺えます。


2.エクスプローラーから割り当てる方法

エクスプローラーのナビゲーションウィンドウからPCを右クリックして「ネットワークドライブの割り当て」を選択します。

「ネットワークドライブの割り当て」を選択する

割り当てドライブを選択(ここではX:)し、フォルダー項目に
https://d.docs.live.net/[cidコード]
を入力して完了ボタンを押します。

フォルダーにURLを入力

初回のみOneDriveのアカウント情報を訊いてきますのでユーザ名、パスワードを入力します。

OneDriveのアカウント情報を入力

X:ドライブからOneDriveのファイルにアクセス出来るようになりました。


以上です。

iPhoneのメモアプリをWindowsから使う方法

iPhoneのメモアプリは、iPadMacと情報共有出来てとても便利です。
PCからはMacのほか、Windowsからも利用できれば便利度が上がるのですが、残念ながらWindows用のメモアプリは存在しません。
WebからはiCloudが利用できるようになっていますのでこれを利用します。

ブラウザから以下のアドレスにアクセスします。
https://www.icloud.com/


AppleIDでログインします。


2ファクタ認証となっていますのでiPhoneに送られたコードを入力します。


[信頼する]を選ぶと次回から認証を省略できます。


iCloudにアクセス出来ました。表示されているアプリ全てがWindowsから利用できます。


メモの入力/更新も行えます。アプリと同じ感覚で操作できます。

以上です。

【Python】JupyterLabのフォントを変更する

JupyterLabの標準フォントだと全角文字、半角文字が判別できないです。特にスペースは絶望的です。
見やすいフォントに変更しましょう。
おすすめは'Ricty Diminished'です。
(標準ではインストールされていないフォントですので、こちらにアクセスし、「RictyDiminished-Regular.ttf」をダウンロード、インストールします。)

settingsからAdvanced Settings Editorを選択。
Notebookを選択し、Font Familyにフォント名「'RictyDiminished'」を入力します。
ついでにFont Sizeも変更しました。

フォントの変更


見やすくなりました。半角スペース、全角スペースもバッチリです。

(左)デフォルト、(右)フォント変更後


以上です。

【Docker】WindowsのDockerでOneDriveをマウントする方法

目次

はじめに

Docker上のOSからOneドライブに直接アクセスさせたい場合の設定方法です。
Windows上ではOneDriveのデータは、c:\users\<ユーザー名>\OneDrive に割り当てられていますので、そこをマウントさせればよいです。

一時的に割り当てる場合

一時的に割り当てたい場合は、Dockerの起動時に以下のように割り当てることが可能です。

docker run -v c:\users\<ユーザー名>\OneDrive:/root/onedrive_dir -it <Dockerのイメージ名> bash

とすると/root/onedrive_dir/ から利用可能になります。

恒久的に割り当てる場合

ずっと割り当てていたい場合は、Dockerの設定ファイル(docker-compose.yml)に以下のように設定します。

    volumes:
      - C:\users\pcuser\OneDrive:/root/onedrive_dir
結果
ローカルから見るOneDriveのファイル
Docker上のOSからも参照できました

補足:
ネットワークドライブに割り当ててマウントする方法はうまくいきませんでした。
【Windows】OneDriveをネットワークドライブに割り当てる - komekichix’s diary

以上です。