1

現在、25 ~ 30 枚の Excel シートで構成される Excel VBA アプリケーションがあり (これらのシートはすべて非表示で、バックグラウンド処理を行って VBA フォーム UI に表示します)、VB フォームを使用して UI を開発しました。しかし、私たちが直面している問題は、次のコードを使用して [保存] ボタンをクリックするたびに発生することです。

ThisWorkbook.Save

ただし、これは個々のシートではなくワークブック全体を保存するため、単一のシートで変更を加えてもワークブック全体が保存され、この保存処理は非常に遅くなります (大量のデータを含むすべての Excel シートを保存する必要があるため、データがなくても不要です)。変わります)。

私の質問は、Excel ファイル全体ではなく、「特定の Excel シートの 1 つのシートのみ」を保存できる方法はありますか?

注:私は Java 開発者で、以前は VBA に取り組んでいましたが、数年前のことで、少し忘れています。任意のガイダンスをいただければ幸いです。または、この状況を処理する方法についての指針をいただければ幸いです。さらに情報が必要な場合はお知らせください。この質問を編集できます。

私がすでに試したことは何ですか?昨日から多くの調査を行いました.SOに関する以前の質問で検索しましたが、有用な情報は得られませんでした. 私の調査によると、これはできないと言われています。私は正しい道を進んでいますか?

4

3 に答える 3

4

短い答えはノーです。一度に 1 つのワークシートを保存することはできません。

ワークブックのデータ量を減らしてみてください。データを複数のワークブックに保存してみてください。必要な場合は、その特定のワークブックを開き、必要な変更を加えてから閉じます。

一度にすべてのデータにアクセスする必要がある場合は、アクセスまたは他のデータベースの使用を検討してください。

また、シートに「空白データ」がある可能性もあります。セルには何も含まれていませんが、Excel は、保存時に必要以上に保存しようとすると、そうであると考えます。

于 2013-02-25T17:01:28.580 に答える
3

保存したいのがアクティブなワークシートであると仮定すると、次のようなことができます。

ActiveSheet.Copy
ActiveWorkbook.Close True, "path"

これにより、アクティブなワークブックになる新しいワークブックを作成するアクティブなワークシートがコピーされます。次に、その上で close メソッドを呼び出して、ファイル名を付けます。

于 2013-02-25T17:07:09.920 に答える
2

アプリケーションを複数のワークブックに分割することを検討する必要があると思います。

  1. すべてのロジック、ユーザー フォーム、およびプログラミング コードを含むワークブック。このワークブックは、他のすべてのワークブックとその表示を処理します。潜在的に、これは「アプリケーション固有のアドイン」である可能性もあります。これは休止状態のままですが、後続のワークブックが開かれるとすぐにアクティブになります。このアーキテクチャ アプローチについては、このリンクの「アプリケーション固有のアドイン」のセクションを確認してください。

    このワークブック/アドインは、他のワークブックを非表示にすることもできるため、ユーザーは複数のワークブックであることを認識できません。
  2. 1 つまたは複数のデータ ワークブック: データがどのように連結されているかに応じて、これを分離できます。たとえば、大規模なデータベースを含む「販売データ」ワークブックを、すべての小さなデータ (製品や店舗など) を含む「ベース データ」ワークブックとして使用できます。テーブル)。

このようにして、「関連する」シートへの保存を減らすことができます。ただし、もちろん、これにはかなりの再プログラミングが必要です。ただし、たとえば、プログラミングでファイルを配布するだけでよいため、バージョン間でデータを転送せずに更新/バグ修正を提供することもできるため、努力する価値があります。論理。:-)

于 2013-02-25T23:06:10.200 に答える