エクセルVBAでの呼出操作をマクロ化する方法とは?

このQ&Aのポイント
  • エクセルVBAでの呼出操作をマクロ化する方法を教えてください。
  • エクセルVBAでのファイルの呼び出し方法について、具体的な手順を教えてください。
  • エクセルVBAでテキストデータをカンマ区切りで変換して呼び出す方法を教えてください。
回答を見る
  • ベストアンサー

エクセルVBAでの呼出操作をマクロ化するには?

エクセルVBAでの呼出操作をマクロ化するには? 【今年の7/16に以下の質問をしました】 エクセル2000です。宜しくお願いします。 VBAで、ファイルを呼び出したいのですが、Workbooks.openの書き方が良く分かりません。 呼び出すファイル名は決まっていなくて、フォルダ名は固定です。 エクセルの操作で言うと、ファイルを開くを押して、フォルダを選ぶとこまでをマクロかしたいのですが。 例えば、ドライブDの「作業用」フォルダを開きたい場合は、どう記述すれば宜しいでしょうか? 基礎的な部分でお恥ずかしいのですが、以下で実行しても動かんのです。 ChDir "D:\作業用" Workbooks.OpenText Filename:= "D:\作業用\*.*" 【watabe007 さんより以下の回答を頂きまして当時は上手く動いたつもりだったのですが、  添付画像の様にファイルの種類が「すべてのファイル(*.*)」しかありません。】 Dim strRet As String ChDrive "D:\作業用" ChDir "D:\作業用" strRet = Application.GetOpenFilename(Title:="ファイル名を選択して下さい") If strRet = "False" Then   MsgBox "キャンセルが選択されました。処理を中止します。", vbCritical   Exit Sub Else   Workbooks.Open Filename:=strRet End If End Sub 【今回の再質問】  当時ファイルの種類まで指定していなかったのですが、実際には、テキストデータを、カンマ区切り  で変換して呼び出したいので、ファイルの種類は、「テキストファイル」としたいのですが、  どうすれば宜しいでしょうか?  助けてください。  (上記のような事は無理なんでしょうか?無理なら無理のご回答がご投稿戴ければ諦めます;;)

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

>テキストファイルウィザード画面が出てこないのですが、こちらは無理なのでしょうか? 普通は、テキストファイルウィザードを使うというのは、VBAでは、ありませんから、以下のようにしかなりえないのではないでしょうか。VBAでは、予めファイルが決められているわけでしょうから、テキストファイルウィザードを使わないのが一般的です。 Dialog を使うなら、以下のように、オプションを入れます。 '// Sub Test2() Dim ret As Variant Dim orgDir As String   orgDir = CurDir '元のディレクトリ    ChDrive "D"    ChDir "D:\作業用"    On Error Resume Next    ret = Application.Dialogs(xlDialogOpen).Show("*.txt", 1)    If Err.Number > 0 Or ret = Empty Then     MsgBox "キャンセルが押されました。", vbExclamation    End If    On Error GoTo 0    ChDrive Left(orgDir, InStr(orgDir, ":") - 1)    ChDir orgDir End Sub

SHI-UE
質問者

お礼

ありがとうございます。 こちらのほうが、自分的には、動かしてみてしっくりきました。 これで作りこんでいきたいと思います。 まだまだ勉強が足りない自分ですが、煮詰まったときにはまた宜しくお願い申し上げます。

その他の回答 (2)

  • yorozu_ya
  • ベストアンサー率54% (76/140)
回答No.2

ウィザードを使ってファイルを開きたいなら、 http://support.microsoft.com/kb/125401/ja

SHI-UE
質問者

お礼

ありがとうございました。 教えてくれたサイトより Application.Dialogs(xlDialogOpen).Show を使用して、ウィザード利用が可能になりました。

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.1

エクセルVBAのヘルプでGetOpenFilenameは調べたの? FileFilter 指定すれば良いのでは?

SHI-UE
質問者

お礼

ご回答ありがとうござます。 FileFilterを調べて、以下の様に書き換えてみました。 strRet = Application.GetOpenFilename(FileFilter:="(*.txt), Title:=ファイル名を選択して下さい") これで、テキストファイルのみを探すようにはなったのですが、開くと直ぐに呼んでしまい、 テキストファイルウィザード画面が出てこないのですが、こちらは無理なのでしょうか?

関連するQ&A

  • エクセルVBAでの呼出操作をマクロ化するには?

    エクセルVBAでの呼出操作をマクロ化するには? エクセル2000です。宜しくお願いします。 VBAで、ファイルを呼び出したいのですが、Workbooks.openの書き方が良く分かりません。 呼び出すファイル名は決まっていなくて、フォルダ名は固定です。 エクセルの操作で言うと、ファイルを開くを押して、フォルダを選ぶとこまでをマクロかしたいのですが。 例えば、ドライブDの「作業用」フォルダを開きたい場合は、どう記述すれば宜しいでしょうか? 基礎的な部分でお恥ずかしいのですが、以下で実行しても動かんのです。 ChDir "D:\作業用" Workbooks.OpenText Filename:= "D:\作業用\*.*"

  • エクセルVBA

    こんばんは! エクセルマクロ初心者です。 エクセルVBAについて教えてください! パス(?)を指定して、ファイルを開けてから実行する マクロを書きたいのですが、エラーになってしまいます。 Dim Filename as string (1)Workbooks.Open Filename:= "\D\MyDocument\●●.xls" (●●はファイル名) (2)Workbooks("●●").Activate (1)の部分は実行されて目的のファイルは開くのですが(2)でエラーになってしまいます。 どなたか教えてください! 以前までは、このマクロ実行できていたのですが、突然できなくなりました。 困ってます。

  • Excelマクロで同じブックにCSVを読み込むには

    Excelの指定したシートにCSVファイルを読み込ませたいのですが 以下のVBAマクロを実行すると新しいブックが起動して 新しいブックの方にCSVファイルが読み込まれてしまうのですが これをVBAマクロを実行しているブックの指定のシート(例えばSheet3など)に 読み込ませたいのですがどのように記述すればよいのでしょうか。 よろしくお願いします(Excel2010) Sub Macro1()  ChDir "C:\test"  Workbooks.Open Filename:= "test1.csv" End Sub

  • Excelマクロについて

    Excelマクロ(VBA)で複数のExcelファイルを一括で処理するプログラムを作っているのですが、処理対象のExcelファイルにはマクロが記述されていて、Excelを開く毎に記述のマクロが動いてしまいます。 対象のExcelファイルをオープンする時に、マクロを無効にして開くすることは可能でしょうか? 今現在、Excelファイル開く時に使ってる命令は、 Workbooks.Open Filenameです。

  • VBAでマクロ付きファイルを開く場合

    こんにちは。 VBA初心者です。 VBA(Workbooks.Open Filename)を使ってマクロ付エクセルファイルを開こうとしたのですが、単体で開く時と違い「マクロを有効にするか無効にするか?」ダイアログが表示されません。 マクロを有効にしてファイルを開きたいのですが、これはダイアログが表示されていないだけで自動的に「マクロを有効」となってファイルが開いているのでしょうか?そうではない場合このダイアログを表示させるにはどうしたら良いでしょうか? 判りつらい説明で申し訳ありませんが、教えて下さい。

  • EXcelマクロで同じフォルダ内のファイル全て開く。ドライブまたいでも対応

    以前以下のVBAを教えていただいたham-kamoさんに質問があります。もちろん違う方でも構いません。 「同じフォルダ内のブックを開くマクロ」についてですが、以下のVBAだとカレントフォルダをオプションで違うドライブに設定しているとうまく動作しないのですが、解決法はありますでしょうか? 例えば\\AAAA\BBというアドレスのフォルダ内にマクロを起動するファイルがあり、C:\Documents and Settings\XXXXがカレントフォルダに設定されるとC:\Documents and Settings\XXXX内のExcelファイルが開かれてしまうということです。 -------------------------- Sub OpenAllBooks() Dim FileName As String Dim OpenedBook As Workbook Dim IsBookOpen As Boolean ChDir (ThisWorkbook.Path) FileName = Dir("*.xls") Do While FileName <> "" IsBookOpen = False For Each OpenedBook In Workbooks If OpenedBook.Name = FileName Then IsBookOpen = True Exit For End If Next If IsBookOpen = False Then Workbooks.Open (FileName) End If FileName = Dir() Loop End Sub

  • ローカル⇒ネットワーク移動でマクロが動かなくなった

    いまエクセルのマクロを組んでいます。 ローカル(マイドキュメント)に保存して作業していたファイルを、完成後に会社の共有ネットワークフォルダに移したところ、マクロがうまく作動しなくなりました。 「(参照先の)ファイルが見つかりません。ファイル名およびファイルの保存場所が正しいかどうかを確認してください」 というエラーが出ます。 ボタンを押したら画像が出てくるマクロを組んでいて、ファイルの定義を以下のようにしてあるのですが、どのように修正すればよいのでしょうか? ChDir ThisWorkbook.Path Workbooks.Open filename:="aaa.xls" 絶対パスを相対パスにすればよい、というような記述を本で見たのですが、具体的に記述をどう変更すればよいのかわかりません。 初歩的な質問かもしれませんが、初心者なものでどうぞよろしくお願いします。

  • エクセルのマクロでファイルを自動で保存するには?

    こんにちは。お世話になります。 エクセルのVBAマクロ文の書き方でお知恵を拝借したいと思います。 さて、私のかかる業務でエクセルファイルで営業実績を出しています。 COBOLで作ったファイルをCSVにインポートして そのCSVの値を別のエクセルファイルで引っ張るという手順を踏んでいますが、 それをマクロで動かすとエクセル上で『保存しますか?』と聞いてきます。 答えは『はい(Y)』で確定しているので、その命令文さえ組み込められればいいのですが、 その命令文の書き方が判りません。 (解決したいVBAマクロの命令文) Workbooks.Open Filename:="D:\(Aファイル).csv" Workbooks.Open Filename:="D:\(Aファイルの値を引っ張るBファイル).xls" ThisWorkbook.Saved = True (ここで聞いてくる注意に自動で『Y』を入れたいと思っています。) ActiveWindow.Close ActiveWindow.Close 以上、お知恵を拝借したく、お願いいたします。

  • エクセルVBA ファイル名操作

    エクセルマクロのコードにおきまして 「フォルダの選択」ダイアログから エクセルファイル 123.xlsxを例えば 開くときに それをa.xlsxという名前に変えて 以下のそれに続くVBAコードにおいて a.xlsxを操作したいのですが、 a = Application.GetOpenFilename() Workbooks.Open a これを実行すると求めるダイアログが表示されて 使いたい123.xlsxを開くをクリックしますが これでは123.xlsxがa.xlsxにはなりません このa.xlsxのファイル名で別途ファイル作成する方法を 御教示いただけると助かります よろしくお願いします win10 office365 コードは以下 部分ですが こういう流れで作成したい所存です Sub あいう() a = Application.GetOpenFilename() Workbooks.Open a 'b.xlsxファイルを新規作成 Workbooks.Add ActiveWorkbook.SaveAs Filename:="C:\Users\USER\Desktop\あいう\b.xlsx", FileFormat:=xlXMLSpreadsheet 'a.xlsxファイルの1行目のA1~AG1のセルの値をコピー Workbooks("a.xlsx").Worksheets("Sheet1").Range("A1:AG1").Copy 'b.xlsxファイルのA3~AG3のセルに貼り付け Workbooks("b.xlsx").Worksheets("Sheet1").Range("A3:AG3").PasteSpecial xlPasteValues 以下省略 よろしくお願いします

  • エクセルマクロ文で教えてください。

    お世話になります。 エクセルマクロ文で セルD6 に保存するドライブ名(C とか D) セルD7に保存するフォルダ-名(資料2016 とか 閲覧2016 など) セルD8にファイル名 を置いて、 ドライブ名やフォルダ-名を任意に選択できる形で、作成したエクセルシ-トを保存するマクロ文を、お教えください。 ThisWorkbook.SaveAs "D:\資料2016"&fileName というような形で、fileName=Range(”D8”)と置いてあるのですが、ドライブ名とフォルダ-名とをD6とD7に任意の値を置いて当該文字によるドライブとフォルダ-にD8に記入したファイル名で保存したいというマクロ文を、お教えください。