[[20150625105726]] 『アドインの標準モジュールからシート操作をしたい』(shin) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『アドインの標準モジュールからシート操作をしたい』(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


めっちゃ書いてます。。。
Deleteのチェックを端折っているので、これを書いているのですが
もしかしてこれが原因?

ということでやってみると、そもそも
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.