つらつら Excel VBA

私の備忘録です。

囲まれた文字を抽出

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

指定したフォルダが無ければ全部作ってしまえば良い。 仕様変更が原因だったとしてもエラーにならなくなる!怒られてしまえ! 'フォルダが無ければ上階層から全部作る。 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…

図の背景を透過にする

Sub 選択図を透過にするテスト() 'オブジェクトが選択されているか If VarType(Selection) <> vbObject Then Exit Sub Dim myShape As ShapeRange Set myShape = Selection.ShapeRange With myShape.PictureFormat .TransparentBackground = msoTrue .Transp…

QRコード(Access)

Google先生のAPIは永遠に使える訳ではないので回避策としてテスト。Accessランタイム インストールバーコードはAccessのコントロールなのでAccessが必要!無ければランタイムでよい!Accessランタイムは無料!さすMicrosoft 早速ダウンロードしてインストー…

QRコード(Google先生)

Google Chart API。パラメータ詳細は調べてません。URLエンコードすれば多分漢字が使える! ブラウザなどで以下のURLにアクセスするとQRコード画像が返される。さすGoogle先生 myURL = "https://chart.apis.google.com/chart?cht=qr&chs=100x100&chl=TEST" '…

セル結合の確認

If Range("A1").MergeCells Then Debug.Print "結合されています" End If With Range("A2") Debug.Print .MergeArea.Address '結合範囲 Debug.Print .MergeArea.Count 'セル数 Debug.Print .MergeArea.Rows.Count '行数 Debug.Print .MergeArea.Columns.Coun…

セル結合

Range("E1:G1000").Merge Range("E1").UnMerge 以下、テスト用コード '確認メッセージ非表示 Application.DisplayAlerts = False Dim iRow As Long Dim sh As Worksheet Set sh = ThisWorkbook.Worksheets("Sheet1") 'セル結合1 For iRow = 1 To 1000 sh.Cel…

Application.OnTimeで繰り返し処理

引数を付けるにはシングルクォーテーションでマクロと引数を囲む! ダブルクォーテーションを2連続で書くのはエスケープ処理という回避方法。ダブルクォ(略)を文字として認識させたい時などに使います。他言語では¥マーク等が使われます。 '抜粋 Procedur…

コマンド実行結果を受け取る

PowerShellも同じやり方。渡すテキスト変えるだけ。 コマンドにオプション付けたり、Splitなどを使って結果を取捨選択してください。 Sub コマンドプロンプト() Dim WSH, wshExec, sCmd As String, sResult As String Set WSH = CreateObject("WScript.Shell…

セルの幅と高さサイズ指定

Sub セルの幅と高さサイズ指定() With ActiveSheet '自動調整確認用テスト文字 '.Range("A1:G10").Value = "aaaaaaaa" 'サイズ一括指定 .Cells.RowHeight = 30 .Cells.ColumnWidth = 5 '基準値に戻す .Rows("2").UseStandardHeight = True .Columns("A").Use…

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

'参照設定 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…

色からRGB値を算出

Sub セルの背景色をRGBで取得() 'セルの背景色を取得 Dim iColor As Long iColor = ActiveCell.Interior.Color '算出 Dim iR As Long, iG As Long, iB As Long iR = iColor Mod 256 iG = Int(iColor / 256) Mod 256 iB = Int(iColor / 256 / 256) Debug.Prin…

1,600万色を56色に減色する

とりあえずセルの背景色を減色した。深く考えない! Sub カラーインデックス56色に書き換え() Dim r As Range For Each r In ThisWorkbook.ActiveSheet.UsedRange With r.Interior If .ColorIndex <> xlNone Then .ColorIndex = .ColorIndex End If End With…

VBAでGetPixel

ディスプレイ上のどこでも色情報を取得できるAPIのGetPixel。100x100ピクセルくらいの範囲でも激重なので注意! 読み取り範囲と基準座標はポイントとピクセルとインチとdpiの計算が必要でハードルが高いと思います。 色情報を取得できたら、シートのセルの背…

ディスプレイ上の画像位置を取得する(DPI値の注意)

ピクセル=ポイント×96/72 インチ変換計算が必要で72で割ってます。問題は96の部分。 'ディスプレイ上におけるA1の左上の位置を取得する。ピクセル値。 x = ActiveWindow.PointsToScreenPixelsX(0) y = ActiveWindow.PointsToScreenPixelsY(0) 'A1の左上か…

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

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

ブラウザ操作(Chrome、SeleniumBasic)

GoogleChromeを操作したい。SeleniumBasicが必要とのこと。 事前準備は割愛。 マクロ側からページ内にアクセスする時はロード待ち処理を必ず入れる。 IEで出来てた全選択コピー貼り付けがうまくいかず、、、諦めてデータは直接取得。 Dim driver As Selenium…

【Word VBA】図の書式設定、鮮明度設定

Sub 全ての図の鮮明度設定 Dim shp As Word.Shape For Each shp In ThisDocument.Shapes Call setSharpness(shp, 1) '鮮明度+100% Next End Sub '鮮明度(シャープネス)設定 Sub setSharpness(shp As Word.Shape, pt As Double) Dim eff As PictureEffect W…

【Word VBA】挿入画像を各ページに分けて印刷したい

プリンタでスキャンしたデータを手間をかけずに一気に印刷したかったのです。Wordは画像挿入時に勝手に大きさは縮小してくれる!手間が減る! '空文書に写真等をドラッグ&ドロップで文書に追加してから実行。 Sub 図をページ毎に分けて位置も揃える() 'カー…

【Word】スキャンした文書を濃く印刷したい

ワードでやりました。エクセルで出来るかは試してません。 画像を挿入して右クリック>図の書式設定>鮮明度を最大化>濃い! 最初からすごい薄いヤツには効果が薄い模様。 しこたま文書をJPGでスキャンして絶望していましたが何とかなりました。 以上

VBAでワークシート関数を使う(CountA)

A~H列が全て空白の行を見つける処理。 iRow = 2 Do While Application.WorksheetFunction.CountA(Range("A" & iRow & ":H" & iRow)) > 0 '何か処理を入れる iRow = iRow + 1 Loop ワークシート関数CountAは空白ではないセルの個数を返す。以上。

余白設定

'余白設定 With ThisWorkbook.Worksheets("Sheet1").PageSetup .LeftMargin = Application.CentimetersToPoints(1.8) .RightMargin = Application.CentimetersToPoints(1.8) .TopMargin = Application.CentimetersToPoints(1.9) .BottomMargin = Application…

Trimとデータ型について

セル内の文字の前後に空白があると、セル編集で中身を見てみないことには分からず気づきにくい。 そんな時は文字の前後にある空白を除去してくれるTrim便利。Trim(引数)、戻り値はString前後の空白は全て敵!何も考えずこんな感じの脳筋プログラムを作りまし…

行番号と列番号の表示が変

エクセルファイルをスプレッドシートで違和感なく使いたくて色々試していたところ、スプレッドシートで保存したファイルをエクセルで開くと、行番号と列番号が太字になってしまった!番号が見切れる事も! 他の人からもらったファイルを開くと同じような事が…

オートフィルタ解除後にも絞り込み状態を継続させたい

非表示行を覚えておいて、復元させるだけです。 (オートフィルタを解除しなければいいだけの話では・・・?) Sub オートフィルタで絞り込んで解除して非表示状態を復元する処理() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("エクセルシート")…

Excelとスプレッドシートのタイムゾーンを無理やり合わせる

Excelファイルをスプレッドシートで開くと、=Today()の結果が違う! ExcelはOSからタイムゾーンを取得、スプレッドシートはタイムゾーンを各ファイルで設定できるから。 PacificからTokyoに変更して解決!Excelファイルを更新したのでGoogleドライブに上書き…

長いコードと行継続文字の使い過ぎ

エディタが文句ばかり言います。行が長すぎます。行継続文字を使いすぎています。 仕方ないのでコードの後半の改行は諦めました。画面外にはみ出したままです。 これでは見づらい! なんかすごい アンダーバーは24個まで。横に長すぎるコードは怒られます。…

スプレッドシートの日付計算がおかしい

ファイル>スプなんたらの設定 日本と(GMT+09:00) Tokyoを選択して完了! Today()-本日の日付=0にならず不思議だった