Access VBA質問箱 IV

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

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


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

【4966】ACCESSからEXCELのピボットテーブル作成 VBA超初心者 05/4/27(水) 16:06 質問[未読]
【4967】Re:ACCESSからEXCELのピボットテーブル作成 小僧 05/4/27(水) 16:40 回答[未読]
【4968】Re:ACCESSからEXCELのピボットテーブル作成 VBA超初心者 05/4/27(水) 16:55 発言[未読]
【4969】Re:ACCESSからEXCELのピボットテーブル作成 小僧 05/4/27(水) 17:22 回答[未読]

【4966】ACCESSからEXCELのピボットテーブル作成
質問  VBA超初心者  - 05/4/27(水) 16:06 -

引用なし
パスワード
   いつもこちらを拝見し、勉強しております。

何がどうおかしいのか分からないので、ご教授頂けたら幸いです。宜しくお願い
致します。

下記VBにて、ACCESSからEXCELに出力し、同時にピボットテーブル作成迄行っ
ております。

--------------------------------------------------------------------------
Set objexcel = CreateObject("Excel.Application")
objexcel.Visible = True

DoCmd.OutputTo acOutputTable, "XXXXX", acFormatXLS, "\XXXXX.XLS", True

Dim strDataRng As String

strDataRng = ActiveWorkbook.Worksheets("XXXXX").Range("A1").CurrentRegion.Address(, , xlR1C1)
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'XXXXX'!" & strDataRng).CreatePivotTable TableDestination:="", _
TableName:="ピボットテーブル1", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select

ActiveSheet.PivotTables("ピボットテーブル1").PrintTitles = True
ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:=Array("XXXXX", _
"XX", "XXXXX", "XXX", "XXX"), ColumnFields:="XXXXX", PageFields:=Array("XXXXX" _
, "XXX", "XXX", "XXX")
With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("XX")
.Orientation = xlDataField
.Position = 1
End With
With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("XX")
.Orientation = xlDataField
.Position = 2
End With
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("粗利").Orientation = _
xlDataField
ActiveWorkbook.ShowPivotTableFieldList = False
'Application.CommandBars("PivotTable").Visible = False
ActiveSheet.PivotTables("ピボットテーブル1").PivotSelect "'合計 / XX'", _
xlDataAndLabel, True
Selection.NumberFormatLocal = "#,##0_ "
ActiveSheet.PivotTables("ピボットテーブル1").PivotSelect "'合計 / XX':'合計 / XX'", _
xlDataAndLabel, True
Selection.NumberFormatLocal = "\#,##0;\-#,##0"
Range("A5").Select
With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("XXXXX")
.PivotItems("XXXXX").Visible = False
End With
Sheets("Sheet1").Select
Sheets("Sheet1").Name = "XXXXX"
Sheets("XXXXX").Select

strDataRng = ActiveWorkbook.Worksheets("XXXXX").Range("A1").CurrentRegion.Address(, , xlR1C1)
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'XXXXX'!" & strDataRng).CreatePivotTable TableDestination:="", _
TableName:="ピボットテーブル2", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select

ActiveSheet.PivotTables("ピボットテーブル2").PrintTitles = True
ActiveSheet.PivotTables("ピボットテーブル2").AddFields RowFields:=Array("XXXXX", _
"XX", "XXX", "XXX", "XXX"), ColumnFields:="XXX", PageFields:=Array("XXX" _
, "XXX", "XXX", "XXX")
With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("XX")
.Orientation = xlDataField
.Position = 1
End With
ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("XXX").Orientation = _
xlDataField
ActiveWorkbook.ShowPivotTableFieldList = True
ActiveWorkbook.ShowPivotTableFieldList = False
Application.CommandBars("PivotTable").Visible = False
ActiveSheet.PivotTables("ピボットテーブル2").PivotSelect "'合計 / XX'", _
xlDataAndLabel, True
Selection.NumberFormatLocal = "#,##0_ "
ActiveSheet.PivotTables("ピボットテーブル2").PivotSelect "'合計 / XX'", _
xlDataAndLabel, True
Selection.NumberFormatLocal = "\#,##0;\-#,##0"
Range("A5").Select
With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("XX")
.PivotItems("XX").Visible = False
.PivotItems("XX").Visible = False
End With
Sheets("Sheet2").Select
Sheets("Sheet2").Name = "XXX"

Exit_コマンド2_Click:
Exit Sub

Err_コマンド2_Click:
MsgBox Err.Description
Resume Exit_コマンド2_Click

End Sub
--------------------------------------------------------------------------

開発環境は、OS=XP,EXCEL=2002,ACCESS=2000
実際に動かす環境は、OS=98,EXCEL=2000,ACCESS=2000になります。

開発環境にて動作チェックを行ったところ、連続操作(抽出日等の条件を変え、
連続操作)を行った際に「オブジェクト変数またはwithブロック変数が設定され
ていません」のエラーが出力されてしまいます。(1回目の操作終了後、ACCESSを
一旦閉じて、再実行すると、問題ありませんでした)

実際に動かす環境にて動作チェックをしたところ、「オブジェクトは、このプロ
パティまたはメソッドをサポートしていません」とエラーが出力されてしまいま
す(この時は、1回目の操作でNGになります)


出来る限り頑張って、ここまでたどり着けたのですが、どうしても分かりません。初歩的な問題かも知れませんが、大変申し訳ありません。ご教授頂けると幸いです。

宜しくお願い致します。

【4967】Re:ACCESSからEXCELのピボットテーブル作成
回答  小僧  - 05/4/27(水) 16:40 -

引用なし
パスワード
   ▼VBA超初心者 さん:
こんにちは。

コードの詳細までは見ておりませんが気になった事を。

>連続操作(抽出日等の条件を変え、連続操作)を行った際…

このような場合、参照したエクセルの解放が
うまくいってない事が多々あります。

1.ワークブックは閉じているのか。

2.アプリケーションは終了しているのか。

等を確認してみて下さい。

>実際に動かす環境にて動作チェックをしたところ…

低位バージョンに揃えて開発するのが基本なのですが、
職場環境によってなかなかそうはいきませんよね

Excel2002でサポート対象のオブジェクトやメソッドが
Excel2000で用意されていない可能性があります。
コードのどこでエラーになってしまうのかを提示して頂くと
早い回答が得られるかもしれません。


※こちらの掲示板ではマルチポスト(複数の掲示板にまったく同じ話題を
投稿すること)容認されてますが、他の掲示板には禁止となっている所も
もちろんあります。気をつけましょう。

【4968】Re:ACCESSからEXCELのピボットテーブル作成
発言  VBA超初心者  - 05/4/27(水) 16:55 -

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

こんにちは!アドバイス有難うございます。

>連続操作(抽出日等の条件を変え、連続操作)を行った際…
>
>このような場合、参照したエクセルの解放が
>うまくいってない事が多々あります。
>
>1.ワークブックは閉じているのか。
>2.アプリケーションは終了しているのか。

ワークブック、EXCEL共に閉じていますが、ACCESSは
起動させたままです。これだと問題ありますか?


>低位バージョンに揃えて開発するのが基本なのですが、
>職場環境によってなかなかそうはいきませんよね
>
>Excel2002でサポート対象のオブジェクトやメソッドが
>Excel2000で用意されていない可能性があります。
>コードのどこでエラーになってしまうのかを提示して頂くと
>早い回答が得られるかもしれません。

それが。。。黄色く反転していないんです。何でなのか自分でも
分からないのですが。。。

【4969】Re:ACCESSからEXCELのピボットテーブル作成
回答  小僧  - 05/4/27(水) 17:22 -

引用なし
パスワード
   ▼VBA超初心者 さん:
こんにちは。

>ワークブック、EXCEL共に閉じていますが、ACCESSは
>起動させたままです。これだと問題ありますか?

VBAの記述にないと、AccessがExcelを掴んだままになってしまいます。
動作確認ができないので申し訳ないのですが、

>Exit_コマンド2_Click:

の直前に
objexcel.ActiveWorkbook.Close True
objexcel.Quit
Set objexcel = Nothing

を入れれば(おそらく)連続起動は解決できるかと思われます。

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