#author("2024-12-14T11:32:20+09:00","default:irrp","irrp") #author("2025-01-07T16:03:59+09:00","default:irrp","irrp") →Office関連メモ →Excel関連 →C#によるExcel制御 →Visual Basic(.NET以前) #contents * サブトピック [#zd8f2c00] -ExcelのVBAで図形/シェイプの処理 -ExcelVBAによるファイル処理 -ExcelVBAサンプル集 *一般 [#bbc20b28] -[[参照設定とCreateObjectの対応リスト>http://www.thom.jp/vbainfo/refsetting.html]] 2014 -[[VBAマクロからPythonを実行する(xlwings)>https://python-work.com/xlwings-runpython/]] 2024.12 -vbaでEnum値の名前が適切ではありませんというエラーになる原因 --Select Case 側で <Enum名>.値という書き方で参照しないと、複数のEnum に同じ名前の値があったときにどちらかわからなくなってしまいエラーになる。Private を付けてみると解決することもある。 2024.11 -[[個人マクロブック等に保存して利用するVBAの汎用コード7選 #Excel - Qiita>https://qiita.com/nanaco0424/items/709b58f422860bbbef30]] 2024.10 1. セル参照のA1形式・R1C1形式の表示を切り替えるマクロ 2. すべてのシートをA1セル選択状態にするマクロ 3. データ整形する 4. 赤枠背景透明図形の挿入 5. 選択画像の外枠線切替 6. アクティブブックの非表示のシートを再表示/非表示に戻す 7. アクティブブックのすべてのシートの保護を一括で解除する -[[「VBAでInteger型は使わない」って、知ってた!? #初心者 - Qiita>https://qiita.com/redwings_a/items/1d937bcaceda2841b7b5]] 2024.6 -[[VBAでUTF-8のCSVを読み込む方法|分析屋>https://note.com/bunsekiya_tech/n/n69d8cfb1ddbc]] 2024.6 --QueryTables.add -[[【ExcelVBA】マクロでのみ編集可能なシート保護を設定する - 和風スパゲティのレシピ>https://www.limecode.jp/entry/utility/protect-userinterfaceonly#Protect%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%AE%E5%BC%95%E6%95%B0UserInterfaceOnly%E3%82%92%E4%BD%BF%E3%81%86]] 2022 -[[エクセルマクロのお作法(計算用シートという諸悪の根源について)>https://anond.hatelabo.jp/20240302043100]] 2024.3 -[[【Excelのタイパな話】初心者がExcelでVBAの代わりにOffice Scriptを使ってほしい理由 Day.15|SHIFT Group 技術ブログ>https://note.com/shift_tech/n/na68547d5a512]] 2023.12 -[[VBAからSQL Serverに接続する方法(Microsoft OLE DB Provider for SQL Server) | Skill Note>https://skill-note.net/vba-sqlserver-connect/]] 2023.4 -[[XML 要素を XML マップのセルに対応付ける - Microsoft サポート>https://support.microsoft.com/ja-jp/office/xml-%E8%A6%81%E7%B4%A0%E3%82%92-xml-%E3%83%9E%E3%83%83%E3%83%97%E3%81%AE%E3%82%BB%E3%83%AB%E3%81%AB%E5%AF%BE%E5%BF%9C%E4%BB%98%E3%81%91%E3%82%8B-ddb23edf-f5c5-4fbf-b736-b3bf977a0c53#__create_an_xml]] 2023.2 -[[Excel VBAでもう頑張らない | フューチャー技術ブログ>https://future-architect.github.io/articles/20230209a/]] 2023.2 -VarTypeで8204などが返ってくるとき -- 配列を指定した場合は、配列(8192)+型番号の値が返ります。8204ならVariant(12)の配列 --http://www.openreference.org/articles/view/460 -[[VBA100本ノック:マクロVBAの特訓|エクセルの神髄>https://excel-ubara.com/vba100/]] 2021.3 -[[エクセルVBA・マクロ勉強参考サイトまとめ>http://matome.naver.jp/odai/2132773983649074301]] -[[コントロールの誤操作でマクロが作成される>http://pc.nikkeibp.co.jp/article/column/20091109/1020285/?P=1]] -[[VB & VBAプログラミング>http://www.ops.dti.ne.jp/~allergy/vb/vbvba.html]] -[[すぐに役立つVBAマクロ集>http://www.happy500z.com/]] --[[印刷(基本型)>http://www.geocities.jp/happy_ngi/YNxv211.html]] -[[ExcelRelaxTools Addin>http://software.opensquare.net/relaxtools/]] 2014.1.29 --5年間(2009年〜)にわたって作成したマクロを汎用的、体系的にまとめたものです。 *Tips [#z68b5d4d] **VSCodeで開発 [#s89f373f] -[[How to use GitHub Copilot with VBA in Excel - YouTube>https://www.youtube.com/watch?v=H-DlhBJkHDQ]] 2024.12 -[[Excelマクロ(VBA)をVSCodeで編集したい | カネゴラボ>https://kanegolabo.com/vba-edit]] 2023 -[[VBA基礎5:VS CODEでVBAを編集(ariawase)|KIYO>https://note.com/kiyo_ai_note/n/n0d94b419197a]] 2023.1 -[[【VSCode】XVBAを使ってExcel VBA開発 | とあるエンジニアの備忘録>https://rent-web.jp/post-89/]] 2022 ** 添付ファイルをつけてメール [#p7c0a085] -[[EXCEL VBAでメール一括配信!添付ファイルも付けられるよ その2 - あきらちんの技術メモ>https://www.akiratin.com/excel-vba%E3%81%A7%E3%83%A1%E3%83%BC%E3%83%AB%E4%B8%80%E6%8B%AC%E9%85%8D%E4%BF%A1%EF%BC%81%E6%B7%BB%E4%BB%98%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%82%E4%BB%98%E3%81%91%E3%82%89%E3%82%8C%E3%82%8B/]] 2020 ** 画面をキャプチャする [#d6d9263d] -[[【VBA】ExcelVBAで実現するエビデンスツール #Windows - Qiita>https://qiita.com/Kit-i/items/e4c732c9e389dc6a860b]] 2024.1 -[[Excel VBA を学ぶなら moug モーグ | 即効テクニック | 画面をキャプチャする>https://www.moug.net/tech/exvba/0150121.html]] 2015 ** CSVやExcelにSQLを実行 [#ud98d858] -[[【Excel VBA】CSVやExcelファイルにSQLを実行するツール - Qiita>https://qiita.com/taukuma/items/7c65f377e62081800804]] ** マクロの自動実行を抑制 [#e8efef0f] -[[マクロを実行させずにExcelファイルを開く方法。ブックオープン時に自動的にマクロが実行されなくなるよ | ラブグアバ>https://love-guava.com/open-excel-book-without-running-macro/]] 2019 --ファイルを開く→Shiftを押しながら開く -[[[Excel VBA]マクロの自動実行を止めるには? | 日経クロステック(xTECH)>https://xtech.nikkei.com/it/atcl/column/15/090100207/090100052/]] 2015 Application.EnableEvents = False ** 警告抑制 [#c478d36c] Application.DisplayAlerts = False '警告抑制 ** スクレイピング [#l5890357] -[[時給1000円の事務員さんのための VBA スクレイピング>https://qiita.com/callmekohei/items/d1e1d4c44e753e4d03de]] 2019.5 **アドイン関連 [#c2cf0356] -[[【Excel VBA】リボンの自作タブをアドインファイル(xlam)に埋め込む #Excel - Qiita>https://qiita.com/mysoshake/items/fb5e9d439d09f84b0602]] 2024.4 -[[エクセルアドインとは>http://hp.vector.co.jp/authors/VA029807/jim_carry-xla-exp.htm]] -[[VBAをリボンUIに追加する(インストーラー付き)>http://qiita.com/jp7eph/items/c8bf16b644dee82f9bfe]] 2017.7.17 ** フィルタ系 [#ma24e96c] -フィルタをクリアする ActiveSheet.ShowAllData -[[行が非表示か判定する>https://www.relief.jp/docs/excel-vba-check-if-row-hidden.html]] --Range.Hiddenプロパティを見る -[[オートフィルタ適用後に表示されている行のみを対象に処理を行う>https://www.blackcat.xyz/article.php/ProgFAQ-Xls_ProcessToCellAfterAutoFill]] **今選択しているシート [#y63ffaf8] -Application.SelectedSheets を参照する **「名前」の全消し [#l1b923d9] -メニューから消していると一回に1つしか消せなくて面倒なので、以下のマクロで for i = ActiveWorkbook.Names.Count to 1 step -1 ActiveWorkbook.Names(i).Delete Next **手っ取り早くExcelシートの一覧を得るには [#mb3fd2e2] -ALT+F11を押下(VBAエディタが起動) -CTRL+Gを押下(イミディエイトウインドウが起動) For Each i In ThisWorkbook.Sheets: debug.print i.name : next i をタイプしてEnterを押下 **[Esc]キーによるExcel VBAの実行中断を防止する [#jd547d76] -http://www.atmarkit.co.jp/fwin2k/win2ktips/1437disescexcl/disescexcl.html Application.EnableCancelKey = xlDisabled **互換性チェックのダイアログが出るのを抑制 [#r83ca239] -Office2007で .xlsファイルを保存しようとしたときに出るダイアログを抑制したい場合は、上書き確認の抑制と同じように Application.DisplayAlerts=False とする **Excelで特定の値になったときのアクション [#l5ea8ee5] -特定のセルに特定の値が入力されたときにマクロを自動的に実行するには? --http://www.asahi-net.or.jp/~zn3y-ngi/YNxv9c7.html --WorkSheet_Changeのイベントプロシージャに処理を書けば良い。当然ながらExcelの設定でマクロ実行を許可しておく必要はある(オプションのセキュリティ設定) **ツリービューコントロール [#d09d738e] -[[Tree View Controlの組み込み>http://officetanaka.net/excel/vba/treeview/01.htm]] --「ツール」-「その他のコントロール」から「Microsoft TreeView Control」を選択 -http://www.f3.dion.ne.jp/~element/msaccess/AcTipsFrmUsingTreeView1.html -http://www.tsware.jp/study/indexv10.htm -http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9710/aki/ **VBA コンパイルエラーと実行時エラー [#xb623945] -http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_200_020.html -Excel2002からある模様 -コンパイルの機能はタイプミスなどのチェックをするためのものと考える **描画抑制 [#m5c0a9fc] Application.ScreenUpdating = false **Excelシートアルファベット順並べ替え [#b6d35ae7] -http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200610/06100285.txt **列幅を合わせる [#oe1773d9] 'ost は対象シート ost.Activate ost.Range(ost.Cells(1, 1), ost.Cells(osr, 8)).Columns.AutoFit -columnsに対して行うのがポイント **AddTextBox に渡す座標の渡し方 [#mb19aab1] -http://www.keep-on.com/excelyou/2001lng4/200102/01020461.txt -Cells().Leftとか.Topとかを利用するとよい **プログラムの同期的な実行 [#a45e7192] -→Visual Basic(.NET以前)のページを見よ **表示倍率を変える [#kf626c7f] ActiveWindow.Zoom = 75 **印刷設定 右下にページ数を入れる [#ya0551da] ActiveSheet.PageSetup.RightFooter = "&P/&N" **印刷範囲の設定 [#b21d0bb9] ActiveSheet.PageSetup.PrintArea = "$A$1:$N$83" 'A1形式 Rangeではダメです **RangeからA1形式の文字列を得るには [#k93f604a] str = Cells(row, col).Address **Worksheets.AddのAfter引数などで渡すのはシート名ではない [#a9dd6dbf] -シートの番目でもない。Worksheetのオブジェクトを渡さないといけないので注意 'ブック末尾へのシート追加 Worksheets.Add after:=Worksheets(Worksheets.Count) -Worksheet.Move や .Copyも同様 **CSV形式で保存する [#wd906960] ActiveWorkbook.SaveAs Filename:="hoge.csv", FileFormat:=xlCSV, CreateBackup:=False **ゴールシークを実行させる [#l2d08fb3] 'E3の値が0になるようにB3を変化させる場合 Range("E3").GoalSeek Goal:=0, ChangingCell:=Range("B3") ** VBAプロジェクトをロックする [#i2a1b4c0] -[[VBAの「ソースコードをロック」ではソースコードをロックできない - Qiita>https://qiita.com/kn1cht/items/e97f00fdcf2e7d456cfa]] 2022.7 -[[VBAのプロジェクトにパスワードを設定する:VBE(Visual Basic Editor)>https://www.relief.jp/docs/017816.html]] 2012 --プロジェクトのプロパティで「保護」シートで設定する ** VBAファイルのデータ構造 [#h90d8d88] -[[Evil Clippy: MS Office maldoc assistant | Outflank>https://outflank.nl/blog/2019/05/05/evil-clippy-ms-office-maldoc-assistant/]] 2019 --https://github.com/outflanknl/EvilClippy --VBAのパスワード外すツール --バイナリは用意されてないのでソースからコンパイルする必要がある。 Make sure you have Visual Studio installed. Then execute the following command from a Visual Studio developer command prompt: csc /reference:OpenMcdf.dll,System.IO.Compression.FileSystem.dll /out:EvilClippy.exe *.cs -[[[MS-OVBA]: Office VBA File Format Structure | Microsoft Docs>https://docs.microsoft.com/en-us/openspecs/office_file_formats/ms-ovba/575462ba-bf67-4190-9fac-c275523c75fc]] 2022.2 -[[OpenMCDF is a 100% .net / C# component that allows developers to manipulate Microsoft Compound Document Files (also known as OLE structured storage).>https://github.com/ironfede/openmcdf/]] 2022.5 **実行ディレクトリ [#q05d31a9] Application.ThisWorkbook.Path