- ベストアンサー
初歩的なマクロ操作で挫折
マクロを始めたばかりの者です。 やりたい事はシンプルなのですが、マクロ初心者にはむつかしいのでお尋ねします。 「デスクトップにあるフォルダ内の複数のテキストファイルを毎回選択してエクセル上で開きたい」 のですが、これをマクロでやるにはどのように書けばいいのでしょうか? イメージとしては、マクロの操作を実行すると、 「デスクトップのファルダ内にあるテキストファイルを選択できるようになる」 ということがやりたいです。 宜しくお願い致します。そもそもこのマクロ操作はむつかしいことですか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >そもそもこのマクロ操作はむつかしいことですか? 物事というのは、一つずつの積み上げなのですね。だから、むつかしいとか、簡単という尺度では測れません。ただ、初級のレベルには違いないような気がします。 このレベルで、コードを書かないのもへんですから、サンプルを置いておきます。もっと、高度なことを考えていらっしゃる人もいるのかもしれませんが。 Sub TestOpen() Dim FileNames As Variant Dim fn As Variant ChDir "C:\Documents and Settings\<UserName>\デスクトップ\" FileNames = Application.GetOpenFilename("テキスト(*.txt),*.txt,すべて(*.*),*.*", MultiSelect:=True) If VarType(FileName) = vbBoolean Then Exit Sub For Each fn In FileNames Workbooks.Open fn Next fn End Sub
その他の回答 (4)
- shinyat1
- ベストアンサー率16% (1/6)
「毎回選択してエクセル上で開きたい」ということですから、 Application.Dialogs(xlDialogOpen).Show で良いのではないでしょうか? 「全てのファイル」を選ばないとテキストファイルは選択できませんが。
- nobu555
- ベストアンサー率45% (158/345)
初心者なのでしたら、初めから難しいことを考えず、 マクロの記録で、 「複数のテキストファイルを開く」を繰り返してマクロを作成しては 如何でしょうか。
- bonaron
- ベストアンサー率64% (482/745)
エクセルVBE の ヘルプで GetOpenFilename をお調べください。 複数選択には、引数 MultiSelect を True にして VB の配列に関する知識が必要になります。(キーワード UBound) ちょっと難易度は高いですが、 GetOpenFilename をネットで検索すれば 似たような例が見つかると思います。
- FEX2053
- ベストアンサー率37% (7991/21372)
>そもそもこのマクロ操作はむつかしいことですか? その通り、結構大変です。 マクロは一本道の処理を行うように特化されてますので、 「ファイルを選択する」処理で「マクロを一時停止してOSのファイル選択 機能を起動、その終了を検知して一時停止を解除」という高度なことを やらなくちゃいけないからです。 「ファイルを選択しておいてマクロを起動」なら、まだナンとかなりそう ですけど、これも「任意のファイルを処理する」コードを書かないと いけないので、それなりに大変です。
補足
ありがとうございます。 デスクトップにある「特定のフォルダ」を指定する場合ということをお伝えし忘れました。 デスクトップ上の「○○」の中にある複数のテキストファイルを選択できるようにしたいです。 想像していた以上にむつかしいのですね。皆様に感謝します。