/ 最近 .rdf 追記 編集 設定 本棚

脳log[20220324]



2022年03月24日 (木) Excel 日記(前回>20220314)。Microsoft Query なら Excel 2007 でも使えるし、TSV ファイルをインポートした結果の範囲データが含まれるシートをテーブルとして抽出することもできる。できたのだけど、更新に問題があった。■背景。TSV ファイルと接続していて更新ボタンを押すことで最新の内容がインポートされるシートがまずあって、同じブックの別のシートへ Microsoft Query を通してそのシートの内容をテーブルとして取り込もうとしている。回りくどいことに同じブックのシート(最新の TSV を反映する範囲データ)からシート(テーブルデータ)へデータを変換するために Microsoft Query を経由している。最近の Excel で使えるらしいリンクテーブルや[データの取得と変換]機能が使えないことと、TSV との接続を保ったまま範囲データをテーブル化できないことからとりあえずこうなっている。■Microsoft Query を使って同じブックの別のシートの範囲データをテーブルとして取得することはできた。しかし更新しようとするとブックの形式が無効だとかそんなエラーが出て更新ができない。そのブックってエラーを出しているあなた(Excel)が作成した(そして今開いている)ブックなんですよ。それともエラーを出しているのは Microsoft Query なのか。でも最初の取得はできたんだよ。Excel が Microsoft Query をうまく操縦できていないのではないか。排他制御とかが関係してるんか。■自動更新テーブルが利用できないなら Excel のバージョンを新しいものに限るのもやむなし。更新(行の拡張)にしろテーブルの結合(列の拡張)にしろ、手作業でちまちまやりたくねーもんな。どっちも機械にやらせたい。範囲データからピボットテーブルを作成したとして、後から追加されたレコードは範囲外になるからピボットテーブルを更新しても反映されないらしいのだ。テーブル化してあるとそういう落とし穴がないらしいので、自動更新もテーブル化も必須。■これなのかなあ。「ODBC接続設定画面のようなものが出ます。ここにExcel Filesというものがあるのですが、これは旧形式のxls形式しか使えないので、ここでは新規データソースを選び、OKを押します。 データソースの名前は適当に。対応するドライバーの選択では、Microsoft Excel Driverでxlsxやxlsmを使えるものを選択します。」 でも Excel Files を選んだあとのファイル選択ダイアログの拡張子フィルタは *.xls* になっていて、信じるなら *.xlsx は対象に含まれる。そして実際にテーブルを抽出できていた。でもまあ他の方法を試してもいいだろう。■TSV の元データは COBOL のデータベースから変換した SQLite3 データベースなので(2017031520170807)、TSV を経由しないで SQLite ODBC Driver を使うことも考えてる。でもあんまりたくさんのバイナリファイルに依存したくないお気持ち。■翌日@2022-03-25 その他のデータソースで *.xlsx に対応した Microsoft Excel Driver を選ぶことで抽出から更新まで普通にできたわね。こうなると欲が出てきて、*.csv に対応した Text Driver を使うことで TSV ファイルを直接テーブルとして取得したくなるんだけど、ファイルの場所としてローカルドライブとネットワークドライブしか選ばせてくれない。コンピュータ名を使いたい。管理ツールに「データ ソース (ODBC)」という項目を見つけたのだけど、何か使えるだろうか。■Microsoft Text Driver はたぶん「ANSI」と「Unicode」にしか対応していない。UTF-8 だとエラーメッセージを出して読んでくれない。今以て Excel 自身が UTF-8 な TSV/CSV ファイルを開けないことに驚かされるくらいなのでまあ(メモ帳にも劣るんだよなあ)。Word は差し込み印刷のためのソースとして TSV/CSV を選んだときにコードページ一覧から選ばせてくれるから UTF-8 でも大丈夫(えらい)。