ExcelをVBAをやめComObjectで操作する

Excelをcomobjectで操作

ExcelをVBAではなくAutoHotkeyで動かしてみたいと思います。

AutoHotkeyなら、他のソフトの連携も簡単です。
ComObjectを使いたいと思います。

AutoHotkeyの本家英語サイト:

ExcelのComobjectを取得し、セルに書き込み

Excelを操作する最初の一歩
開いてるExcelを操作、パスを指定しExcelを開き操作

開いてるExcelのセルに値を入れる 1

F1::
	oExcel := ComObjActive("Excel.Application")
		
	oExcel.Range("A1").Value := "日本"
	oExcel.Range("A2").Value := "日本最高"

既存のExcelファイルを開き、セルに値を入れる 2

F1::
	oEx := ComObjCreate("Excel.Application")
	oEx.Visible := 1
	oExcel := oEx.Workbooks.Open("F:\studyData\Autohotkey\Excel\For_cad.xlsm")
	s := "Excel自動化"
		
	Sleep, 2000
	oExcel.Sheets(1).Range("A1").Value := s

ファイルを開くときは、.visible と .Workbooks.open と必要なコード増えます。

1と2を合体 Try ~ Catch ~ を使って

F1::
	Try 
	{
		oExcel := ComObjActive("Excel.Application")
		s := "AutoHotkey"
	}
	Catch
	{
		oEx := ComObjCreate("Excel.Application")
		oExcel := oEx.Workbooks.Open("F:\studyData\Autohotkey\Excel\For_cad.xlsm")
		oEx.Visible := 1
		s := "Excel自動化"
	}
		
	Sleep, 2000
	oExcel.Sheets(1).Range("A1").Value := s
	

Try コマンドA Catch コマンドB
コマンドAを実行し、エラーなら、コマンドBを実行します。

このコマンドの説明、日本語サイトには出てきません。英語サイトを見ましょう。

Excelのセル値を取得

上のコードに追加してください。

^F1::
	get_cell_1 := oExcel.Sheets(1).Range("D10").Value
	MsgBox, %get_cell_1%
Return
Excel取得データ

80.000000 後ろの00なんで6桁? AutoHotkeyの仕様?

コンピュータの数値は2進数なので、よく理解できません。Excelがどんな型で持ち、AutoHotkeyの型も

Cellの背景色をかえる

F1::
    xl := ComObjActive("Excel.Application")
    IF (Toggle := !Toggle)
        xl.ActiveWorkbook.ActiveSheet.Range("a1:a2").Interior.Color := 0x0000FF
        ;赤
    Else
        xl.ActiveWorkbook.ActiveSheet.Range("a1:a2").Interior.Color := 0x5FD200
        ;緑
    xl := ""
Return

「RGB()」は使えないようです。

Cell すべて消す = Clear

~.ActiveWorkbook.ActiveSheet.Range("A2").Clear

セルの値、背景色などの書式設定を消します。

参考サイト:

Cellの値をクリップボードまたは別のセルに移動 = Cut()

~.ActiveWorkbook.ActiveSheet.Range("A2").Cut("c2") 

Cut() 引数なし=クリップボードに CTRL+x と同じ
Cut(“D2”) = D2に値移動

Cell 罫線で囲む   BorderAround(線の種類,太さ,色)

よく理解できてません

.ActiveWorkbook.ActiveSheet.Range("A3").BorderAround(4,2,3) 

線の種類:

1 Continuous line.
-4115 Dashed line.
4 Alternating dashes and dots.
5 Dash followed by two dots.
-4118 Dotted line.
-4119 Double line.
-4142 No line.
13 Slanted dashes.

太さ:

名前説明
xlHairline1Hairline (thinnest border).
xlMedium-4138Medium.
xlThick4Thick (widest border).
xlThin2Thin.

色:

コメント

タイトルとURLをコピーしました