つらつら Excel VBA

私の備忘録です。

ファイル処理

mp3バイナリ解析

mp3タグが文字化けしないよう、文字コードが調べたかった。 最初の3バイトが「ID3」で21バイト目が「01」ならOK!とやるだけでよかった。 それだけでよかったのに、、、なんか長いのが出来た。 独学なので勘弁。 Option Explicit Sub メイン処理() Dim mp3b …

mp3バイナリ解析準備

必要なものを作っていく。 16進数と2進数の10進数変換マイナスや小数点以下の数値、エラーを考慮せずに作ったので取扱注意。 '16進数を2進数に変換 Function HexToBin(sHex As String) As String Dim rtnStr As String: rtnStr = "" Dim i As Long, tmp As S…

フォルダを上階層から全部作る

指定したフォルダが無ければ全部作ってしまえば良い。 仕様変更が原因だったとしてもエラーにならなくなる!怒られてしまえ! 'フォルダが無ければ上階層から全部作る。 Function makeFolder(fullPath As String) As Boolean On Error GoTo err1 'fullPath =…

ランダムファイル名(FSO)

'ランダムファイル名を生成(FSO) Function getRndFileName() As String 'Dim FSO As Object 'Set FSO = CreateObject("Scripting.FileSystemObject") Dim FSO As FileSystemObject Set FSO = New FileSystemObject getRndFileName = FSO.GetTempName 'getR…

オートシェイプを画像として保存

'オートシェイプを画像として保存 Sub saveShapeImage(myShape As Shape, outputPath As String) 'シート内にチャートオブジェクトを作成 Dim myChart As ChartObject Set myChart = ActiveSheet.ChartObjects.Add( _ Left:=0, _ Top:=0, _ Width:=myShape.W…

複数のテキストファイルを読み込む処理

'参照設定 Microsoft Scripting Runtime Sub 複数のテキストファイルを1行ずつ読み込む処理FSO() Dim tempFolder As String tempFolder = ThisWorkbook.Path & "\temp\" Dim f As File Dim ts As TextStream Dim fso As FileSystemObject Set fso = New File…

画像ファイルをシートに表示

Sub 画像ファイル読み込みテスト() Dim myFileName As Variant Dim myShape As Shape 'ファイル選択ダイアログ myFileName = Application.GetOpenFilename 'キャンセルやサイズ0の場合は処理終了 If myFileName = False Then Exit Sub If FileLen(myFileName…

フォントをMSPゴシックに一括変更

同一フォルダのエクセルファイル全部に対してフォントを変える処理。 行列番号部分はスタイルで指定されている模様。この処理だけでは無理。 Sub ゴシック統一() Dim buf As String, folderPath As String Dim ws As Worksheet, wb As Workbook folderPath =…

Word文書の置換(Excel)

とりま最近つくったやつ。 エクセル側からワード文書内で検索と置換をするだけのものです。 どうやら改行を含む文字の場合は何かしら手を打たないといけない模様。 使う場合は参照設定をしましょう。(Microsoft Wordなんたら) Sub chikan() Dim path As St…

BOM有無UTF-8テキストファイルの読み書き

「Option Explicit」マジ大事。適当に書いても動くからVBA厄介デスヨネー。 UTF-8はBOM有で、UTF-8NはBOM無し。 本題。UTF-8はADODBを使って入出力します。FSOもついでに載せときます。 Option Explicit Public Sub テキストファイルUTF8読み込み(strFilePat…

オブジェクト廃棄のメモ

変数の宣言も廃棄も要らぬ書き方メモ。Withで囲まれている間だけ変数が有効。 Dim buf As String With CreateObject("Scripting.FileSystemObject") With .GetFile("テキストファイルパス").OpenAsTextStream buf = .ReadAll .Close End With End With Debug…

テキスト一括出力タブ区切り

Sub テキストファイルタブ区切り一括出力() Dim buf As String '1行 Dim delimiter As String '区切り文字 Dim row As Range, clm As Range Dim ws As Worksheet Dim outputTxt As String '全データ Dim outputFilePath As String '出力パス Dim fileNo As I…

テキスト出力タブ区切り(簡易)

Sub テキストファイル出力タブ区切り() Sheets(1).Copy '新しいブックが作成される Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:="C:\temp\test.txt", FileFormat:=xlText ActiveWorkbook.Close 'SaveChanges:=False Application.Dis…

テキストファイル読み込みタブ区切り

Sub テキストファイル読み込みタブ区切り() Dim filePath As String Dim buf As String, iRow As Integer Dim i As Integer Dim temp As Variant Dim fileNo As Integer filePath = Application.GetOpenFilename("CSVファイル(*.csv),*.csv,テキストファイル…

ファイルの移動と名前変更

Name ファイルパス As 変更後ファイルパス '勿論エラー処理が必要

ハイパーリンクを削除して保存を繰り返す

Sub ハイパーリンクを削除して保存する処理() Dim targetWb As Workbook, targetWsh As Worksheet Dim strFolderPath As String strFolderPath = ThisWorkbook.Path & "\指定フォルダ\" '画面の更新を停止して処理を高速化 Application.ScreenUpdating = Fal…

カレントディレクトリの変更とファイル選択ダイアログの表示場所

Private Sub readLineTextFile() Dim fType As String, promptText As String, chDirPath As String Dim fPath As Variant Dim buf As String 'カレントディレクトリを移動 curDirPath = CurDir ChDir ActiveWorkbook.Path fType = "テキストファイル (*.txt…

エクセルシートを個別にブック保存する連続処理

大量のシートを抱えたブックの全シートを、別々のブックにしたかった。 シート1枚目を残し、シート名をファイル名としてブック保存するだけ。 Sub ブック吐き出し() Dim strSaveFileName As String, strSavePath As String strSavePath = ThisWorkbook.Path …

ファイルパスからファイル名を取り出す案

'ファイルパス、ファイル名+拡張子の状態からファイル名だけを取り出す処理。 '[\]でSplitをかけて最後を取得、[.]でSplitをかけて最初を取得すればOK Function getFileName(file_path) As String Dim temp As String Dim tmp_array2 As Variant, tmp_array…

ディレクトリ内のファイル検索(Dir)

file_name = Dir(target_dir & "*.csv") Do While file_name <> "" file_name = Dir() '次のファイル Loop ※Dirはファイル名が返される。 ファイルが見つからない場合には空文字が返る。

関連付けられたアプリケーションでファイルを開く

Dim WSH As Object Set WSH = CreateObject("WScript.Shell") WSH.Run Chr(34) & FilePath & Chr(34) 'Set WSH = Nothing ※Chr(34)でFilePathを囲む必要がある。Chr34はダブルクォーテーション。 囲まないとファイルパスに空白が含まれていた場合に失敗する…

ディレクトリ削除(RmDir)

RmDir "C:\FilePath\" ※RmDirはディレクトリ内にファイルがあるとエラーとなる。 ファイルが存在するディレクトリを削除するにはFileSystemObjectを使うようです。

ファイル数を数える

'指定したディレクトリ内のファイル数を数える。 Public Function FileCount(sDir As String) As Integer Dim rtnCnt As Integer Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") rtnCnt = FSO.GetFolder(sDir).Files.Count Set FS…

ディレクトリの存在確認

Dim tempDir As String tempDir = ThisWorkbook.Path & "\Test\" If Dir(tempDir, vbDirectory) = "" Then MkDir tempDir 'ディレクトリの作成 End If

ディレクトリの再帰検索

'引数1 targetDir 対象ディレクトリパス '引数2 extenstion 対象ファイルの拡張子を指定(例:*.csv) '引数3 recursive サブディレクトリの検索(True:行う, False:行わない) Public Sub FolderSearch(targetDir As String, extension As String, recursive As…