質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

1817閲覧

マクロを含むxlsファイルの軽量化

yoshi23s

総合スコア3

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2023/04/10 03:02

編集2023/04/11 06:55

実現したいこと

マクロを使用するxlsファイルの軽量化

前提

マクロを使用するごとに、増えるデータ量のわりにファイル容量が大きくなり、動きが遅くなっています。

重たくなるファイルはxlsファイルで、他のCSVファイルのデータを読込し、数値計算(読み込んだCSVデータの単価と数量をかけ、金額を出力)や、
読み込んだデータの中に、xlsファイル内別シートのマスタと同一データがあれば、マスタデータを参照し書き換えるなどの処理をするVBAを使っています。

xlsmファイルにしない理由としては、連携しているAccessファイルがあり、xlsm形式にするとAccessがなぜか動作しなくなるため(ここも問題なのですがひとまずxlsファイルで継続して使用することになり)、xlsファイルを使い続けています。

発生している問題・エラーメッセージ

マクロ実行後のファイル容量の増加

VBAの場合は、設定によりますが、コードの中間言語が保存され、修正されたあとに再び上書きされずに保存されるので、サイズが膨らんでいく、と別サイトでみたのですが、具体的な解決策がわかりません。

該当のソースコード

VBA

1 2'読込した出荷シートにCSVファイルをインポートする 3Sub 出庫データ読込() 4 Dim FilePath As String 5 Dim lastRow As Integer 6 Dim lastcol As Long 7 Dim rng As Range 8' Dim Sheets("読込した出庫") As Worksheet 9 Dim cell As Range 10' Set Sheets("読込した出庫") = Sheets("読込した出庫") 11 12 Sheets("読込した出庫").Cells.Clear 13 FilePath = Application.GetOpenFilename("CSV Files (*.csv), *.csv", 1, "Select the CSV file", "Open", False) 14 If FilePath = "False" Then Exit Sub 15 With Sheets("読込した出庫").QueryTables.Add(Connection:="TEXT;" & FilePath, Destination:=Sheets("読込した出庫").Range("a1")) 16 .TextFileParseType = xlDelimited 17 .TextFileCommaDelimiter = True 18 .TextFilePlatform = 932 19 .Refresh 20 End With 21 22 'クエリで読み込んだ接続を削除する 23 Dim conn As WorkbookConnection 24 For Each conn In ActiveWorkbook.Connections 25 conn.Delete 26 Next conn 27 28End Sub 29

試したこと

ここに問題に対して試したことを記載してください。
Ctrl + END などで、使用する箇所以上にスペースがとっていないか確認
不要なオブジェクトがないか確認。いずれもなし。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2023/04/10 03:25 編集

まず、適当なサイトからの憶測ではなく、遅くなる本当の原因を突き止めるところから始めましょう。 例えば、不要になったシートの削除が成されているようには見えませんが、ちゃんと削除していますか?
yoshi23s

2023/04/10 03:50

ありがとうございます。 不要シートの削除はすべて行っております。 非表示で隠れているシートもありませんでした。
yoshi23s

2023/04/10 03:57

読込した出庫シートで処理し、①CSV出力②出庫ログシートへの転記を行っており、ファイルを継続して利用するうえで、シートを削除処理する処理はありません。
yoshi23s

2023/04/11 06:51 編集

ありがとうございました。
Zuishin

2023/04/10 05:17

アドインでどうにかなるとは思えませんけど、どうにかならなくても同じ質問を繰り返すことはしないでください。
Zuishin

2023/04/10 05:20

本人に聞いてみればすぐにわかることですが、あなたがベストアンサーに選んだ回答はただの当てずっぽうです。
yoshi23s

2023/04/10 06:32

はい。ありがとうございました。
guest

回答2

0

ベストアンサー

マクロが争点ならマクロだけxlaやxlamに分離してアドインとして動作させてください
それでもxlsのファイルがおおきいならそれはデータの取得方法がおかしいだけだと思います

投稿2023/04/10 03:56

yambejp

総合スコア114829

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshi23s

2023/04/10 05:13

ありがとうございます。アドインで対応します。
guest

0

前提

一度、外部の専門家に相談しないと最終的な解決は難しいと思います。『杜撰な設計ではない、設計者の責任を果たしている』とのお墨付きを得ておくほうが無難です。損害と見做されれば責任を追求されるお仕事です。時代や世代の交代に備えて、しっかり自衛しましょう。

投稿2023/04/10 04:35

編集2023/04/10 05:47
logres_Fan

総合スコア164

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshi23s

2023/04/11 06:50 編集

ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問