#author("2024-01-06T13:22:50+09:00","default:irrp","irrp")
→Office関連メモ

→Excel関連

→C#によるExcel制御

→Visual Basic(.NET以前)

#contents


* サブトピック [#zd8f2c00]
-ExcelのVBAで図形/シェイプの処理
-ExcelVBAによるファイル処理
-ExcelVBAサンプル集


*一般 [#bbc20b28]
-[[【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

-[[エクセルアドインとは>http://hp.vector.co.jp/authors/VA029807/jim_carry-xla-exp.htm]]

-[[エクセル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]
-[[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

** Googleマップ表示 [#z16f89c2]
-[[ゼロからはじめるExcel VBA+Webサービス(9) Googleマップを表示してみよう【Google Maps Platform?】 | TECH+>https://news.mynavi.jp/techplus/article/excelvbaweb-9/]]


**  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]
-[[VBAをリボンUIに追加する(インストーラー付き)>http://qiita.com/jp7eph/items/c8bf16b644dee82f9bfe]] 2017.7.17


** ExcelにGoogle Maps APIで地図を埋め込み、住所検索、拡大/縮小、地図種類変更 [#af08541d]
-http://www.atmarkit.co.jp/ait/articles/1409/05/news165.html



**セルの値を文字列として取得したい場合 [#p20b2af8]
 Cells(i,j).Text


** フィルタ系 [#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に対して行うのがポイント


**マクロのあるブック [#cf43f3f0]
-ThisWorkbookで参照


**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


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS