hiko-blog

VBA業務改善

MENU

VBA

Excel-log履歴テキスト保存する

VBA

Option Explicit ’PERSONAL.XLSBのThisWorkbookへ保存 '// Excelのイベント検知Dim WithEvents x As Application '// PERSONAL.XLSBが開いたときPrivate Sub Workbook_Open() '// Excelアプリケーションのイベントを検知する Set x = ApplicationEnd Sub '//…

ステータスバー

VBA

Sub ステータスバー1() Dim i As Long For i = 1 To 500 Application.StatusBar = i & "回目の処理をしています..." Next i Application.StatusBar = FalseEnd Sub Sub ステータスバー2() ThisWorkbook.Worksheets("Sheet1").Activate Application.Wait [Now…

処理時間計測

VBA

'vba起動の経過時間、関数の宣言'Declare Function GetTickCount Lib "kernel32.dll" () As Long '←32bitDeclare PtrSafe Function GetTickCount Lib "kernel32.dll" () As Long '←64bit Sub 処理時間計測()stTimer = GetTickCount '//--測定する処理------ …

可視列に対して連番

VBA

Sub 可視列連番()'可視列に対して連番 Dim r1, r2 As Range Dim i As Long Set r2 = ActiveSheet.UsedRange.Columns(1) Set r2 = r2.SpecialCells(xlCellTypeVisible) i = 0 For Each r1 In r2.Cells r1.Value = i i = i + 1 Next End Sub

自作関数.xlam IndexMatchとxlookup

VBA

’開発タブ¥Excelアドインから取り込み ’C:\Users\ユーザー名\AppData\Roaming\Microsoft\addins\自作関数.xlam Function IndexMatch(検索値 As Variant, 検索範囲 As Range, 戻り範囲 As Range) Set IndexMatch = WorksheetFunction.Index(戻り範囲, Worksh…

Excelからアクセスデータ抽出時、パラメータをエクセルセル値から読み取りさせる

Option Explicit Sub ExcelからAccessデータ抽出パラメータ条件付き()'Microsoft ActiveX Data Objects 2.X LibraryとMIcrosoft ADO Ext.x.x for DDL and SecurityをVBEツールから参照設定 Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim cmd …

マトリクス表をデータリストに置き換える

VBA

Sub マトリクス表をデータリストに置き換える() Dim wsInput As Worksheet Dim wsOutput As Worksheet Dim inputRange As Range Dim outputRange As Range Dim i As Long, j As Long, k As Long ' マトリクス表があるシートと範囲を指定 Set wsInput = ThisW…

A列項目の種類別に、B列項目を取りまとめる

VBA

Sub A列項目の種類別に、B列項目を取りまとめる() Dim wsSource As Worksheet Dim wsDestination As Worksheet Dim lastRow As Long Dim uniqueValues As Collection Dim cell As Range Dim key As Variant Dim result As String ' ソースシートと宛先シート…

各シートにシート名を記載(最終列に新しい列を挿入してシート名記載)

VBA

Sub 各シートに新しい列を挿入して最終行までシート名を記載() Dim ws As Worksheet Dim lastRow As Long Dim newCol As Integer ' 各シートに対してループ For Each ws In Worksheets ' シートの最終行を取得 lastRow = ws.Cells(ws.Rows.Count, "A").End(x…

各シートにシート名をA1セルに記載

VBA

Sub 各シートにシート名をA1セルに記載() Dim ws As Worksheet ' 各シートに対してループ For Each ws In Worksheets ' 各シートのA1セルにシート名を記載 ws.Range("A1").Value = ws.Name Next wsEnd Sub

アクティブブックのシートをまとめる

VBA

Sub アクティブブックのシートをまとめる() Dim ws As Worksheet Dim summarySheet As Worksheet Dim lastRowSummary As Long, lastRowSource As Long Dim lastCol As Long Dim sourceRange As Range, destinationRange As Range ' 新しいシートを作成 Set s…

シート内で、比較と記載

VBA

Sub 比較と記載() Dim ws As Worksheet Dim lastRow1, lastRow2 As Long Dim aRange As Range, cRange As Range Dim aValue As Variant, cValue As Variant Dim bColumn As Range, dColumn As Range Dim i As Long ' 対象のシートを設定 Set ws = ThisWorkbo…

ExcelからAccessデータ取り込み(簡易版)

Option Explicit Sub GetDataFromAccessWithMultipleConditions() Dim conn As Object Dim rs As Object Dim ws As Worksheet Dim strSQL As String ' Accessデータベースへの接続 Set conn = CreateObject("ADODB.Connection") conn.ConnectionString = "Pr…

Excelピボット生成

VBA

Sub CreatePivotTable() Dim wsData As Worksheet Dim wsPivot As Worksheet Dim rngData As Range Dim pvtTable As PivotTable Dim pvtField As PivotField ' データがあるワークシートを指定 Set wsData = Worksheets("Sheet1") ' シート名を適切に変更 ' …

抽出と取りまとめ

VBA

Sub 抽出と取りまとめ() Dim ws原本 As Worksheet Dim ws結果 As Worksheet Dim dict As Object Dim lastRow As Long Dim i As Long Dim key As Variant ' シートの設定 Set ws原本 = ThisWorkbook.Sheets("Sheet1") ' オリジナルデータがあるシート名 Set w…

特定の文字変換

VBA

Sub HighlightAndConvertText() Dim ws As Worksheet Dim rng As Range Dim cell As Range Dim hasTarget As Boolean Dim convertedCount As Long ' 対象のシートを指定 Set ws = ThisWorkbook.Sheets("Sheet1") ' シート名を適切に変更 ' 対象の範囲を指定…

ExcelとAccess複合検索

Sub SearchAccessQueryWithMultipleParameters() Dim conn As Object Dim rs As Object Dim strSQL As String Dim strConnection As String Dim accessDBPath As String Dim searchValue1 As Variant Dim searchValue2 As Variant Dim searchValue3 As Varia…

Excel取り込みデータとAccessテーブル比較結果をブックに保存

Option Explicit Sub CompareAndSaveData() Dim accessApp As Object Dim excelApp As Object Dim excelWorkbook As Object Dim accessTable As Object Dim excelWorksheet As Object Dim currentDate As String Dim newWorkbookPath As String ' Access デ…

比較処理マクロ(シート比較し、差分、削除、追加されたもの毎にシート作成)

VBA

Sub 比較処理マクロ() Dim ws1 As Worksheet, ws2 As Worksheet, diffWs As Worksheet, addWs As Worksheet, delWs As Worksheet Dim lastRow1 As Long, lastRow2 As Long, i As Long, j As Long, k As Long Dim foundMatch As Boolean Dim currentTime As D…

選択メールのみ添付ファイル削除

VBA

Sub 選択メールの添付ファイル削除() Set myOlApp = CreateObject("Outlook.Application") Set myOlSel = myOlApp.ActiveExplorer.Selection If myOlSel.Count = 0 Then MsgBox "メールが選択されていません" Exit Sub End If If vbYes <> MsgBox(myOlSel.Co…

OUTLOOKテキストにメール保存

VBA

Sub SaveOutlookMessagesWithDifferentFilenames() Dim olApp As Object Dim olNamespace As Object Dim olFolder As Object Dim olItem As Object Dim strOutputFolder As String Dim fs As Object Dim outFile As Object Dim isSentByMe As Boolean ' Outl…

Outlookで不要添付ファイル削除する

VBA

Outlookを開き、 「開発」タブを有効にする。 「Visual Basic」をクリックしてVBAエディタを開く。 「挿入」メニューから「モジュール」を選択して下記VBA貼り付け。 Sub RemoveAttachmentsFromSelectedEmails() Dim selectedItems As Selection Set selecte…

KEY列の比較とリスト化

VBA

Sub KEY列の比較とリスト化() Dim ws1 As Worksheet, ws2 As Worksheet, wsResult As Worksheet Dim cell1 As Range, cell2 As Range Dim keyColumn As Integer Dim notFoundInSheet1 As String, notFoundInSheet2 As String Dim resultRow, resultRow2 As L…

環境変数を取得する

VBA

Sub 環境変数を取得する()'コンピュータ名MsgBox "コンピュータ名は" & vbLf & Environ("COMPUTERNAME")'ユーザー名MsgBox "ユーザー名は" & vbLf & Environ("USERNAME")'テンポラリーフォルダのパスMsgBox "テンポラリーフォルダのパスは" & vbLf & Environ…

自動処理マクロcsv保存

VBA

Sub 自動処理マクロcsv保存() ' 指定の時間に実行されるVBAコード ' 例: シート1の5行目以降のA、B、C、E、G、H列のデータをCSVとして保存 Dim FilePath As String Dim LastRow As Long Dim DataRange As Range Dim Today As Date Dim HeaderValue As Varian…

データを検索して代入する_配列

VBA

Sub データを検索して代入する_配列() Dim シート1 As Worksheet Dim シート2 As Worksheet Dim データ1 As Variant Dim データ2 As Variant Dim 結果 As Variant Dim i As Long, j As Long ' シートの参照 Set シート1 = Worksheets("Sheet1") ' シート名を…

データを検索して代入する

VBA

Sub データを検索して代入する() Dim シート1 As Worksheet Dim シート2 As Worksheet Dim セル1 As Range Dim セル2 As Range Dim 検索値1 As String Dim 検索値2 As String Dim 結果セル As Range ' シートの参照 Set シート1 = Worksheets("Sheet1") ' シ…

PowerBI データインポート

VBA

Sub ImportDataFromPowerBI() Dim wbPowerBI As Workbook Dim wsPowerBIData As Worksheet Dim wsDestination As Worksheet ' Power BIからエクスポートしたExcelファイルを開く Set wbPowerBI = Workbooks.Open("Z:\Work\data.csv") ' Power BIデータが含ま…

コメントの転記

VBA

Sub コメントの転記() Dim シート1 As Worksheet Dim シート2 As Worksheet Dim セル1 As Range Dim セル2 As Range Dim 対応項目が見つかった As Boolean ' シートの参照 Set シート1 = Sheets("Sheet1") ' シート名を適切に変更 Set シート2 = Sheets("She…

列のアイテムの違いを抽出

VBA

Sub 列のアイテムの違いを抽出1() Dim 対象範囲 As Range Dim シート As Worksheet Dim 抽出シート As Worksheet Dim セル As Range Dim 値 As Variant Dim 抽出範囲 As Range Dim 最終行 As Long ' 対象範囲を指定 Set シート = Sheets("Sheet1") ' シート…