前回、一太郎の「文書マクロ」はシート毎に独立していて、Sheet1の
「文書マクロ」はSheet2からは見えないということを書いた。
だから、Sheet2からSheet1のマクロを実行することが出来ない。
Sheet2からRunDocumentMacro("シートを追加")とやると
「指定したマクロがありません」というエラーになるのだ。
では修飾詞をつけてRunDocumentMacro("Sheet1.シートを追加")、
あるいはRunDocumentMacro("Sheet1!シートを追加")としたら
どうであろうかと思い足掻いてみたのだが、結局上手く行かなかった。
(●`ε´●):ギブアップか?
【´・ω・`】:この程度で白旗を掲げるはず無いだろ!!
一太郎マクロ初心者は何か打開策はないものかとヘルプを
いろいろ調べてみた。そして次の方法をとることにした。
1.Sheet1のマクロ「シートを追加」をいったんシステムマクロとして複写する。
2.システムマクロ「シートを追加」をSheet2の「文書マクロ」に複写する。
3.システムマクロ「シートを追加」を削除する。
下がそのコードだ。
!!シート名をデフォルトに戻す
%Str=GetSheetCount( )
CurrentSheetItem("Sheet" & %Str)
!!元シートをコピー
SelectAll()
Clip()
!!新規シート追加
PushKeys("#F{DOWN}{DOWN}{DOWN}{DOWN}{DOWN"\\
& "}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}"\\
& "{DOWN}{RIGHT}{ENTER}#N")
!! 文書マクロ "シート追加" をシステムマクロ
!! "シート追加" へコピーする
%moto_name = "シート追加"
%saki_name = "シート追加"
%saki_title = "シート追加"
DuplicateMacro( %moto_name, 2, %saki_name, \\
%saki_title, 1 )
!! システムマクロ "シート追加" を文書マクロ
!! "シート追加" へコピーする
ChangeCurrentSheet( "Sheet" & %Str )
DuplicateMacro( %moto_name, 1, %saki_name, \\
%saki_title, 2 )
!! システムマクロ "シート追加" を削除する
DeleteMacro("シート追加" , 1)
!!新規シートの名前設定
%Str=GetSheetCount( )
CurrentSheetItem("2007年" & %Str & "月")
!!元シートを新規シートに複写
Paste()
!!元のシートの名前を書き戻す
%Str=%Str-1
ChangeCurrentSheet( "Sheet" & %Str )
CurrentSheetItem("2007年" & %Str & "月")
ChangeCurrentSheet( "2007年" &(%Str+1) & "月")
いやあ、本当に一太郎は面白いなぁ!!
パズルみたいだ!!(^。^)
サンプルファイルは下からダウンロードしてください。
コメント