[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ドロップしてデータの取込後にマクロを実行』(minoru)
いつもお世話になります。
「元」シートに、CSVデータをシート貼付け後、イベント動作で同一ブックの
他のシートへ抽出・加工・並替・印刷するマクロを組んだエクセルファイルが
あるのですが、
CSVを開く⇒ コピー ⇒ xls開く ⇒ 貼付けるの手間を省きたいのです。
CSVのファイル名は毎回相違しますが、列は定型で行は1000前後で内容にエラー
値はありません。
CSVファイルを開かずにエクセルシートに貼付けるためにはどのような方法が
ありますか?
CSVをドラッグ&ドロップするだけで印刷まで実行できれば最高なのですが
< 使用 Excel:Excel2003、使用 OS:Windows7 >
見た目、いろんな要望がありますが、 要するにCSVファイルの名前と所在さえ的確に分かれば 後はマクロの記録でコード書かせても、何とかなると云う話ではないですか?
(半平太) 2013/12/22(日) 12:18
マイスターとか他のWEBも参考にしましたが、エクセルを開いて外部データを
ダイアログで指定してcsvをインポートするようなことはできそうですが、質問に
書いたようなことは、ファイル操作のコードの勉強が必要みたいでした。
所定のフォルダに、エクセルとコードを記載したファイルを置いて、そのフォルダに
csvをドロップして動作するイメージで試行錯誤してみます。
レスありがとうございました。
(minoru) 2013/12/22(日) 21:01
私の方に勘違いがあったかも知れません。
現在、CSVはエクセルで開いていないのですか? (エクセルで開くとまずいのですか?)
開いてよければ、マクロの記録でほとんど書けるのではないか、 と云う趣旨のレスだったんですけど。
CSVを開かないで、などと難しい条件を付ける必要はないと踏んでいます。 何故なら、目的は省力化だけだと思ったからです。
(半平太) 2013/12/22(日) 21:58
ドラッグ&ドロップしたファイル名の取得は、私は、VBSを経由してExcelブックに送る方法を よく使います(嘘です、よく使うというほどこの仕様を採用したことはないですねえ)。
準備する
VbScriptファイル test.vbs ドラッグ&ドロップされるファイル
Excelブック Book1.xls ドラッグ&ドロップ情報をこのブックに送る
上記のファイルは説明上 同じフォルダ上に配置してください。
Book1.xlsmの標準モジュール(Module1)に
'========================================================================= Option Explicit Sub auto_open(Optional wsharg As Variant) Dim fnm As Variant Dim g0 As Long If Not IsMissing(wsharg) Then For g0 = 0 To wsharg.Count - 1 MsgBox "ドロップされたファイル名は " & wsharg(g0) Next End If End Sub
メモ帳を使って、
以下のコードをtest.vbsとして、作成してください。
dim objargs dim myfld dim bk dim excel set excel=createobject("excel.application") with excel .visible=true With CreateObject("scripting.filesystemobject") myfld=.GetParentFolderName(wscript.scriptFullName) End With set bk=.workbooks.open(myfld & "\book1.xls") Set objArgs = WScript.Arguments if objargs.count>0 then .run bk.name & "!auto_open",objArgs end if end with
以上です。
test.vbsのアイコンにcsvファイルをドラッグ&ドロップしてみてください。
book1.xlsにその情報が送られ、対象ファイル名が表示されます。
Excel2003でしたね ブックの拡張子を xls に 変更して下さい ( ichinose) 2013/12/23(月) 07:43
ブックに他のブックやテキスト系ファイルをドラッグ&ドロップしたら 自ブックが非アクティブになりますので、 ブックの「Workbook_Deactivate」イベントを使用する、という手もあります。
Private Sub Workbook_Deactivate() MsgBox ActiveWorkbook.FullName End Sub
ただ、この方法は自ブックを閉じるときや、単に他のブックをアクティブ にしたときにも作動しますので対処が必要ですが。 (カリーニン) 2013/12/23(月) 09:58
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.