AppleScriptにて Excelシートを追加・削除・編集 + VBEウィンドウサイズ変更をVBAで(表示位置も)! AppleScript [03]

AppleScript[03](CatchImage)

AppleScript [03] AppleScript にて、 Excel を操作するサンプル

 (VBAと比べると一部しか操作できないと思うが)Excel から呼び出した AppleScript にて、「Excelシートの追加・削除・編集」も可能!

・Excel2008 for Mac 以降 MSからのドキュメント提供は無いが、現状も利用可能!( Excel2008 はVBA未サポートのため、AppleScript を推奨 )
・テキストデータの場合 改行コードにCRLFを挟んでクリップボードにセットすれば、「 Excel の Worksheet.Paste メソッド 」利用でシートに簡単に貼り付けできる!


 【おまけ】VBEウィンドウの表示&リサイズを(ブックを開いた際に)行なう方法! 

マルチモニタ(ディスプレイ)環境でも何回か調整すれば、VBAにてモニタ指定を含め「任意の位置&サイズ」で VBE (Visual Basic Editor) 統合開発環境ウィンドウを表示できる!


 2021/09/07  Windowsにて実行した場合、座標をピクセルからポイントに変換するVBAコードに書き換えました! 「Module1」内の VBAコード(3つのプロシージャ)を差し替えてご利用ください。


 まず、Excel メニューバーの [ヘルプ] - [更新プログラムのチェック] にて、適用されていないアップデートがあれば行ってください。


 【おまけ】VBEウィンドウの表示&リサイズを(ブックを開いた際に)自動で行なう方法! 

 VBAでウィンドウ位置を指定する単位として、 Mac では「ピクセル(ドット、つまり発光点の数)」指定ですが、 Windowsでは「ポイント(1/72インチ、約0.35ミリ)」指定でした! コロっと忘れてました。 ごめんなさい。
 それとも、Mac環境だと 1ピクセル = 1ポイント なのかな?
「1920 x 1080」ピクセルのフルHDテレビの場合、21.5インチと43インチのテレビでは本来ピクセルの大きさは異なるはずですが、Windows環境では 1インチ = 72ポイント = 96ピクセル つまり、1ピクセル = 0.75ポイント と「基準のピクセルの大きさ」が決まっているそうです。 (以下がその換算式)
  ポイント数値 = ピクセル数値 * 0.75  ex) 1920ピクセル = 1440ポイント
  ピクセル数値 = ポイント数値 / 0.75  ex) 1080ピクセル = 810ポイント
 2021/09/07  Windowsにて実行した場合、座標をピクセルからポイントに変換するVBAコードに書き換えました! 
「Module1」内の VBAコード(3つのプロシージャ)を差し替えてご利用ください。

 手作業を自動化しただけだが、(毎回行う人もいると思うので) VBA学習者にとっては超絶便利なはずだ。 VBAコードのみで実現しているため、Mac Windows を問わず動作するはず!
 ただし、.xlsm ブック毎に以下の3つのプロシージャを挿入する必要がある。 Excelブック保存後は以降、そのExcelブックを開いた際に【VBEウィンドウの表示&リサイズ】が自動で行われる。
 また、ResizeVbeWindow() 内で Top と Left 両方を適切な値に変更すれば、(モニタ指定も含めて)VBEウィンドウの表示位置も設定 可能。
 (注) TopLeft 両方の適切な値をテストして見つけるまでは、4つのプロシージャが必要

 万が一 VBEウィンドウが表示されなくなった場合は、マクロを無効にして開いても VBEウィンドウを開いてコードの編集のみはできるため 対処可能だ。  サブモニタ(ディスプレイ)を外した場合なども含め TopLeft に代入するピクセル値を 適切な値に変更すれば良い。

 (VBE表示後に)もちろん手動で行うことも可能で、その場合 Workbook_Open() イベントプロシージャ のコード挿入は不要で、(通常)「Module1 」コードウィンドウ内に挿入した イベントプロシージャ を「イミディエイト ウィンドウ」から呼び出せば良い! call aaa とかで簡単に呼び出せるよう、挿入したイベントプロシージャ名を変更すると楽チンだ! (通常 の意味は、標準モジュール内に イベントプロシージャ を挿入すれば「イミディエイト ウィンドウ」から呼び出し可能なため...)

 Workbook_Open() イベントプロシージャ 利用で、VBEウィンドウを開く 

AppleScript[03] Png01

 Workbook_Open() イベントプロシージャ に記述すれば Excelの当ブックを開いた際にそのコードが実行されるが、VBE (Bisual Basic Editor) を開く1行のコードは(何も考えず)以下のコードを貼り付けて欲しい!

  Application.VBE.Windows(1).SetFocus

 VBEオブジェクトが保有する(要素番号1)のウィンドウに フォーカスを与えるというコードだが、 Application.VBE.MainWindow.SetFocus だと動作しないことは確認済み。 (きちんと説明できないが)このコードが実行されると、VBE ウィンドウが開く事だけは間違いない。 VBEウィンドウを開く方法はいくつもあるが、[Excel]メニュー[ツール]-[マクロ]-[Bisual Basic Editor] もしくは [command or alt]+[F11] の(実質)代替コード。
 ご存知の通り VBEウィンドウは Windows環境を踏襲して Excelを起動する度に毎回最大画面で 開く。 それも未だにタブ未使用で旧式の「マルチドキュメントインターフェース」で...
 (筆者は特に 4Kテレビをメインモニタとして利用しているため)VBEウィンドウのリサイズを毎回行うのがとても面倒で、VBAコードで行なうことにした。 10年前の小さなモニタなら最大画面で開いても良いと思うが、そろそろ前回のサイズと位置を記憶して欲しいものだ。 ついでに タブ・インターフェース への改良も...


(0) 対象のExcelブックが .xlsm(マクロ機能が有効なブックのファイル)形式で保存されていることを確認し、[command or alt]+[F11] にて VBE ウィンドウを開く。
(1) [VBE]-[プロジェクトウィンドウ] 内の Module1 の上でダブルクリックすると、「Module1 」コードウィンドウを表示。
(2) コードウィンドウ内で、以下のコードを挿入。 ピクセル指定のため、お使いのモニタ(ディスプレイ)を考慮して Width(幅) と Height(高さ) の設定値を変更すること。
 【注】正確には、「プロジェクトウィンドウ」ではなく 「プロジェクト エクスプローラー」と呼ばれている


Rem Mac 以外(Windows)で実行した場合、座標をピクセルからポイントに変換する
Function WindowPosition(position As Double) As Double
    #If Mac Then 'Macにてコンパイル(実行)した場合
        'Application.Versionでも区別可能?    If Val(Application.Version) >= 16 Then
        #If MAC_OFFICE_VERSION >= 16 Then 'Office2019 for Mac 以降の処理
            WindowPosition = position 'pixel
        #ElseIf MAC_OFFICE_VERSION >= 15 Then 'Office2016 for Macの処理
            WindowPosition = position 'pixel
        #Else 'Office2011 for Macの処理
            WindowPosition = position 'pixel
        #End If
    #Else 'Windows OS の処理(座標をピクセルからポイントに変換)
        WindowPosition = position * 0.75 'point
    #End If
End Function

Rem 「イミディエイト ウィンドウ」から、call resizevbewindowtest にてテストする!
Rem テストして希望位置に表示されたら、ResizeVbeWindow()内に.Topと.Left計2行をコピー
Sub ResizeVbeWindowTest()
    With Application.VBE.MainWindow
        .Height = WindowPosition(1040)
        .Width = WindowPosition(1018)
        .Top = WindowPosition(1080 * 2) '主モニタが4K(3840x2160)ピクセルで、副モニタに表示
        .Left = WindowPosition(985) '最初は1920(4Kの中央辺り)を指定後、再調整
    End With
End Sub

Rem ピクセル単位で、VBEのウィンドウサイズを変更
Rem 「イミディエイト ウィンドウ」から、call resizevbewindow 可
Sub ResizeVbeWindow()
    With Application.VBE.MainWindow
        .Height = WindowPosition(1040)
        .Width = WindowPosition(1018)
    End With
End Sub

(3) [VBE]-[プロジェクトウィンドウ] 内の ThisWorkbook の上でダブルクリックすると「ThisWorkbook」コードウィンドウを表示。
(4) コードウィンドウ内で、以下のコードを挿入

Rem ① [alt or option]+[F11] の代替操作
Rem ② モジュール(通常、Module1)内で宣言した ResizeVbeWindow() SubをCall
Private Sub Workbook_Open()
    Application.VBE.Windows(1).SetFocus
    Call ResizeVbeWindow
End Sub


 【おまけのおまけ】「イミディエイト ウィンドウ」から以下のVBAコードを実行すると、Excelアプリケーションの バージョン だけでなく Intel あるいは M1 などのOS情報が判ります!(次画面参照)

MsgBox "Application Version= " & Application.Version & vbcrlf & _
"OS情報: " & Application.OperatingSystem
AppleScript[03] Png06


 モニタ(ディスプレイ)が1つの場合は、表示位置( Top と Left )指定も簡単! 

 ソースコードのコメントに書いた通り、「イミディエイト ウィンドウ」から call resizevbewindow にて呼び出し可能なため、Excelを終了する前にテストが必要!

モニタ(ディスプレイ)が一つしか接続されていない環境にて 表示位置( Top(垂直位置)Left(水平位置) )の指定は簡単で、 VBEウィンドウ左上の座標 をどちらもピクセル指定すれば良い。
モニタ(ディスプレイ)左上の座標を原点 0, 0 として...

 ちなみに Sub / Fuction プロシージャ宣言時、Public / Private キーワードを省略すると Public とみなされる。 同一モジュールからの呼び出しのみ許可する場合は Private Sub / Private Function と記述する。

 マルチモニタ(ディスプレイ)環境での 表示位置指定は ちょっと複雑! 

AppleScript[03] Png05

 上記画面で 赤色の点線の部分で囲んだ領域が「仮想スクリーン領域」として MacOS を経由し VBA からも認識されるようだ。 「仮想スクリーン領域」左上の座標が原点 0, 0 となる。
 同一ピクセルサイズのモニタ(ディスプレイ)を複数接続しているのであれば、割と簡単に仮想スクリーン座標を計算できるはずだが、無効な座標を指定すると VBEウィンドウが表示されなくなるため テストは必要!
 テスト専用のプロシージャ ResizeVbeWindowTest() を追加しておいたので、「イミディエイト ウィンドウ」にて TopLeft 設定のテストを行って正常表示を確認後 ResizeVbeWindow() に反映して頂きたい。  ResizeVbeWindow() に反映するまでは、Excel終了後に再度該当のブックを開き直せば、元の位置に表示される。
 なお、 VBAコードにて表示位置を移動した後に「ドラッグ&ドロップ」による移動ができなくなることがあった。 その場合、ResizeVbeWindowTest() のVBAコード利用で移動を行って欲しい。

 上記画面配置にて、筆者が調整した手順を以下に示す。

(0) まずは、ResizeVbeWindowTest() 内で TopLeft を設定し、表示テストを行う!
(1) サブモニタ(ディスプレイ)内を示す Top の値は 4K(3840 x 2160)モニタ直後となるため 最上部の座標として 1080 * 2 を指定。
(2) 筆者の画面配置だと Left の値設定を誤る(無効な値を設定する)と、表示されなくなる。 そのため、中央を示す 1920 をまずは設定。
(3) ResizeVbeWindowTest() を実行し、サブモニタ(ディスプレイ)最上部かつ(ほぼ)中央を VBEウィンドウ左上の座標として表示される事を確認。
(4) 微調整を ResizeVbeWindowTest() にて何度か繰り返し、 TopLeft に設定する値を決定。
(5) .Top.Left 設定の2行を ResizeVbeWindow() にコピー後、Excelを保存して終了。
(6) 以降、該当のブックを開くだけで モニタ指定を含めて 毎回固定位置で VBEウィンドウ が表示され、超絶便利なはず!

 先に示した通り 万が一 VBEウィンドウ が表示されなくなった場合は、 マクロを無効にして開いても VBEウィンドウを開いてコードの編集のみはできる ため、対処可能。(マクロの実行のみ無効なため)



 AppleScript [03] AppleScript にて、 Excel を操作するサンプル 

 Excel2008 (Excel for Mac 2008) にて VBA は未サポートだったため、MSが AppleScript を推奨していた時代があったらしい!
MS解説のPDF文書「excel.pdf」が2021年9月現在 MS DownloadCenter から ダウンロード可能なため、気になる方は「excel AppleScript」でググって頂きたい。 文書を開くと、タイトルは「Excel AppleScript」で、トップページのロゴ部分には「Excel:mac2008」と記述されている。(計67ページの日本語資料)
 以降 (少なくとも Excel for Mac にて)MSから AppleScript に関するリリース文書は存在しないはずだが、現状でも AppleScript を利用して「Excel for Mac」を操作可能!


 (VBAと比べると一部しか操作できないと思うが)Excel から呼び出した AppleScript にて、「Excelシートの追加・削除・編集」も可能! 

(1)  前回  も利用したExcelファイルをマクロを有効にして開き、続いて VBEウィンドウ を開く。

(2) DispArray Subプロシージャ から test7 Subプロシージャまでを記述した Module1 コードウィンドウが表示されていない場合は、「プロジェクト」ウィンドウ内に表示されている Module1 の上でダブルクリックして表示する。

(3) Module1 コードウィンドウ内の末尾( test7 Subプロシージャ 記述の後 )に以下のコードを挿入し、 コンパイル後に Excelファイルを保存

(4) ~/ライブラリ/Application Scripts/com.microsoft.Excel/ フォルダ内に保存する workWithExcel.scpt のソースコードは以下の通り。 コンパイル後に ファイルを保存 したら "スクリプトエディタ"アプリは終了してください。

 上記の操作方法がよく解らない方は、  前々回の投稿  をお読みください。

 VBA、AppleScript 両方のコードに コメントをたくさん記述しておいたので、宜しければ ご覧ください!
 【注】正確には、「プロジェクトウィンドウ」ではなく 「プロジェクト エクスプローラー」と呼ばれている


 以下のVBAコードを末尾に「挿入」する。 (誤って、「置換」操作を行わないこと)


Sub excel1()

    Dim scriptResult As String '    AppleScript 実行結果  (文字列)、区切り文字 LF
    Dim scriptParam As String '     AppleScript パラメータ(文字列)、区切り文字 LF
    
    scriptParam = "dummyString"
    scriptResult = AppleScriptTask("workWithExcel.scpt", "workingWithExcel_1", scriptParam)
    
    MsgBox scriptResult
    
End Sub

Sub excel2()

    Dim scriptResult As String '    AppleScript 実行結果  (文字列)、区切り文字 LF
    Dim scriptParam As String '     AppleScript パラメータ(文字列)、区切り文字 LF
    
    scriptParam = "dummyString"
    scriptResult = AppleScriptTask("workWithExcel.scpt", "workingWithExcel_2", scriptParam)
    
    MsgBox scriptResult
    
End Sub



-- workWithExcel.scpt Ver.1.0 Copyright 2021- ataruchi.
-- [ https://twitter.com/ataruchi ]
--2021/09/03 Ver.1.0



--Test AppleScript's Handler
workingWithExcel_1("dummyString")
--workingWithExcel_2("dummyString")



-- AppleScriptでExcelを操作するサンプル
-- ActiveSheet.UsedRange.Clear を利用して、"AppleScript操作" シート全体をクリア
-- ActiveSheet.Cells.Clear と異なり、ファイルサイズがだんだん大きくなる場合あり
on workingWithExcel_1(paramStr)
  set returnStr to "@Successful@"
  try
    tell application "Microsoft Excel"
      
      activate
      
      --make new document --Book has Sheet1
      --make new workbook --Book has Sheet1
      
      set listSheets to every sheet --sheetのlistを取得
      
      --要素番号「1」「2」 以外のシートを全て削除
      set display alerts to false --確認アラートを「非表示」
      repeat with i from (count sheets) to 3 by -1
        delete (item i of listSheets)
      end repeat
      set display alerts to true --確認アラートを「再表示」
      
      repeat while ((count sheets) < 2)
        make new worksheet at the end of active workbook --Add Sheet2
      end repeat
      
      set listSheets to every sheet --sheetのlistを取得
      select (item 2 of listSheets) --「active sheet」を要素番号で選択(Sheet2)
      --select (sheet "Sheet2" of active workbook) --「active sheet」をシート名で選択
      set name of active sheet to "AppleScript操作" --シート名の変更
      
      --ActiveSheet.Cells.Clear 相当の AppleScript が分からないため、
      --ActiveSheet.UsedRange.Clear を利用
      tell active sheet
        set usedRange to (get address used range) --使ってる範囲を取得
        tell range usedRange --ActiveSheet.UsedRange.Clear
          clear range --全て:range, 値・数式のみ:contents, 書式のみ:formats
        end tell
      end tell
      
      
      --cell or range に値をセット(コメントにて、値の取得も!)
      --「column x of row y」を利用して、値をセットする場合
      repeat with i from 1 to 10
        tell (column 1 of row i) to set value to i --[A1:A10]
      end repeat
      
      repeat with i from 1 to 10
        tell (column i of row 1) to set value to i --[A1:J1]
      end repeat
      
      --単一のセルを指定する場合
      set value of cell "C3" to 111
      set value of cell "E3" to "AppleScriptでExcelを操作するサンプル"
      --tell cell "C3"
      --  clear range --全て:range, 値・数式のみ:contents, 書式のみ:formats
      --  set value to 111
      --  --display dialog (get value)
      --end tell
      
      --横一列のセルを指定する場合 →listを使用
      set value of range "C5:D5" to {{"222", "333"}}
      --display dialog ((get value of range "C5:D5") as string)
      
      --複数行、複数列にまたがった領域のセルを指定する場合 →2次元のlistを使用
      set value of range "C7:E9" to {{"A", "B", "C"}, {"D", "E", "F"}, {"G", "H", "I"}}
      --display dialog ((get value of range "C7:E9") as string)
      
      
      --[A11]セルを選択後、[command]+[V]操作の実行
      tell sheet "AppleScript操作" to paste worksheet destination range "A11"
      
      
      select (item 1 of listSheets) --「active sheet」を要素番号で選択(Sheet1)
      
    end tell
    
  on error
    set returnStr to "@Unsuccessful@" --「(文字列の)返り値」を初期化
    display dialog "★ AppleScriptTask (workingWithExcel_1) ★" & return & return & "   キャンセル あるいは 異常終了" buttons {"10秒で閉じます!"} with icon caution giving up after 10
  end try -- 「キャンセル」ボタン押下時用のエラーハンドリング
  
  return returnStr -- display dialog returnStr as string
  
end workingWithExcel_1



-- AppleScriptでExcelを操作するサンプル
-- "AppleScript操作" シート全体をクリアするため、「シート」削除後に「シート」追加
-- UsedRange.Clear 操作でだんだんファイルサイズが大きくなる場合は、こちらを利用してください!
on workingWithExcel_2(paramStr)
  set returnStr to "@Successful@"
  try
    tell application "Microsoft Excel"
      
      activate
      
      --make new document --Book has Sheet1
      --make new workbook --Book has Sheet1
      
      set listSheets to every sheet --sheetのlistを取得
      
      --要素番号「1」 以外のシートを全て削除
      set display alerts to false --確認アラートを「非表示」
      repeat with i from (count sheets) to 2 by -1
        delete (item i of listSheets)
      end repeat
      set display alerts to true --確認アラートを「再表示」
      
      make new worksheet at the end of active workbook --Add Sheet2
      
      set listSheets to every sheet --sheetのlistを取得
      select (item 2 of listSheets) --「active sheet」を要素番号で選択(Sheet2)
      --select (sheet "Sheet2" of active workbook) --「active sheet」をシート名で選択
      set name of active sheet to "AppleScript操作" --シート名の変更
      
      
      --cell or range に値をセット(コメントにて、値の取得も!)
      --「column x of row y」を利用して、値をセットする場合
      repeat with i from 1 to 10
        tell (column 1 of row i) to set value to i --[A1:A10]
      end repeat
      
      repeat with i from 1 to 10
        tell (column i of row 1) to set value to i --[A1:J1]
      end repeat
      
      --単一のセルを指定する場合
      set value of cell "C3" to 111
      set value of cell "E3" to "AppleScriptでExcelを操作するサンプル"
      --tell cell "C3"
      --  clear range --全て:range, 値・数式のみ:contents, 書式のみ:formats
      --  set value to 111
      --  --display dialog (get value)
      --end tell
      
      --横一列のセルを指定する場合 →listを使用
      set value of range "C5:D5" to {{"222", "333"}}
      --display dialog ((get value of range "C5:D5") as string)
      
      --複数行、複数列にまたがった領域のセルを指定する場合 →2次元のlistを使用
      set value of range "C7:E9" to {{"A", "B", "C"}, {"D", "E", "F"}, {"G", "H", "I"}}
      --display dialog ((get value of range "C7:E9") as string)
      
      
      --[A11]セルを選択後、[command]+[V]操作の実行
      tell sheet "AppleScript操作" to paste worksheet destination range "A11"
      
      
      select (item 1 of listSheets) --「active sheet」を要素番号で選択(Sheet1)
      
    end tell
    
  on error
    set returnStr to "@Unsuccessful@" --「(文字列の)返り値」を初期化
    display dialog "★ AppleScriptTask (workingWithExcel_2) ★" & return & return & "   キャンセル あるいは 異常終了" buttons {"10秒で閉じます!"} with icon caution giving up after 10
  end try -- 「キャンセル」ボタン押下時用のエラーハンドリング
  
  return returnStr -- display dialog returnStr as string
  
end workingWithExcel_2



 Excel「シート全体のクリア(初期化)」を実現する方法! 

AppleScript[03] Png02

 上記画面は 今回「 Module1 コードウィンドウ」末尾に挿入した AppleScript 呼び出し用のVBAコード!
今回の AppleScript は(クリップボードの格納は無く)クリップボードの貼り付け操作を行うため、「イミディエイト ウィンドウ」で call excel1() を実行する前に test1() から test7() の1つを実行して頂きたい!
 なお、scriptParam 文字列は 今回のハンドラーで利用していないため、ダミー文字列をセットしている。

AppleScript[03] Png03

 先に説明しておくが、excel1() と excel2() の2つで実行結果に差異は無く、「シート全体のクリア」を実現する方法が異なるだけだ。 (呼び出しされる両ハンドラーとも それ以外は、完全に同一コード)

 「ActiveSheet.Cells.Clear」に相当する AppleScriptコードを発見できなかったので、excle1() では 「ActiveSheet.UsedRange.Clear」にてシートを初期化。 「.Cells.Clear」と異なり「.UsedRange.Clear」だと Excelファイルのサイズが徐々に増える事があるらしいので、excle2() では 該当シートを削除後にシートを追加して「シート全体のクリア」を(結果としては)実現している。 そのため、excle2() を実行する度に [VBE]-[プロジェクト ウィンドウ](正確にはプロジェクト エクスプローラー)に表示される上から2つ目(要素番号2)の SheetN の数字が Sheet2 から Sheet3, Sheet4... と言ったように数字が増えていく。 シート削除後にシートを追加しているため この結果自体問題は無く、無駄にExcelファイルのサイズが増えることは無いはず。 なお 呼び出しされる両ハンドラーともシートが3つ以上存在する場合、3シートめ以降を無条件削除するコードが含まれている。

 「 Excel の Worksheet.Paste メソッド 」利用で、シートに簡単に貼り付けできる! 

AppleScript[03] Png04

 上記画面は、excel1() Subプロシージャ実行後に、AppleScript にて追加されたExcelシートを表示している。 AppleScript にて Excelシートの「セルの値の参照&値のセット」だけでなく、シートの追加・削除も問題なく可能ということだ。
 今回、「 Excel の Worksheet.Paste メソッド 」を AplleScript から利用できることを確認できた。 前回確認した通り CRLF改行コードを挟んだテキストデータをクリップボードに格納しておけば、同メソッド1つでExcelシートに問題なく貼り付け(Paste)可能。

 つまり、Excel 、AppleScript 間で Excelシート(セルの値)を媒介してテキストデータのやり取りができることを実証できた! 今回は行っていないが、媒介用のシート名を scriptParam文字列 に格納して AppleScriptTask コマンドを実行すれば、相互でテキストデータの参照および格納が可能。 指定のExcelシートが存在しなければシートを追加し、指定のシート名に変更するとか問題なくできることを意味する。 AppleScript実行結果を 指定シートに貼り付けした以降の作業は VBA で処理すれば良い。 Excel操作において ExcelVBA はほぼフルセットでできない事はほとんど無いと思うが、 AppleScript はあくまでもサブセットのため...

 逆に AppleScript は Apple純正アプリのみではなく、「シェルスクリプト」や「Adobe Reader」、「FileMaker Pro」など広範囲に対応していますが、対応範囲がアプリによりけりみたいです。 この辺りの事がもう少し解るようになったら、また記事にまとめようと思います。


 最後に、「AppleScriptからExcelの操作」を纏めた以下のサイトは大変ためになりました。 感謝致します!





 次週は 文字列連結を大量に繰り返すと速度が遅くなるため推奨できない という記述をWebで見かけたため、 文字列listに 「改行コード無しの1行分のテキストデータ」を要素としてどんどん付け加え、最後に改行コードを付加してクリップボード あるいは 文字列に格納する方法に AppleScript を書き換えます。 少しは速くなるのでしょうか?





Macブログ ランキング アイコン
最後まで読んでいただき、ありがとうございます。 また、お越しくださいませ。
// アタル
For follow LINE Reader Group!Subscribe to this blog on Feedly!

Next Post Previous Post
No Comment
Add Comment
comment url