QiitaとNoteにも纏めています。
Noteが自分程度の情報纏めにはとてもやり易かった。

基本

  • 俺たちが唱える最初の呪文
  • workbook、worksheetの指定
  • ファイルを開く
  • subの中でsubとfunctionを呼ぶ
  • クリップボードに値をコピー

初級編

  • ある文字の一番下に文字を加える
  • 特定フォルダのファイルを開く
  • 特定フォルダにある全てのファイル名を取得する

Outlookと絡める

  • 文字列をプレーンテキスト化する
  • 番外 LINK集

——————-

俺たちが唱える最初の呪文

Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'APIを宣言 (何のAPIだったかは忘れた)

workbook、worksheetの指定

Sub randomSubName()
	Dim WB As Workbook
	Set WB = ThisWorkbook
	Dim WS As Worksheet
	Set WS = WB.Worksheets("SubjectList")

	WS.Cells(1, 1).Value = "cells provide (rows, column), that's what you always forgot hah"
	WS.Cells(1, 2).Value = "paypal mafia"
	WS.Cells(1, 3).Value = "tiktok pajama"

End Sub

ファイルを開く

'最近はこれで全てのファイルを開いてます(良いのか分からんが)
CreateObject("Shell.Application").ShellExecute "ここにファイルパス

subの中でsubとfunctionを呼ぶ

Private Sub main()
    'callは使いません
    'functionの戻り値の変数定義が反対の様な気がしますが、動きます。

    Dim i As Long    
    tEst
    funcTEST    
    i = Add(1, 2)
    MsgBox i
End Sub

Sub tEst()
    MsgBox "testだよ"
End Sub

Function funcTEST() As Long
    MsgBox "funcだよ"
End Function

Public Function Add(number1 As Double, number2 As Double)
    Add = number1 + number2
End Function

クリップボードに値をコピー
(カスタマイズできそうに書いてます)

Private Sub iLikeCB()
    Dim cbData As New DataObject 'ClipBoard data object
    'クリップボードへ文章をコピーする
    cbData.SetText "依頼内容:" & vbCrLf & _
                   "依頼者:" & vbCrLf & _
                   "依頼日:" & vbCrLf & _
                   "完了期限:" & vbCrLf & _
                   "メール件名:" & vbCrLf & _
                   "種別:" & vbCrLf & _
                   "概要:" & vbCrLf & _
                   "注意点等:" & vbCrLf & _
                   "詳細:" & vbCrLf & _
                   "備考:" & vbCrLf & _
                   "場所:" & vbCrLf & _
                   "ラック:" & vbCrLf & _
                   "機器:"
    cbData.PutInClipboard
End Sub

ある表の一番下に文字を加える(前提:その表の下には空欄のセルのみ)

Dim startPointRow As Long
startPointRow = WS.Cells(1048576, 1).End(xlUp).Row + 1

特定フォルダにある全てのファイル名を取得する
(Office TANAKA先生のファイルの一覧を取得するも一読を)

Sub GetFolderList()

Dim fso As Object
Dim find_path As String
Dim cf As Variant
Dim i As Long

find_path = "C:\Users\Sample"  '←取得したいフォルダパスを指定する

Set fso = CreateObject("Scripting.FileSystemObject")
Set cf = fso.getfolder(find_path)

i = 1
For Each f In cf.Files
    Cells(i, 1) = f.Path
    Cells(i, 2) = f.Name
    i = i + 1
Next

End Sub

特定フォルダのファイルを開く

Sub openFile()
    Dim buf As String, wb As Workbook
    Dim cnt As Long
    Const targetPath As String = "特定のフォルダ"
    Dim excelFileName As String
    excelFileName = InputBox("Please enter a part of filename. Folder is" & targetPath)
    
    '対象のフォルダ内のファイル全てを検索 一番最初のファイルがbufへ入る
    buf = Dir(targetPath & "*")
        
    Do While buf <> ""
        If InStr(1, buf, excelFileName, vbTextCompare) > 0 Then
            Exit Do
        End If
        buf = Dir() 'Dir()は自動的に次の値を吐き出す
    Loop

    
    ''ファイルの存在チェック
    If buf = "" Then
        MsgBox buf & vbCrLf & "は存在しません", vbExclamation
        Exit Sub
    End If
    ''同名ブックのチェック
    For Each wb In Workbooks
        If wb.Name = buf Then
            MsgBox buf & vbCrLf & "はすでに開いています", vbExclamation
            Exit Sub
        End If
    Next wb
    
    'Excelを開く場合、ユーザーフォームを閉じておかないと開けない
    Unload UserForm1
    'ファイルを開く
    CreateObject("Shell.Application").ShellExecute targetPath & buf

End Sub

outlookの本文をHTMLからプレーンテキスト化する

'失敗例
If oBjMailitem.BodyFormat <> olFormatPlain Then
         oBjMailitem.BodyFormat = olFormatPlain
         oBjMailitem.Save
End If
'理由:ObjectはPlainテキスト化されるんだけど、やりたいことが達成できてない。やりたいのは、HTML形式を転載したとき冗長な改行だったりの文字列を1行にしたいことなので・・・

'成功例

Link集

Qiita : エクセルとVBAを上手に使う①他のファイルからの貼付

カテゴリー: タグ: