[[20110805004220]] 『マクロで、ファイル書き出し/印刷ダイアログオープンを教えてください。』 (マクロ超初心者)  ページの最後に飛ぶ

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

 

『マクロで、ファイル書き出し/印刷ダイアログオープンを教えてください。』 (マクロ超初心者)

 マクロで、
 1)時刻("DD HH:MM")、ファイルパス名、ファイル名 をC:\TEMP\FILE.TXT に書き出す。
 2)続いて印刷ダイアログを出す(ファイル−印刷、またはCtrl+P)
 を実行するマクロを教えてください。

 エクセルシートなら、
  時刻は、=TEXT(NOW(),"DD HH:MM") 
  ファイルパスは、=LEFT(CELL("filename",A1),SEARCH("\[",CELL("filename",A1),1))
  ファイル名は、=MID(CELL("filename",A1),SEARCH("\[",CELL("filename",A1),1)+2,SEARCH(".xls]",CELL("filename",A1))-SEARCH("[",CELL("filename",A1),1)+3)
 で取得できることは分かったのですが、マクロではどのように実行すればよいのでしょう?
 また、印刷ダイアログを開いてキャンセルすると、マクロの記録では何も記録できませんでした。
 そもそも、印刷ダイアログを開いた状態で終了するマクロは記述できるのでしょうか?

 前提条件:
 ・書き出すテキストファイルがすでに存在しているときは、上書きしてください。
 ・時刻と、パスと、ファイル名は「改行」で区切ってもらえると助かります。
 ・エクセルファイルは必ず保存されています。保存前はエラーになってかまいません。
 ・パスやファイル名に、大括弧([や、])は存在しません。
 ・ファイルの拡張子は、xlsです。
 ・作業用のセルは使えません。全てマクロで処理したいです。

 Excel97/2000/2003で、Win2000/XP で動作を見ます。どれか一つの組み合わせで
 動作するものを教えていただけると、助かります。

 どうぞよろしくお願いいたします。
 (マクロ超初心者) 

 すでに保存されているエクセルブックを呼び出し、その情報をテキストファイルとして書き出したいということ?
それとも、呼び出しは別途エクセル上の操作で行う?

 (ぶらっと) 


 仕様がよくわかりません。

 >時刻("DD HH:MM")、ファイルパス名、ファイル名 をC:\TEMP\FILE.TXT に書き出す。
 何のファイルパス名、ファイル名ですか?
 VBAコードを記述しているブックのパスとファイル名ですか?
 ここのところがはっきり記述されていませんね。

 時刻は、
 msgbox [text(now(),"dd hh:mm")]
 これで取り出せます。
 ファイルパス及び、ファイル名というのがVBAコードのあるブックのもの
 ということなら、

 Msgbox thisworkbook.path
 msgbox thisworkbook.name

 で取り出せます。

 Sub test()
    Application.Dialogs(xlDialogPrint).Show
 End Sub
 印刷ダイアログの表示

 >作業用のセルは使えません
 何故ですか? Excel/VBAでは、シートというのは、超、カリスマ、え〜と、スーパー
 作業領域ですよ、これを使わないなんて、よほどの理由があるとしか思えませんが。

 これらの記述で検討していただき、不明な点は、再度、質問を絞って投稿してください。

 ichinose


 情報が不備ですみませんでした。
 すでに保存されているエクセルブックを呼び出した状態で、マクロを実行することで、その情報を
 C:\TEMP\下にテキストファイルとして書き出したい。と言う意図です。

 「テキスト書き出し&印刷ダイアログオープン」のマクロを作成し、ボタンに配置することを想定しています。
 ボタンを押すことで、今開いているシートの情報をテキストファイルに書き出したいと思います。

 できたマクロは、既存の多くのエクセルシートに使いたいと考えています。
 「空いているセル」が特定できないため、作業用としてセルを使えないと考えました。

 教えていただいたコードは順次試して理解してゆきたいと思います。

 よろしくお願いします。
 (マクロ超初心者)

 印刷ダイアログを表示するマクロは残念ながら自動記録できないね。
テキストファイルを生成する方法はいくつかあると思うけど、簡単なのは新規ブックをテキストファイルとして保存する方法。
(これはマクロ記録できるよ)

 以下のSampleP1、SampleP2 が印刷ダイアログの表示。SampleSave がテキストファイルの作成。
SampleSaveは、開いたブックが最前面にでている状態で実行。

 Sub SampleP1()
    Application.Dialogs(xlDialogPrint).Show
 End Sub

 Sub SampleP2()
    Dim rtn As Boolean
    rtn = Application.Dialogs(xlDialogPrint).Show
    If rtn Then
        MsgBox "印刷が実行されました"
    Else
        MsgBox "印刷ダイアログでキャンセルが押されました"
    End If
 End Sub

 Sub SampleSave()
    Dim fPath As String
    Dim fName As String

    fPath = ActiveWorkbook.Path
    fName = ActiveWorkbook.Name

    Workbooks.Add
    Range("A1") = Format(Now(), "DD HH:MM")
    Range("A2").Value = fPath
    Range("A3").Value = fName
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:= _
        "C:\TEMP\FILE.TXT", FileFormat:=xlText
    ActiveWorkbook.Close SaveChanges:=False
    Application.DisplayAlerts = True
 End Sub

 (ぶらっと)

 (ぶらっと)さん、ありがとうございました。
 ざっと試したところ、意図通りの結果でした。

 > テキストファイルを生成する方法はいくつかあると思うけど、簡単なのは新規ブックをテキストファイルとして保存する方法。
 なるほど。
 新規ブックを使えば作業セルとして使ったり、テキストファイルに書き出したりできますね。思いつきませんでした。

 ありがとうございました。これを使わせていただいて、最終形に向けて調整してゆきます。
 (マクロ超初心者)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.