Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1901 / 2272 ツリー ←次へ | 前へ→

【4634】AccessVBAからExcelの標準モジュールを呼... VBA初心者 05/3/17(木) 22:44 質問[未読]
【4635】Re:AccessVBAからExcelの標準モジュールを呼... Gin_II 05/3/17(木) 23:24 回答[未読]
【4717】Re:AccessVBAからExcelの標準モジュールを呼... VBA初心者 05/3/24(木) 14:47 質問[未読]
【4726】Re:AccessVBAからExcelの標準モジュールを... 小僧 05/3/24(木) 16:45 回答[未読]
【4731】Re:AccessVBAからExcelの標準モジュールを... VBA初心者 05/3/24(木) 19:37 お礼[未読]

【4634】AccessVBAからExcelの標準モジュールを呼...
質問  VBA初心者  - 05/3/17(木) 22:44 -

引用なし
パスワード
   Accessで抽出したデータをExcelに貼り付け、それをグラフ化するモジュールをExcelのVBAで作成しています。
Excelへのデータ出力まではできますが、モジュールが呼び出し出来ていないようで、グラフができません。
手動でマクロを実行するとうまくいくのですが。。。

Set wkb = xlsApp.Workbooks.Open(Filename:=xlsFile)
wkb.Excel4MacroSheets.Application.ExecuteExcel4Macro ("Sheet1.マクロ名")

↑こんなふうに書いています

また、これを含め・・・
++++++++++++++++++++++++++++++
Set Rs1 = db.OpenRecordset(StrSql).Clone
Set xlsApp = CreateObject("Excel.Application")

xlsFile = ファイルA 'Excel File

Set wkb = xlsApp.Workbooks.Open(Filename:=xlsFile)


wkb.Worksheets("Sheet1").Range("A1") _
              .CopyFromRecordset Data:=Rs1


wkb.Excel4MacroSheets.Application.ExecuteExcel4Macro ("Sheet1マクロ名")

Call wkb.Application.ActiveWorkbook.SaveAs _
      (Filename:=ファイルB)

Let xlsApp.Visible = True
Let xlsApp.UserControl = True

Set wkb = Nothing
Set xlsApp = Nothing
Set Rs1 = Nothing
++++++++++++++++++++++++

このように実行すると、プロセス[EXCEL.EXE]がずっと残ってしまいます。
何か足りないものがあるのでしょうか?
おしえてください。
よろしくお願いします。

以上

【4635】Re:AccessVBAからExcelの標準モジュールを...
回答  Gin_II  - 05/3/17(木) 23:24 -

引用なし
パスワード
   > wkb.Excel4MacroSheets.Application.ExecuteExcel4Macro ("Sheet1マクロ名")
>
> Call wkb.Application.ActiveWorkbook.SaveAs _
>       (Filename:=ファイルB)

ここらへんがおかしいような。。

Application = xlsApp ですよね。

wkb.Excel4MacroSheets.ExecuteExcel4Macro ("Sheet1マクロ名")

とかじゃないのかな?
#見検証です。

【4717】Re:AccessVBAからExcelの標準モジュールを...
質問  VBA初心者  - 05/3/24(木) 14:47 -

引用なし
パスワード
   回答ありがとうございます。
wkb.Excel4MacroSheets.Application.ExecuteExcel4Macro (マクロ名)

としてみましたが実行されてくれませんでした。(Applicationといれないとエラーになったため入れました)

ちなみに、
wkb.Application.Run (マクロ名)

これでもだめです。
エラーになるわけではないのに、実行されていない、という感じです。

どちらも、開いているエクセルでマクロを実行すると、うまくいきます。
引き続きご教授よろしくお願いします。


>> wkb.Excel4MacroSheets.Application.ExecuteExcel4Macro ("Sheet1マクロ名")
>>
>> Call wkb.Application.ActiveWorkbook.SaveAs _
>>       (Filename:=ファイルB)
>
>ここらへんがおかしいような。。
>
>Application = xlsApp ですよね。
>
>wkb.Excel4MacroSheets.ExecuteExcel4Macro ("Sheet1マクロ名")
>
>とかじゃないのかな?
>#見検証です。

【4726】Re:AccessVBAからExcelの標準モジュールを...
回答  小僧  - 05/3/24(木) 16:45 -

引用なし
パスワード
   ▼VBA初心者 さん:
横から失礼いたします。

>++++++++++++++++++++++++++++++
>Set Rs1 = db.OpenRecordset(StrSql).Clone
>Set xlsApp = CreateObject("Excel.Application")
>
>xlsFile = ファイルA 'Excel File
>
>Set wkb = xlsApp.Workbooks.Open(Filename:=xlsFile)
>
>
>wkb.Worksheets("Sheet1").Range("A1") _
>              .CopyFromRecordset Data:=Rs1
>
>
>wkb.Excel4MacroSheets.Application.ExecuteExcel4Macro ("Sheet1マクロ名")
  ↓
xlsApp.Run xlsApp.ActiveWorkbook.Name & "!Sheet1.マクロ名"

>
>Call wkb.Application.ActiveWorkbook.SaveAs _
>      (Filename:=ファイルB)
  ↓
Call xlsApp.ActiveWorkbook.SaveAs _
       (FileName:=BFile)

>Let xlsApp.Visible = True
>Let xlsApp.UserControl = True
>
追加
xlsApp.Quit

>Set wkb = Nothing
>Set xlsApp = Nothing
>Set Rs1 = Nothing
>++++++++++++++++++++++++

こんな感じでいかがでしょうか?

【4731】Re:AccessVBAからExcelの標準モジュールを...
お礼  VBA初心者  - 05/3/24(木) 19:37 -

引用なし
パスワード
   ▼小僧 さん:

回答ありがとうございます。
教えていただいた通りやってみましたが、もともとマクロを含んだあるファイルを開いてそれを別名保存して実行しているせいか、

> xlsApp.Run xlsApp.ActiveWorkbook.Name & "!Sheet1.マクロ名"

この部分で、見つかりませんといわれてしまいました。

というわけで下記のように実行してみたところ、うまく実行できました。

wkb.Application.Run (wkb.Application.ActiveSheet.マクロ名)

お世話になりましてありがとうございました。


>▼VBA初心者 さん:
>横から失礼いたします。
>
>>++++++++++++++++++++++++++++++
>>Set Rs1 = db.OpenRecordset(StrSql).Clone
>>Set xlsApp = CreateObject("Excel.Application")
>>
>>xlsFile = ファイルA 'Excel File
>>
>>Set wkb = xlsApp.Workbooks.Open(Filename:=xlsFile)
>>
>>
>>wkb.Worksheets("Sheet1").Range("A1") _
>>              .CopyFromRecordset Data:=Rs1
>>
>>
>>wkb.Excel4MacroSheets.Application.ExecuteExcel4Macro ("Sheet1マクロ名")
>  ↓
> xlsApp.Run xlsApp.ActiveWorkbook.Name & "!Sheet1.マクロ名"
>
>>
>>Call wkb.Application.ActiveWorkbook.SaveAs _
>>      (Filename:=ファイルB)
>  ↓
> Call xlsApp.ActiveWorkbook.SaveAs _
>       (FileName:=BFile)
>
>>Let xlsApp.Visible = True
>>Let xlsApp.UserControl = True
>>
>追加
> xlsApp.Quit
>
>>Set wkb = Nothing
>>Set xlsApp = Nothing
>>Set Rs1 = Nothing
>>++++++++++++++++++++++++
>
>こんな感じでいかがでしょうか?

1901 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078230
(SS)C-BOARD v3.8 is Free