[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『アドインの標準モジュールからシート操作をしたい』(shin)
初めまして。
CSVファイルの整形をアドインを使用して実施したいと考えています。
アドインでコマンドボタンを追加し、そのボタンが押下されたら
そのアドインを呼んだexcelファイルのシートに対して整形処理を
したいのですが、どのようにシートを特定していいのかわかりません。
CSVファイルは不特定な名前です。
よろしくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
(shin) 2015/06/25(木) 11:09
>どのようにシートを特定していいのかわかりません。
素朴に考えると ActiveSheet でいいような気がするんですけど。
対象シートがAcriveじゃない時に実行ってあるんでしょうか? ・・あるとすると、いまあるアドインのコードではどんなシートに対して実行するように作られているんですか?
(半平太) 2015/06/25(木) 11:29
CSVファイルにシートを追加して作業したいので、
イメージとしては
1.同名のシートを削除
2.作業用シートを追加
3.追加した作業用シートでデータ整形
という流れです。
アドインの標準モジュールに以下のようなコードを書きました。
ActiveWorkbook.Sheets(xxx).Delete
ActiveWorkbook.Sheets(xxx).Add
しかし、シートが追加されていません。
どこか違う場所に追加されているのか、そもそも間違ったコードなのかが
わかりません。
(CSVファイルを閉じても保存するかどうか聞かれないので、全く見当違いな
コードの可能性が高いです)
(shin) 2015/06/25(木) 12:13
ちょっと状況が理解できないのですけど、
CSVファイルですよね。
CSVファイルは基本的にシートは1枚の状態でしか保存できません。
なので、先にシートを削除したら、ブックじゃなくなっちゃいます。 まぁ、削除そのものが拒否されると思いますけど。
なので、1枚Addしてから、古いシートをDeleteし、 残ったシートを希望するシート名に変更する、に変えたら如何ですか?
・・・と云うか、何でDeleteしなければならないのですか、 単に、Clearすればいいじゃないですか?
>ActiveWorkbook.Sheets(xxx).Delete >ActiveWorkbook.Sheets(xxx).Add
上の2行を、ActiveWorkbook.Sheets(xxx).Cells.Clear の1行に変える。
(半平太) 2015/06/25(木) 12:35
説明が悪くてすいません。
CSVのシートはあくまでも参照しかしたくないので、
新しいシートを作成して、そこで整形しようと思ってます。
で、なんで削除するのかというと、コマンドボタンを2回以上押したときを
想定していました。
で、たぶんDeleteも出来てない(仮に自分でシートを作成しても消されなかった)
ので、
ActiveWorkbook.Sheets(xxx)
というのは、使えないのでしょうか。
ActiveWorkbook.Sheets(xxx).Add
としても、何も変化がありません。
普段、あまり複雑なマクロは書いたことがなく、アドインも今回初挑戦なんです。
なので、アドインの標準モジュールと、アドインを呼び出したファイルなどの
関係があまりわかっていません。
(shin) 2015/06/25(木) 19:19
ちょっと、本題から外れますけど、
アドインのコードにこんな文を書いていないですか? ↓ On Error Resume Next
もし、あったらそれはコメントアウトしてからテストしてみてください。
それで、もし何かしらのエラーメッセージが出たら、 その内容からこの話を進展させるきっかけが掴めるかもです。
(半平太) 2015/06/25(木) 19:54
ということでやってみると、そもそも
ActiveWorkbook.Sheets(xxx).Add
などという文法はない?
インデックスがどうのこうのっていうエラーが出てました。
以下のコードにすると正常にシートが追加されました。
With ActiveWorkbook.Sheets.Add()
.name = xxx End With
半日かかってしまいましたが、これで先に進めます。
ありがとうございました。
(shin) 2015/06/25(木) 20:13
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.