[[20131222101409]] 『ドロップしてデータの取込後にマクロを実行』(minoru) ページの最後に飛ぶ

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

 

『ドロップしてデータの取込後にマクロを実行』(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.