
使用環境は 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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
- Excel(エクセル) Power Query でのデータの一括修正について 2 2022/05/10 02:00
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Excel(エクセル) Excel同士のデータの突合 3 2023/08/07 16:34
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) Excel 2019で質問があります。 計測器のデータをExcelで記録したんですが、1秒刻みで記録 4 2022/09/07 22:46
- 会計ソフト・業務用ソフト Excelで売上げデータの中の任意の商品の合計を出したい 3 2023/01/18 18:19
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- Excel(エクセル) Excelに文字データのみを貼り付けたい 8 2023/05/03 15:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS2010で直近の日付を取得...
-
COBOL数値転記の仕様
-
【VB.NET】Excelの最終行までの...
-
T-SQL 一件のみのデータ取得に...
-
Python 繰り返し文による出力方法
-
VBA 重複データの削除方法
-
Smartyのプラグインについて
-
TextBox内の改行
-
ユーザーフォームがエラーにな...
-
エクセルのセル最終行取得
-
UNIX C メモリ領域
-
エクセル重複チェックをしなが...
-
エクセルVBAで時計のリアルタイ...
-
ActiveReportでデータが0件の場...
-
別ブックのデータベースを検索...
-
DataGridで選択した行をクリッ...
-
ストアアプリ開発 C# ListView...
-
配列の中の最大値とそのインデ...
-
エクセルマクロで文字列にメタ...
-
VBA 変数名に変数を使用したい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# DataTableに最後に追加した...
-
【C#】textBoxの指定行のデータ...
-
VBAコンボボックスの内容が反映...
-
VBAでアクセスDBからデータの取...
-
【VB.NET】Excelの最終行までの...
-
XMLでデータとして画像を指定す...
-
VB2010で、選択した系列を最前...
-
Excel VBAで1週間毎にカテゴリ...
-
COBOL数値転記の仕様
-
【ExcelVBA】値を変更しながら...
-
非同期のプロセス間通信(パイプ...
-
「Nullの使い方が不正です」の...
-
エクセルのマクロ コンボボッ...
-
ExcelVBAで戻り値を返すには
-
Excel VBAでフォルダ内の全テキ...
-
ListViewで表示されたデータの...
-
クリスタルレポートでレコード...
-
Excel VBA で日付を4ケタの数値...
-
ActiveReportのdetailをデータ...
-
アクセスでウェブ上のデータを...
おすすめ情報