| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「Excel VBA」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の15版が非表示)
1行目: 1行目:
| [[Excel]] |  
+
| [[Excel]] |  [[VB6]] |
 
==[[Excel VBA]]==
 
==[[Excel VBA]]==
 
===[[Tips]]===
 
===[[Tips]]===
 
====[[Excel]]操作====
 
====[[Excel]]操作====
*[[Excel VBA セルからテキストを取得|セルからテキストを取得]]
+
=====Excel関数をVBAから使用する=====
*[[Excel VBA 最終更新日を取得|最終更新日を取得]]
+
*ワークシート関数をVBAで使用する(WorksheetFunctionプロパティ)
*[[Excel VBA シートを設定ファイルとして利用する|シートを設定ファイルとして利用する]]
+
 
*[[Excel VBA ユーザフォームを閉じさせない|ユーザフォームを閉じさせない]]
+
=====可変長引数=====
*[[Excel VBA 確認のダイアログを表示させない|確認のダイアログを表示させない]]
+
 
*[[Excel VBA 最後のセルを取得|最後のセルを取得]]
+
<pre>
*[[Excel VBA オートフィルタをシート間で同期|オートフィルタをシート間で同期]]
+
Public Sub Hoge(ParamArray foo() as Variant)
*[[Excel VBA オートフィルタをで行が隠れているか判定|オートフィルタをで行が隠れているか判定]]
+
End Sub
*[[Excel VBA シート名を指定してハイパーリンクを作成|シート名を指定してハイパーリンクを作成]]
+
</pre>
*[[Excel VBA すべてのシートに対して一括置換|すべてのシートに対して一括置換]]
+
 
*[[Excel VBA 処理中一時的に自動計算をとめる|処理中一時的に自動計算をとめる]]
+
=====[[Excel VBA セルからテキストを取得|セルからテキストを取得]]=====
 +
----
 +
[[Excel VBA セルからテキストを取得|セルからテキストを取得]]
 +
 
 +
=====[[Excel VBA 最終更新日を取得|最終更新日を取得]]=====
 +
----
 +
[[Excel VBA 最終更新日を取得|最終更新日を取得]]
 +
=====[[Excel VBA シートを設定ファイルとして利用する|シートを設定ファイルとして利用する]]=====
 +
----
 +
[[Excel VBA シートを設定ファイルとして利用する|シートを設定ファイルとして利用する]]
 +
=====[[Excel VBA ユーザフォームを閉じさせない|ユーザフォームを閉じさせない]]=====
 +
----
 +
[[Excel VBA ユーザフォームを閉じさせない|ユーザフォームを閉じさせない]]
 +
=====[[Excel VBA 確認のダイアログを表示させない|確認のダイアログを表示させない]]=====
 +
----
 +
[[Excel VBA 確認のダイアログを表示させない|確認のダイアログを表示させない]]
 +
=====[[Excel VBA 最後のセルを取得|最後のセルを取得]]=====
 +
----
 +
[[Excel VBA 最後のセルを取得|最後のセルを取得]]
 +
=====[[Excel VBA オートフィルタをシート間で同期|オートフィルタをシート間で同期]]=====
 +
----
 +
[[Excel VBA オートフィルタをシート間で同期|オートフィルタをシート間で同期]]
 +
=====[[Excel VBA オートフィルタをで行が隠れているか判定|オートフィルタをで行が隠れているか判定]]=====
 +
----
 +
[[Excel VBA オートフィルタをで行が隠れているか判定|オートフィルタをで行が隠れているか判定]]
 +
=====[[Excel VBA シート名を指定してハイパーリンクを作成|シート名を指定してハイパーリンクを作成]]=====
 +
----
 +
[[Excel VBA シート名を指定してハイパーリンクを作成|シート名を指定してハイパーリンクを作成]]
 +
=====[[Excel VBA すべてのシートに対して一括置換|すべてのシートに対して一括置換]]=====
 +
----
 +
[[Excel VBA すべてのシートに対して一括置換|すべてのシートに対して一括置換]]
 +
=====[[Excel VBA 処理中一時的に自動計算をとめる|処理中一時的に自動計算をとめる]]=====
 +
----
 +
[[Excel VBA 処理中一時的に自動計算をとめる|処理中一時的に自動計算をとめる]]
 +
 
 +
=====選択された範囲を処理=======
 +
<pre>
 +
    If TypeName(Selection) = "Range" Then
 +
        For Each c In Selection.Cells
 +
            Debug.Print c.Value
 +
        Next
 +
    End If
 +
</pre>
 +
 
 
====文字列操作====
 
====文字列操作====
 
*[[VB6 固定長のString]]
 
*[[VB6 固定長のString]]
46行目: 89行目:
 
*[[Excel VBA 正規表現を使う|正規表現を使う]]
 
*[[Excel VBA 正規表現を使う|正規表現を使う]]
 
*[[Excel VBA GUIDを生成する|GUIDを生成する]]
 
*[[Excel VBA GUIDを生成する|GUIDを生成する]]
 +
=====起動メニューアイコンを表示=====
 +
*[https://www.profaim.jp/tools/soft/excel/faceid/index.php FaceId]
 +
<pre>
 +
Private Const MY_APP_FILE_MK        As String = "ツールバー名"            'ツールバー名
 +
Private Const BTN_MY_APP_FILE_MK    As String = "ボタン名"  'ボタン名
 +
'
 +
'ToolBarをセット
 +
'
 +
Private Sub loadToolBar()
 +
  Dim cbrGatherImgs  As CommandBar
 +
  Dim btnGetImages    As CommandBarButton
 +
  On Error Resume Next
 +
  ' コマンド バーが既に存在するかどうかを確認します。
 +
  ' Set cbrGatherImgs = CommandBars(MY_APP_FILE_MK)
 +
  ' コマンド バーが存在しない場合は作成します。
 +
  If cbrGatherImgs Is Nothing Then
 +
      Err.clear
 +
      Set cbrGatherImgs = CommandBars.add(MY_APP_FILE_MK)
 +
      ' コマンド バーを表示します。
 +
      cbrGatherImgs.Visible = True
 +
      ' ボタン コントロールを追加します。
 +
      Set btnGetImages = cbrGatherImgs.Controls.add
 +
     
 +
      With btnGetImages
 +
        .Style = msoButtonIconAndCaption
 +
        .Caption = BTN_MY_APP_FILE_MK
 +
        .Tag = BTN_MY_APP_FILE_MK
 +
        ' ボタンがクリックされたときに実行するプロシージャを指定します。
 +
        .OnAction = "mayAppMain"
 +
        .FaceId = 270&
 +
      End With
 +
  Else
 +
      ' 既存のコマンド バーを表示します。
 +
      cbrGatherImgs.Visible = True
 +
  End If
 +
End Sub
 +
'
 +
'ToolBarを削除
 +
'
 +
Private Sub unloadToolBar()
 +
  'On Error Resume Next
 +
  On Error GoTo errHandler
 +
 
 +
  ' 存在するコマンド バーを削除します。
 +
  CommandBars(MY_APP_FILE_MK).Delete
 +
   
 +
    Exit Sub
 +
errHandler:
 +
    'NOP
 +
End Sub
 +
 +
'
 +
'ファイルを開いたときに実行
 +
'
 +
Public Sub Auto_Open()
 +
    Call loadToolBar
 +
End Sub
 +
'
 +
'ファイルを閉じたときに実行
 +
'
 +
Public Sub Auto_Close()
 +
    Call unloadToolBar
 +
End Sub
 +
</pre>
 +
 
====マクロサンプル====
 
====マクロサンプル====
 +
=====[[Microsoft Project から Excelに吐き出したタスクの見栄えをちょっと整えるマクロ]]=====
 
*[[Microsoft Project から Excelに吐き出したタスクの見栄えをちょっと整えるマクロ]]
 
*[[Microsoft Project から Excelに吐き出したタスクの見栄えをちょっと整えるマクロ]]
 +
=====[[Perl VBのプロパティプロシージャを生成]] =====
 
*[[Perl VBのプロパティプロシージャを生成]]  
 
*[[Perl VBのプロパティプロシージャを生成]]  
 +
=====[[Excel VBA 最初の空白でないセルを返す]]=====
 
*[[Excel VBA 最初の空白でないセルを返す]]
 
*[[Excel VBA 最初の空白でないセルを返す]]
===ライブラリ===
+
=====[[Excel VBA ワークシートをHTMLテーブル]]=====
 +
*[[Excel VBA ワークシートをHTMLテーブル]]
 +
 
 +
==ライブラリ==
 +
===Web API (JSON)の取得===
 +
----
 +
*以下の組み合わせで、Windowsに依存せず([[Mac]]でも)利用できる
 +
====[https://github.com/VBA-tools/VBA-JSON VBA-JSON]====
 +
*[https://github.com/VBA-tools/VBA-JSON VBA-JSON]
 +
====[https://github.com/VBA-tools/VBA-Web VBA-WEB]====
 +
*[https://github.com/VBA-tools/VBA-Web VBA-WEB]
 +
====[https://github.com/VBA-tools/VBA-Dictionary/releases VBA-DICTIONARY]====
 +
*[https://github.com/VBA-tools/VBA-Dictionary/releases VBA-DICTIONARY]
 +
<pre>
 +
Sub JsonTest()
 +
    Dim url As String
 +
    Dim wbClient As New WebClient
 +
   
 +
    url = "https://xxxxxxxxxx"
 +
 
 +
    Dim Response As WebResponse
 +
    Set Response = wbClient.GetJson(url)
 +
   
 +
    Dim jsonText As String
 +
    jsonText = Response.Content
 +
    Debug.Print jsonText
 +
   
 +
    Dim Json As Object
 +
    Set Json = JsonConverter.ParseJson(jsonText)
 +
   
 +
    Debug.Print JsonConverter.ConvertToJson(Json)
 +
    Debug.Print JsonConverter.ConvertToJson(Json, Whitespace:=2)
 +
   
 +
    Debug.Print Json("_fieldsProto")("imageURL")("stringValue")
 +
 
 +
End Sub
 +
</pre>
 +
 
 +
====部品====
 
*[[Excel VBA Utility]]
 
*[[Excel VBA Utility]]
 
*[[Excel VBA File Utility]]
 
*[[Excel VBA File Utility]]
 
*[[Excel VBA Log Utility]]
 
*[[Excel VBA Log Utility]]
 +
 +
====その他====
 
*{{ref レコード末尾にC[[R]]LF挿入v10.xls}}
 
*{{ref レコード末尾にC[[R]]LF挿入v10.xls}}
 
**{{ref recsplt.exe}} VC++版 ↑遅すぎ
 
**{{ref recsplt.exe}} VC++版 ↑遅すぎ

2022年3月5日 (土) 02:00時点における最新版

| Excel | VB6 |

Excel VBA

Tips

Excel操作

Excel関数をVBAから使用する
  • ワークシート関数をVBAで使用する(WorksheetFunctionプロパティ)
可変長引数
Public Sub Hoge(ParamArray foo() as Variant)
End Sub
セルからテキストを取得

セルからテキストを取得

最終更新日を取得

最終更新日を取得

シートを設定ファイルとして利用する

シートを設定ファイルとして利用する

ユーザフォームを閉じさせない

ユーザフォームを閉じさせない

確認のダイアログを表示させない

確認のダイアログを表示させない

最後のセルを取得

最後のセルを取得

オートフィルタをシート間で同期

オートフィルタをシート間で同期

オートフィルタをで行が隠れているか判定

オートフィルタをで行が隠れているか判定

シート名を指定してハイパーリンクを作成

シート名を指定してハイパーリンクを作成

すべてのシートに対して一括置換

すべてのシートに対して一括置換

処理中一時的に自動計算をとめる

処理中一時的に自動計算をとめる

選択された範囲を処理==
    If TypeName(Selection) = "Range" Then
        For Each c In Selection.Cells
            Debug.Print c.Value
        Next
    End If

文字列操作

数値操作

ステートメント

ファイル操作


ディレクトリの存在チェック
If Dir(pathName, vbDirectory) = "" Then
   :
End If

オブジェクト操作

起動メニューアイコンを表示
Private Const MY_APP_FILE_MK         As String = "ツールバー名"            'ツールバー名
Private Const BTN_MY_APP_FILE_MK     As String = "ボタン名"  'ボタン名
'
'ToolBarをセット
'
Private Sub loadToolBar()
   Dim cbrGatherImgs   As CommandBar
   Dim btnGetImages    As CommandBarButton
   On Error Resume Next
   ' コマンド バーが既に存在するかどうかを確認します。
   ' Set cbrGatherImgs = CommandBars(MY_APP_FILE_MK)
   ' コマンド バーが存在しない場合は作成します。
   If cbrGatherImgs Is Nothing Then
      Err.clear
      Set cbrGatherImgs = CommandBars.add(MY_APP_FILE_MK)
      ' コマンド バーを表示します。
      cbrGatherImgs.Visible = True
      ' ボタン コントロールを追加します。
      Set btnGetImages = cbrGatherImgs.Controls.add
      
      With btnGetImages
         .Style = msoButtonIconAndCaption
         .Caption = BTN_MY_APP_FILE_MK
         .Tag = BTN_MY_APP_FILE_MK
         ' ボタンがクリックされたときに実行するプロシージャを指定します。
         .OnAction = "mayAppMain"
         .FaceId = 270&
      End With
   Else
      ' 既存のコマンド バーを表示します。
      cbrGatherImgs.Visible = True
   End If
End Sub
'
'ToolBarを削除
'
Private Sub unloadToolBar()
  'On Error Resume Next
  On Error GoTo errHandler
  
   ' 存在するコマンド バーを削除します。
   CommandBars(MY_APP_FILE_MK).Delete
    
    Exit Sub
errHandler:
    'NOP
End Sub

'
'ファイルを開いたときに実行
'
Public Sub Auto_Open()
    Call loadToolBar
End Sub
'
'ファイルを閉じたときに実行
'
Public Sub Auto_Close()
    Call unloadToolBar
End Sub

マクロサンプル

Microsoft Project から Excelに吐き出したタスクの見栄えをちょっと整えるマクロ
Perl VBのプロパティプロシージャを生成
Excel VBA 最初の空白でないセルを返す
Excel VBA ワークシートをHTMLテーブル

ライブラリ

Web API (JSON)の取得


  • 以下の組み合わせで、Windowsに依存せず(Macでも)利用できる

VBA-JSON

VBA-WEB

VBA-DICTIONARY

Sub JsonTest()
    Dim url As String
    Dim wbClient As New WebClient
    
    url = "https://xxxxxxxxxx"

    Dim Response As WebResponse
    Set Response = wbClient.GetJson(url)
    
    Dim jsonText As String
    jsonText = Response.Content
    Debug.Print jsonText
    
    Dim Json As Object
    Set Json = JsonConverter.ParseJson(jsonText)
    
    Debug.Print JsonConverter.ConvertToJson(Json)
    Debug.Print JsonConverter.ConvertToJson(Json, Whitespace:=2)
    
    Debug.Print Json("_fieldsProto")("imageURL")("stringValue")

End Sub

部品

その他