Results of 1 - 1 of about 2421 for ピボットテーブル (0.004 sec.)
- [[20200121175436]]
- #score: 4769
- @digest: 351c3c25263cc6a1ee676f6b6b4ec17b
- @id: 82028
- @mdate: 2020-01-24T03:20:52Z
- @size: 7109
- @type: text/plain
- #keywords: 込フ (30077), 総勘 (25864), 定元 (17280), import (16802), changepivotcache (9146), 取込 (8701), 元帳 (7720), 勘定 (7607), み用 (7088), 用") (5961), 帳") (5889), refresh (5521), ル,* (5489), querytables (4818), pivottables (4609), ーブ (4431), テー (4311), ス= (4078), pivotcaches (4056), sourcetype (4027), ルパ (3655), トテ (3333), ブル (3325), 広が (3303), ンポ (2578), り込 (2569), ピポ (2479), ファ (2398), ピボ (2242), csv (2225), getopenfilename (2204), 接続 (2185)
- 『マクロでcsvの取り込みからピポットテーブルの更新までを自動化』(あやとん)
マクロを使い以下の作業を自動化出来ないでしょうか? 1つのbookにcsvファイルを取り込む用シート1とその取り込んだデータをテーブル化し、ピポットテーブルを挿入したシート2があります。 デスクトップに落としたcsvファイルをbookの取込用シートに転記し、ピポットテーブルを更新するまでの作業をマクロで自動化できないでしょうか? また、この作業を繰り返し行うのですが、前に取り込んだデータを削除し、新規で取り込むようにしたいです。 色々試したのですが、csvファイルを取り込むと前のデータは消され、新しいデータに変わるのですが、マクロを実行するたびにテーブルの範囲だけがどんどん広がり重くなっていきます。 テーブルの範囲もデータのある行まで自動で調整されないのでしょうか? < 使用 Excel:Excel2016、使用 OS:Windows10 > ---- >色々試したのですが どのようなことを試しましたか? >マクロを実行するたびにテーブルの範囲だけがどんどん広がり重くなっていきます。 コードの提示がないので想像ですが、データをクリアしたあと、【挿入】してませんかね? 結果、どんどんデータ範囲が広がっているとか… とりあえず、個人情報につながるようなデータは隠した上でコードを提示して、皆さんに添削を求めてみてはどうでしょうか? (もこな2) 2020/01/21(火) 18:33 ---- コードですが会社にデータがありますのでまた明日載せますね。 おっしゃる通りテーブルの2行目からクリアして新しく貼り付けるようにきています。 (あやとん) 2020/01/21(火) 19:46 ---- >マクロを実行するたびにテーブルの範囲だけがどんどん広がり重くなっていきます。 テキストファイルのインポートの機能を使って、 横方向に列がどんどん増えますか? それなら、設定を変えるといいと思います。 どの設定かは忘れました^^; テーブルを設定したら、テキストファイルとの接続が切れるので一工夫が必要なようです。 テーブルにする必要があるのですか? ピボットテーブルの更新やデータのインポートの更新とは関係ない気がしますが? (まっつわん) 2020/01/21(火) 22:13 ---- まっつわん様 テーブル範囲の行が大量に増えてしまいます。 取り込むCSVファイルのデータの行数が毎回違うのでテーブルにすれば自動で範囲を合わせてくれると考えた次第です。他にも簡単な方法があれば知りたいです。 ちなみに作成したコードですが下記になります。 ネットに出てたのを参考に作成しました。 Sub 取り込み() Dim A_Sheet Dim Csv_Import_File A_Sheet = ActiveSheet.Name Csv_Import_File = Application.GetOpenFilename("CSVファイル,*.csv") If Csv_Import_File = "False" Then Exit Sub ThisWorkbook.Sheets("取り込み用").Range("A2:ZZ100000").ClearContents With Workbooks.Open(Csv_Import_File) .Sheets(1).Cells.Copy ThisWorkbook.Sheets("取り込み用").Range("A1") .Close 'CSVファイルを閉じる' End With Worksheets("総勘定元帳").Activate ActiveSheet.PivotTables("ピボットテーブル1").PivotCache.Refresh End Sub 添削お願いします。 (あやとん) 2020/01/22(水) 12:24 ---- ■1 .Sheets(1).Cells.Copy ThisWorkbook.Sheets("取り込み用").Range("A1") なので、【挿入】ではないですね。 そうなると、私のスキルだと「テーブルの範囲だけがどんどん広がる」原因はちょっと分かりません。 ■2 質問の解決とは関係ないでしょうけど「csv」とのことなので、外部データのインポート「QueryTables.Add」で取り込んだ方が良くないですか? ■3 問題があるわけではありませんが、提示されたコードですと「A_Sheet」「Csv_Import_File」いずれも型の指定がないのでValiant型になってます。 さらに「A_Sheet」は使っていません。 ■4 上記を踏まえて (1) 取り込むcsvファイルをユーザーに指定してもらう (2) 「取り込み用」シートのタイトル行以外をクリアする (3) 〃 のA2セルを起点としたセル範囲に、指定したCSVファイルの2行目から取り込む (4) 〃 のA1が含まれる表のセル範囲を取得する (5) 「総勘定元帳」シートの「ピボットテーブル1」のソースを(4)の範囲に置き換える と考えてみると、 Sub さんぷる() Dim 取込ファイルパス As String Dim MyRNG As Range 取込ファイルパス = Application.GetOpenFilename("CSVファイル,*.csv") If 取込ファイルパス = "False" Then Exit Sub Stop ' ←ブレークポイントの代わり With ThisWorkbook.Worksheets("取り込み用") '▼既存データのクリア .UsedRange.Offset(1).Clear '▼csvファイルを取り込む With .QueryTables.Add(Connection:="TEXT;" & 取込ファイルパス, Destination:=.Range("A2")) .TextFileCommaDelimiter = True ' カンマ区切り .RefreshStyle = xlOverwriteCells ' セルに上書き .TextFileStartRow = 2 'データの読込開始行をセット .Refresh ' データを表示 .Delete ' CSV との接続を解除 End With Set MyRNG = .Range("A1").CurrentRegion End With ThisWorkbook.Worksheets("総勘定元帳").PivotTables("ピボットテーブル1").ChangePivotCache _ ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="取り込み用!" & MyRNG.Address) End Sub のような感じで行けそうに思います。 実データが手元にありませんので本当に成功するかは不明ですが、とりあえず↑をステップ実行して動きを確認しつつ「テーブルの範囲だけがどんどん広がる」現象が再現されるか確認してもらえませんか? (もこな2) 2020/01/22(水) 16:56 ---- もこな2様 ありがとうございます。 ご提示いただきだいたコードでうまく行きました! 助かりました! (あやとん) 2020/01/23(木) 21:38 ---- >うまく行きました! う〜ん、そうなるとなんで、テーブルの範囲が広がっちゃってたんですかね・・・・ 怪しいのは「PivotCache.Refresh」ですけど、普段ピボットテーブルをマクロで操作しないので、私にはよく分かりません。 また、提示したコードを見直したらコメント付け忘れていた部分があったのとRange型変数を使ってて分かりづらいかなと思う部分があったので↓に訂正します。 Sub さんぷる_改() Dim 取込ファイルパス As String Dim データ範囲 As String 取込ファイルパス = Application.GetOpenFilename("CSVファイル,*.csv") If 取込ファイルパス = "False" Then Exit Sub With ThisWorkbook.Worksheets("取り込み用") '▼既存データのクリア .UsedRange.Offset(1).Clear '▼csvファイルを取り込む(外部データのインポート) With .QueryTables.Add(Connection:="TEXT;" & 取込ファイルパス, Destination:=.Range("A2")) .TextFileCommaDelimiter = True ' カンマ区切り .RefreshStyle = xlOverwriteCells ' セルに上書き .TextFileStartRow = 2 'データの読込開始行をセット .Refresh ' データを表示 .Delete ' CSV との接続を解除 End With '▼データ範囲をシート名も含めて文字列で取得する データ範囲 = Split(.Range("A1").CurrentRegion.Address(External:=True), "]")(1) End With '▼ピボットテーブルのデータソースを変更 ThisWorkbook.Worksheets("総勘定元帳").PivotTables("ピボットテーブル1").ChangePivotCache _ ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=データ範囲) End Sub (もこな2) 2020/01/24(金) 12:20 ...
-
http://www.excel.studio-kazu.jp/wiki/kazuwiki/202001/20200121175436.txt
- [detail]
- similar
PREV
NEXT
Powered by
Hyper Estraier 1.4.13, with 97012 documents and 608128 words.
訪問者: