
Excel2003を使用しています。
メールに添付されてくるExcelファイル(A)のデータを印刷するために、レイアウト等を整えたファイル(B)に値のみコピーというマクロをファイル(B)に作成したいと思っています。
この作業は、ファイル(A)とファイル(B)を並べて作業しますが、毎回メールに添付されてくるファイル(A)の名前が一定ではなく、ファイル名に日付が入っています。『2.07○○○.xls』のような感じですので、ファイル(B)にコードを記述するときに、Excelで開いているもう1つのファイルといったような指定の仕方は可能でしょうか?
やはり、きちんと決まったファイル名でないと不可能であれば、添付されてきたファイルを、ある名前で一旦どこかに保存して…と考えていますが、もし、上記のような指定方法ができるのであれば、教えていただきたいと思い、質問させていただきました。
No.4ベストアンサー
- 回答日時:
こんにちは。
オープンしているブックが
ファイル(A)
ファイル(B)
の2つなら、例えば Workbooks(Index) でとるとか。
Sub SampleProc()
Dim wb As Workbook
Dim i As Long
If Workbooks.Count <> 2 Then Exit Sub
For i = 1 To 2
Set wb = Workbooks(i)
If Not wb Is ThisWorkbook Then
Exit For
End If
Next
MsgBox wb.Name
End Sub
KenKen_SP さん、こんにちは。
いつもお世話になっております。
いろんな方法があるのですね。勉強になります。
記載していただいたサンプルコードを試してみました。
…が、何も起こりませんでした(^_^;)
てっきり、ThisWorkbook ではないファイル名が表示されると思っていたのですが、なぜなんでしょう??
No.8
- 回答日時:
> メールの添付ファイル欄から直接開いた状態では、参照できていない
> のでしょうか…?
当方では問題なく、ThisWorkbook 以外のブック名が表示されますが...
調べるなら、
Dim wb As Workbook
For Each wb in Workbooks
MsgBox wb.Name
Next
などとして、Workbooks コレクションを回して目的のブック名が表示される
かチェックして下さい。
これで表示されないのであれば、別プロセスの Excel.exe 上のブックである
可能性が高いので、開き方についても再検討が必要です。
ちなみに、*.xls ファイルを DBL クリックして開いた場合、都度新規 Excel
が立ち上がるような設定にしてます?
# たまに居ますので。。こういう設定にしている人
KenKen_SP さん、こんにちは。
お礼が遅くなり申し訳ありません。
アドバイスいただいたように、Workbooks コレクションを回してチェックしたところ、目的のブック名は表示されたのですが、『PERSONAL.XLS』も表示されました…。
ということは、前回と同じ状況でチェックしましたので、ファイル(A)とファイル(B)の2つしか開いていないと思っていたのは、間違いだったということですよね?(^_^;)
PERSONAL.XLS は、画面上には出ていないのですが。。。
No.7
- 回答日時:
#4 お礼欄について
前提として、ファイル(A)、ファイル(B)の2つのみを開いた状態で
コードを実行するものとしています。したがって、
> If Workbooks.Count <> 2 Then Exit Sub
ブックが1つ、あるいは3つ以上開いた状態ではここで終了します。
また、
> Set wb = Workbooks(i)
Workbooks(Index) で参照できるのは、同一プロセスにあるブックのみ
です。つまり、VBA を実行している Excel.exe とは別の Excel.exe で
開かれているブックは参照できません。
上記以外に、
> …が、何も起こりませんでした(^_^;)
という可能性は考えにくいのですが....
KenKen_SP さん、こんにちは。
再度の回答ありがとうございます。
>前提として、ファイル(A)、ファイル(B)の2つのみを開いた状態で
コードを実行するものとしています。
これは、コードの内容でわかりましたので、確認しました。
2つのみ開いた状態でマクロを実行しました。
>Workbooks(Index) で参照できるのは、同一プロセスにあるブックのみ
です。つまり、VBA を実行している Excel.exe とは別の Excel.exe で
開かれているブックは参照できません。
ファイル(A)のほうは、メールに添付されてきたExcelファイルなのですが、メールの添付ファイル欄から直接開いた状態では、参照できていないのでしょうか…?
上記のアドバイスをいただいて、このへんに問題があったのかなと思ったのですが、いかがでしょうか?
No.6
- 回答日時:
vbのヘルプで
Dir
を参照してみてください。
' 指定した拡張子を持つファイル名を返します。複数の *.INI ファイル
' が存在すると、最初に見つかったファイル名を返します。
MyFile = Dir("C:\WINDOWS\*.INI")
' 引数を指定せずに再度 Dir 関数を呼び出すと、
' 同じフォルダにある次の *.INIファイルを返します。
MyFile = Dir
基本的には上記です。
MyFile = Dir("D:\MyData\207*.xls")
MyFile = Dir("D:\MyData\207????.xls")
というような。
こういうことではなかったかな。
再度の回答ありがとうございます。
ワイルドカードで指定するほうのファイルがメールに添付されているファイルなので、その添付ファイルが保存されているフォルダを指定してやれば、教えていただいた方法でできるのでしょうね。
丁寧に説明していただいて助かりました。
ありがとうございました。
No.5
- 回答日時:
ファイル(B)のどこかのセルにファイル(A)のブック名を入力して
マクロで使えばいいだけでは?
日付が昨日の日付限定なら
BOOKA = Format(Date-1,"m.dd") & "FILE_A.XLS"
とする手もありますし
回答ありがとうございます。
>ファイル(B)のどこかのセルにファイル(A)のブック名を入力して
最終手段として、↑の方法で…と思っていました。
日付も規則性はないのですが、昨日の日付など限定されるようならば、教えていただいたような方法もあるのですね。勉強になりました。
No.3
- 回答日時:
マクロの起動方法によりますが、
ActiveWorkbookとThisWorkbookを利用してみては?
(A)をアクティブにし、(B)のマクロを起動する。
キーボードのショートカットからならできるはずです。
回答ありがとうございます。
>ActiveWorkbookとThisWorkbookを利用してみては?
>(A)をアクティブにし、(B)のマクロを起動する。
なるほど、ファイル(A)から(B)のマクロを実行するわけですね。
この方法で、コードを書いてみたところ、うまくいきました。
ありがとうございました。
No.1
- 回答日時:
ワイルドカードで指定するのはだめですか。
『*』ですべてのファイル、『*.xls』ですべての.xlsファイル、『2.07???.xls』で2.07の後3文字の.xlsファイル、『2.07*.xls』で2.07の後任意の文字数の.xlsファイル
が指定できるとおもいますが・・・。
回答ありがとうございます。
ワイルドカードで指定する場合は、ファイル(A)が保存されているフォルダの指定等も必要になってくるのでしょうか?
メールに添付されて送られてくるファイル名は、ある程度の規則性がありそうなので、教えていただいた方法でも試してみたいと思い、ヘルプや参考書を見てみたものの、実際にはどのように記述すればいいのかイマイチ理解できなくて…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
電子書籍プレゼントキャンペーン!
最大2万円超分当たる!マンガや小説が読める電子書籍サービス『Renta!』で利用できるギフトコードプレゼント実施中!
-
エクセルマクロで不特定なファイル名を使用するには
Excel(エクセル)
-
名前の変わるブックをアクティブにしたい。
Excel(エクセル)
-
エクセルマクロ 異なるファイル名でも実行してくれるマクロ
Excel(エクセル)
-
4
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
5
Excelマクロ ファイル名が変わるとエラーになる
Excel(エクセル)
-
6
ExcelVBAでBookを開く時にファイル名の一部だけを指定で
Access(アクセス)
-
7
EXCELマクロで、開いてはいるがアクティブでないファイルをアクティブにする方法?
Excel(エクセル)
-
8
エクセルVBA:毎月名前が変わるエクセルファイルを毎月異なるフォルダから開く
その他(コンピューター・テクノロジー)
-
9
【Excel】 VBAを使って毎回名前が変わるファイルを添付してメール送信したい。
Excel(エクセル)
-
10
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
11
ファイル名を指定しないVBAは?
その他(パソコン・スマホ・電化製品)
-
12
ファイル名変更後も、マクロを動作させたいのですが?
Access(アクセス)
-
13
参照するファイルをワイルドカードで指定したい
Visual Basic(VBA)
-
14
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
15
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
16
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
17
マクロを使って不特定のファイルからコピー&ペーストしたい(エクセル)
Excel(エクセル)
-
18
ファイル名を今日の日付、時刻で保存する
Visual Basic(VBA)
-
19
VBAでワークブックの名前を変数にして開かせる?
Excel(エクセル)
-
20
VBAでセル値からフォルダ名を取得するコードについて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
ファイルを開かずにマクロを実行
-
5
フォルダ内のexcelファイルを順...
-
6
VBAでワークブックの名前を変数...
-
7
エクセル(マクロ)のファイル...
-
8
エクセル 複数ファイルの一括...
-
9
エクセルマクロで不特定なファ...
-
10
accessフォルダを移動したらフ...
-
11
VBAでフォルダ内の全てのcsv...
-
12
フォルダ内のブック全部にパス...
-
13
ファイルの保存場所を変えたら...
-
14
VBA 新規にエクセルを開き既存...
-
15
リンク切れチェックを行うマクロ
-
16
vlookup関数の引数を変数で指定...
-
17
マクロでVLOOKUP数式書込 任意...
-
18
Excel VBA でファイルが開かれ...
-
19
エクセルのシートの数を数えた...
-
20
<ACCESS VBA -> EXCEL>getObjec...
おすすめ情報
公式facebook
公式twitter