未だに、エクセルでVBAを使いこなしているおじさんのお話と思ってください。
最近では、RPAとかノーコードアプリの導入が、もてはやされる時代なのです。
職場も、アップルの”i-Pad”に、”i-reporter”をインストールして使われている。
プログラムの組み方自体は、シート上のセル関数を利用していてマクロはダメ。
それで、操作できる人に、IF関数の中にIF関数の入れ子が可能か聞いていみた。
やったことがないから分からないという、腑抜けた回答で使い方は底辺らしい。
まあ、社内の手製はそんなものかと思う一方、VBAが劣っているとも思えない。
要するに、VBAコードが書ける人間が社内にいないから、毛嫌いされるだけか。
そんな風に思いますが、実はVBAってWindowsのDLLファイルを使えるのです。
このファイルは、OSのプログラムファイルの一つで、必須の要素になっている。
様々に利用される汎用性の高い機能を収録した、部品化されたプログラムだな。
ファイル拡張子が「.dll」なのでDLLファイルと呼びますが、VBAでも使うのだ。
ということは、VBAをオワコンというのなら、Windowsもオワコンなのだろう。
個人的には、クロームOSは、操作性でスマホやタブレットでしか見ていないの。
まあ、この先もWindows11を使い続けるつもりですが、この参照設定が秀逸だ。
特に、データベース言語のSQLを引用して、抽出検索することが高速できます。
これが、ADOを活用したcsvファイルの高速読み込みですが、業務でも使用中。
以前の投稿では、項目名のヘッダーが無くても自動割り振りが可能と紹介した。
これに、抽出したい項目だけを選び、その項目から検索までできてしまう分け。
というわけで、そういった使いやすいテクニックを、あえて紹介しておきます。
サンプルコードをあげておきますので、使い道のメリットはあるはずでして、VBAはオワコンだと言う人間は、ウインドウズまで否定しているので、クロームのOSで仕事をしておればよい、と思ってしまうのでした。
※サンプルコード
Private Sub ReadCsv() 'ADODBでヘッダータイトル無しから列指定の読み込み
Dim objCn As New ADODB.Connection, objRS As ADODB.Recordset
Dim i As Long, strSQL As String, strFle As String
With objCn 'CSVへのコネクション初期設定
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Properties("Extended Properties") = "Text;HDR=NO;FMT=Delimited"
'HDR=NO → 列タイトルがないと、FでIDが振られる
.Open ThisWorkbook.Path ' 'このブックパス指定。別は””でフルパス指定
End With
strSQL = "" 'SQL文作成
strSQL = strSQL & " SELECT F4, F14, F17, F28"
'列タイトル無し。抽出に必要なF番号のIDを列挙
strSQL = strSQL & " FROM ["
strSQL = strSQL & ”ここに”csvファイル名"
strSQL = strSQL & "] "
strSQL = strSQL & "WHERE F14 LIKE '%樹脂製計量カップ%'
'= '樹脂製計量カップ' でも同じ
strSQL = strSQL & ""
Set objRS = New ADODB.Recordset 'SQLを実行しレコードセット取得
Set objRS = objCn.Execute(strSQL)
With ThisWorkbook.Worksheets(1)
.UsedRange.ClearContents
For i = 0 To objRS.Fields.Count - 1 '1行目に見出しの出力
.Cells(1, i + 1) = objRS.Fields(i).Name
Next
.Range("A2").CopyFromRecordset objRS 'レコードセット一括出力
End With
objCn.Close
Set objRS = Nothing
Set objCn = Nothing
End Sub
0 件のコメント:
コメントを投稿