|
▼IROC さん 今日は
>>マクロブックとやらが、いまいち分かりません。
>マクロを記述してあるブックのことです。
>
>
>Book1.xls にマクロを書きます。
> ↓
>Book1.xlsを配布します。
> ↓
>使用者はBook1のSheet1でデータ作成したり、マクロを利用します。
> ↓
>マクロを変更したいです。
>Book1.xlsのマクロを修正しBook1_v1.xlsを作成します。
> ↓
>Book1_v1.xls として配布します。
> ↓
>Book1_v1.xlsに前回配布したBook1.xlsのsheet1をコピーします。
> ↓
>旧Book1.xlsを破棄して、以後、Book1_v1.xlsを使用します。
>
>−−−−−−−−−−−
>
>マクロをアドインブックにするのであれば、Book1.xlaとして配布します。
>アドインブック上のシートは使用できないので、
>使用者はデータブックを作成し、それに対してアドインからマクロ呼んで実行します。
>データブック.xlsとBook1.xlaが分離しているので、
>Book1.xlaのマクロをいくら変更してもデータブックに影響がありません。
ようやく、理解することが出来ました、有難うございます。
つまり、マクロだけ更新したシートを送り。
シートのデータは、そのマクロだけ更新したシートにコピーする。
ということですね。
▼ichinose さん 今日は
Sub main()
ret = addcode(ThisWorkbook.Path & "\90.txt", ThisWorkbook, "addmdl")
If ret = 0 Then
msgbox "挿入成功"
'Application.Run "macro1"
Else
msgbox Error(ret)
End If
End Sub
'=======================================================================
Function addcode(flnm As String, wk As Workbook, Optional mdnm As String = "", Optional prnm As String) As Long
' 機能:指定されたテキストファイルから、指定されたブックにコードを追加又は、書き換える
' input : flnm---コードが書かれたテキストファイルのパス名
' wk-----コードを書き込むブックオブジェクト
' mdnm---書き換える、又は、追加するモジュール名(追加の場合は、標準モジュール)
>' 指定されたモジュール名があれば、書き換え、なければ追加
>' prnm---書き換えるプロシジャー名
> On Error Resume Next
> Dim vbcp As Object
> With wk.VBProject
> Set vbcp = .VBComponents(mdnm)
> If Err.Number <> 0 Then
> Set vbcp = .VBComponents.Add(1)
> If mdnm <> "" Then vbcp.Name = mdnm
> Else
> If prnm <> "" Then
> Err.Clear
> stln = vbcp.CodeModule.ProcStartLine(prnm, 0)
> edln = vbcp.CodeModule.ProcCountLines(prnm, 0)
> vbcp.CodeModule.DeleteLines stln, edln - stln + 1
> End If
> End If
> Err.Clear
> vbcp.CodeModule.AddFromFile flnm
> End With
> addcode = Err.Number
> On Error GoTo 0
>End Function
>上記コードでテキストファイル中のコードを標準モジュールに
>読み込みます。
申し訳ないのですが、このマクロを実行したとき、
msgbox Error(ret) のところが実行されてしまいます。
どうすれば、いいのでしょうか?
|
|