- ベストアンサー
アクセスVBAからエクセルの操作
- アクセスVBAを使用してエクセルの操作方法について質問します。
- エクセルへのデータ出力時に毎月のデータ件数が異なるため、VBAでピボットテーブルを自動作成する方法を教えてください。
- 現在のVBAではデータ件数が固定なので使えません。どの部分を修正すればよいでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
私は、少し、誤解していた部分があったのですが、最初にご質問で書かれたコードは、Excelの自動記録マクロのもので、これをAccessに利用できないか、という類の内容だと思います。 ActiveWorkBook は、Excel側のもので、Access 側のものではありません。ExcelのApplicationのオブジェクトとブックのオブジェクトを作って、それからコントロールさせます。 >アクセス側からエクセルに出力させた際、 Access のVBAのコードで、Excelを開けたり、データを出力するコードはおできになっているのですか?それを、教えていただきたいのですが。 そうでないのでしたら、Access からのコントロールは止めてしまって、そのまま、#1 さんのおっしゃるように、後は、Excel側に任せてしまう方法ぐらいしかないのですが。 もちろん、私のお教えした部分も生きます。
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
>ほとんどエクセルから貼り付けたものでして、一体何の処理をしているのかが、さっぱりでして。。。 それで、Access 側のモジュールに貼り付けて、とりあえず動いているのですか? そうでないなら、Access側で、ピボットテーブルを作ってしまったほうが早いのではありませんか? 内容的には、ほぼ同じでしょうから。 唐突に、 ActiveWorkbook.PivotCaches.Add.... と、出てきていますが、下記の場合は、一応、先の回答は、以下のように書き換えるのですが……。 '-------Sub ○○○ --------------- Dim strDataRng As String ・ ・ '(ワークブックがOpenされて) strDataRng = ActiveWorkbook.Worksheets("受注データ(確定)").Range("A1").CurrentRegion.Address(, , xlR1C1) ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "'受注データ(確定)'!" & strDataRng).CreatePivotTable TableDestination:="", _ TableName:="ピボットテーブル1", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select ・ ・ '------End Sub ---------------
補足
有難うございます。早速書き直してみました。 実行をしますと、実行時エラー1004「worksheetクラスのpivottableプロパティを取得できません」のエラーが出てしまいました。 デバッグをしてみたところ、下記構文でエラーになっているようです。 ActiveSheet.PivotTables("ピボットテーブル.PrintTitles = True 教えて頂いた構文の直ぐ下に記述しているのですが、何か問題があるのでしょうか? お手数ですが、宜しくお願い致します。
- Wendy02
- ベストアンサー率57% (3570/6232)
変わるところは、以下だけですか? '受注データ(確定)'!R1C1:R7231C31" strDataRng = Worksheets("受注データ(確定)").Range("A1").CurrentRegion.Address(, , xlR1C1) データソートには、"'受注データ!" & strDataRng とでもすればよいのでは?
補足
有難うございます。 教えて頂いた部分を変更したいのですが、なにぶんVB初心者な者でして、どこをどのように変えたら良いのかが。。。先程私が書いたVBも。ほとんどエクセルから貼り付けたものでして、一体何の処理をしているのかが、さっぱりでして。。。 お手数でなければ、教えて頂きたいのですが。
- VT250F
- ベストアンサー率30% (26/84)
アクセスVBAですべてさせようとするのも手ですが、 アクセスはエクセルのVBAを起動するだけで、 後はエクセルVBAにさせると言う手もあります。 エクセルでツール-マクロの記録で、 データの一番最後に位置づけるやり方を、 VBAにしてみると、ある程度類推できると思います。 きちんとVBAにしてくれない場合もあるので、 マクロのヘルプを見てみましょう。
補足
有難うございます。 私、正直VB初心者で、何がなんだか、さっぱり分からない状態でVBを書いています。先程のも、エクセルからそのまま貼り付けたものでして。。。 何をどのように処理したら良いのか、さっぱり??な状態です。 お手数でなければ、教えて頂きたいのですが。。。
お礼
大変参考になりました。有難うございました。 今後も色々と勉強していこうと思っております。