久しぶりに(ある程度)ちゃんとプログラムを書いてます。
書いたものを職場で見せようと思ってて、そうすると実行環境の構築の関係でVBAかなあということになり、でも手元にExcelはないのでLibreOfficeのCalcで書いておりました。
VBAというかマクロというかをほぼ書いたことがなく、ゆっくり調べながらやってたので3時間半かかってようやく「Excelの表から動的にデータを取ってきていい感じに配列に入れる」みたいなことができるようになったわけです。
これで下準備ができたなーってことで終わりにして、明日また続きをやろうと思いました。
なんだけど、プログラムを書きながら質問してたChatGPTのログを見てたら、配列を扱うのにOffsetとResizeというのが使えるらしいと。
Sub ExcludeHeader() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") ' 適切なシート名に変更してください Dim dataRange As Range Set dataRange = ws.UsedRange ' 見出し行を除外 Set dataRange = dataRange.Offset(1, 0).Resize(dataRange.Rows.Count - 1, dataRange.Columns.Count) ' 以下でdataRangeを使用 End Sub
へー、便利そうじゃん。さっきは見落としてたよ。
てなわけで再度PCを立ち上げ、さっきプログラムを書いたファイルを開いたのだけどプログラムが見つからない。
あれれ?
ツール→マクロ→マクロの管理→Basic
って選べば書いたやつが出てくるんじゃないの?
おーい、僕のModule1くーん!
その後、これまたChatGPTを使って聞いたところによると、なにやら.xlsxというファイル名だとマクロ(なのかVBAなのか)が保存されないんですって?保存されないのを警告してくれないの?(号泣)
でもって今度は.xlsmに拡張子を変えてみたけどやっぱりVBA(なのかマクロなのか)が保存されないんだよなあ。LibreOfficeでExcelの拡張子を指定してるから?
じゃあってんでLibreOfficeの標準の.odsで保存したらマクロ(めんどくさいんで以下マクロに統一)も保存されてた。
てことはこれからは.odsでやれば良いのかな?と思いつつ、.odsはExcelで読めるのかしら。
(調べ中)
一応読めるみたいね。
ファイル形式の変更: .ods ファイルをExcelで開き、.xlsm 形式で保存すると、マクロはそのファイル内に保存されます。
でもこれ本当なのかなあ。
とりあえずは、書いたマクロを別ファイルで保存しておけば良いんかなあ。
ChatGPTくんにいろいろ聞きながら進めてるけど、肝心なときに嘘ついてそうだなあ。
というか僕の3時間半なー。
まあ、しゃーない。
VBAをさぐりさぐりやってたから、そんなに大したプログラム書いたわけではないし、今日やった分くらいは記憶をたどれば大丈夫そう。
もちろんExcelを(Officeを?)買えばいいわけだけど、そんなもんに課金する気はない。
ああでもつらいな本当は。
Created by ChatGPT with the following prompts: ".xlsxで保存するとマクロが消えるのを知らなかったんで、3時間半かけて書いたVBAが消えてしまった。その悲しみをVBAで表現して。" and "もっといろいろな関数とかを使って。文章は最低限で良いので。".