
使用環境は VB2005express ,excel2000 です。
VB6.0からVB2005へコンバートをしているのですが、excelのピボットテーブルの操作のところで
上手くいきません。具体的には、行列のタイトルを書き込むところまでは上手くいったのですが
中身のデータ貼り付けのところがわかりません。
宜しくお願い致します。
【以下VB6.0】 一部抜粋
With xlSheet.PivotTables("テーブル")
.PivotFields("場所").Orientation = xlRowField
.PivotFields("日").Orientation = xlColumnField
’↑ここまではOKですが、以下が上手くいきません。
.AddDataField xlSheet.PivotTables("テーブル").PivotFields("数"), "データの個数 / 数",xlCount
.PivotFields("データの個数 / 数").Function = xlSum
.AddDataField xlSheet.PivotTables("PV_MECH").PivotFields("重量"), "デ
ータの個数 / 重量", xlCount
End With
【以下VB2005】
With BOOK.Worksheets(SHEETNAME).PivotTables("PV_MECH")
.PivotFields("場所").orientation = Excel.XlPivotFieldOrientation.xlRowField
.PivotFields("名").orientation = Excel.XlPivotFieldOrientation.xlRowField
’↑ここまではOKですが、以下が上手くいきません。
'.PivotFields("数") = Excel.XlPivotFieldCalculation.xlPercentOfTotal '×
.PivotFields("数").orientation = .PivotFields("数") '?
No.1ベストアンサー
- 回答日時:
VB から Excel の操作って、VB 側では具体的な処理はしていなくって、Excel.exe に丸投げ
です。何が言いたいかって言うと、VB6.0 と VB2005 で基本的にコマンドは変わらないと
いうことです。
特に
> excel2000
てことは Excel 9.0 Object Library を参照するのだったと思うけど、全く同じライブラリを
使う事になるのでコマンドは全く同じでもいいくらいの話です。
VB が(VB6.0 も VB2005 も)色々と省略できてしまうので分からなくなる人が多いですが、
VB6 の方で省略されている名前空間を VB2005 では Imports で入れてしまうのも手です。
逆に VB6.0 → VB2005 で一番問題になるのが、プロセスが終了しない問題です。
http://hanatyan.sakura.ne.jp/dotnet/Excel08.htm
実害があるので、プログラムが完成してから問題が顕在化して困る人も多いです。
提示のコードではプロセスが残って不思議ではないので、知らないのであれば勉強して
おくべきでしょう。
> 中身のデータ貼り付けのところがわかりません。
コードは分かっているわけだから、何が分からないのかもう少し明確に書くべきでは?
Excel のライブラリで定義されている定数の場所が分からないだけでは?
VB6 の方でコードを右クリックして[定義(D)]に飛ぶとか、もう最初からオブジェクト
ブラウザで検索して調べればいいのでは?
http://hanatyan.sakura.ne.jp/dotnet/Excel03.htm# …
この回答への補足
早速のご回答ありがとうございます。
またプロセスが終了しない件も補足アドバイスありがとうございます
理解不足と説明不足で申し訳ありません。
AddDataをオブジェクトブラウザで 検索したところ 下記ワードが見つかりました。
Excel.XlBuiltInDialog.xlDialogChartAddData
上記文をwith文から外し 文頭にもってきたところ、「式はメソッドではありません」 と出てきます。
次にPivotTableの後ろにもってきたところ、(文法上の?)エラーは無くなりましたが
実行したところ、「公開メンバ 'Excel' は型 'PivotTable' に見つかりませんでした。」
と出てきます。
安易ですが、'EXCEL'を外すと下記のメッセージでした。
公開メンバ 'XlBuiltInDialog' は型 'PivotTable' に見つかりませんでした。
ちなみに、下記のように記述すると一応データの入ったピボットテーブルは表示されます。
.PivotFields("数").Orientation = Excel.XlPivotFieldOrientation.xlDataField '○
Q AddDataField の VB.netでの 使い方がわかりません。
何度も申しわかりませんが宜しくお願い致します。
回答ありがとうございました。
結局力不足で EXCELにマクロを組み込みVBから、そのEXCELマクロを
実行することにしました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAコンボボックスの内容が反映...
-
VBAでアクセスDBからデータの取...
-
VB2010で、選択した系列を最前...
-
エクセルのCSV読み込みについて
-
Excel VBAでフォルダ内の全テキ...
-
『列名 '担当者CD' があいま...
-
VBA 変数名に変数を使用したい。
-
INT64対応のprintf系関数はあり...
-
vba フィルター 複数条件 3つ以...
-
EXCELのVBAでLenB関数について
-
accessでフィールド追加のあと...
-
動的配列VBAについて
-
AccessからExcelへエクスポート...
-
エクセルでメールヘッダーを解...
-
VB6からの移行したいけど、VB.N...
-
ASP.NET 2.0(C#) GridViewのソ...
-
対数変換のついて
-
エクセルのテーブルを解除する...
-
オートナンバー型を変換したい
-
名前'dbOpenDynaset'は宣言され...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# DataTableに最後に追加した...
-
【VB.NET】Excelの最終行までの...
-
【ExcelVBA】値を変更しながら...
-
VBAコンボボックスの内容が反映...
-
COBOL数値転記の仕様
-
XMLでデータとして画像を指定す...
-
VBAでアクセスDBからデータの取...
-
アクセスでウェブ上のデータを...
-
「Nullの使い方が不正です」の...
-
エクセルのCSV読み込みについて
-
【C#】textBoxの指定行のデータ...
-
Excel VBAで1週間毎にカテゴリ...
-
クリスタルレポートでレコード...
-
非同期のプロセス間通信(パイプ...
-
VB2010で、選択した系列を最前...
-
Excel VBAでフォルダ内の全テキ...
-
VB.Net ResetBindings リクエリ
-
エクセル・グラフの 横軸に値を...
-
ListViewで表示されたデータの...
-
フォームからのデータの受け渡...
おすすめ情報