2022年6月21日火曜日

accessでexcelを取り込む際に1行目(タイトル行)が破壊されてもインポートできるようにするまでの物語

 accessのテーブルにexcelを取り込むのに、1行目(タイトル行)が破壊されてもインポートできるようにするため、2行目からインポートする。
 すると、取り込み先のテーブルが新規テーブルであれば、自動的にテーブルのフィールド名がF1,F2,F3・・・・となる。
 取り込み先のテーブルが新規テーブルではなく、既存テーブルの場合、テーブルのフィールド名がF1,F2,F3・・・・となっていなけレバならない。
 そうでない場合には、F1フィールドがありませんというエラーメッセージでインポートが失敗する。
 そこで、既存テーブルがある場合には、いったん、削除しておくという奥の手を使うこともできる。

  Docmd.DeleteObject acTable,"table1"
 そして、フィールド名がF1,F2,F3・・・・のままでは、具合が悪い(使い勝手が悪い)ので、
 以下のvbaコードでフィールド名を自分の好きな名前に一括変更してみた。これで、うまく行くことを祈る。
 Sub FieldNameChange()
  Dim dbs As Database
  Set dbs = CurrentDb
  With dbs.TableDefs("table1")
    .Fields("F1").Name = "番号"
    .Fields("F2").Name = "名前"
    .Fields("F3").Name = "年齢"
    (繰返し)
    .Fields.Refresh
  End With
End Sub

2022年6月13日月曜日

vbaでのテキストフィルターのワイルドカードについての考察

 vbaの.autoFilterでテキストフィルタをかける場合、ワイルドカードの指定をすることが多々ある。後方一致としての○○*とするのは、問題ないが、前方一致の*○○が問題である。 *○○とは、○○が1文字目からとなっているものが抽出できないようだ。2文字目から〇〇となっているものならば、抽出できる。つまり、1文字目に何かの文字がないと、検出できない。仕様通りといえば、そうかもだが・・・

2022年6月11日土曜日

Visual Studio Codeでテキスト文書をわざわざマークダウン(markdown)記法で書く理由

 Visual Studio Codeでテキスト文書をマークダウン(markdown)記法で書いて、プラグインでpdfとして表示(ただし、visual studio codeにmarkdownと認識させるため、ファイル拡張子を.mdにする必要がある)してみた。
 ところが、字下げ(インデント)ができないことが判明した。それは、日本語の仕様書として、具合が悪いと思った。
 でも、 で半角空白になることがわかり、プラグインモジュールでPDF出力しても有効だったのだ。
 何故、pdfにするのに、わざわざテキスト文書をmarkdown記法で書くのか?wordかexcelで文書を作り、PDFにすれば良いのでは?と思われる方も多いことだろう。
 その理由は、テキスト文書をmarkdown記法で書くだけで、字を大きくしたり、太くしたりといった編集作業をせずに、マークダウン記法による簡単なルールで、そこそこのワンパターンだが、それなりのPDFが出来てしまうからだ。一応、仕様書としての体裁を整えるに実に都合が良いのである。しかも、テキスト文書を作りながら、プレビューで出来栄えを確認できるので、これまた、都合がよろしいのだ。

2022年6月7日火曜日

vbaでpdf出力したら、保存できませんでしたと怒られたのは、指定したフォルダ名が間違えていたためと気がつくまでの物語

 vbaでpdf出力したら、保存できませんでしたと怒られた.
その原因は、pdf出力先のフォルダを作成していなかったため(正確に言えば、フォルダ名を間違えていたため)だが、「ファイルが保存できませんでした」という不親切なメッセージでは気がつくのに物凄く時間がかかったのだった。
でも一番悪いのは、自分。もっと足元を見ろということですね。間違えているのは、自分だよってことだね。

Dim file1 as string
Dim filePath as string
' C:¥Users¥user1¥documents¥pdf¥output
filePath = Thisworkbook.Worksheets("menu").Range("B5").Value  
file1 = filePath & test.pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=file1