VBでファイルを指定して印刷

このQ&Aのポイント
  • VBを使ってファイルを指定して一覧印刷するプログラムを作成しています
  • 初心者なので他の方法があれば教えてほしい
  • 詳しい方に回答をお願いします
回答を見る
  • ベストアンサー

VBでファイルを指定して印刷

はじめまして、いまVBを使ってTextBoxに、ファイルを指定して そのファイルの内容の一覧印刷ができるようなプログラムを組んでいます。 一部分だけですが、自分なりに考えて作ったものが、 FileNumber = FreeFile Open frm01.CommonDialog1.FileName For Input As #FileNumber Printer.Print StrConv(InputB(LOF(FileNumber), FileNumber), vbUnicode) Close #FileNumber Printer.EndDoc のような感じで、もし他に方法があれば教えて欲しいのですが。 まだ、VBをはじめて1ヶ月程度の初心者なので、どうか詳しい方、 回答のほうをお願い致します。

  • DS4
  • お礼率100% (9/9)

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

  • ベストアンサー
  • osaosa42
  • ベストアンサー率60% (20/33)
回答No.1

関連付けされているアプリケーションで印刷するなら ------------------------------------------------- 'ファイルを拡張子に関連付けされているアプリケーションで印刷 Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Sub Command1_Click() Dim strPath As String strPath = "C:\TEMP\TEST.TXT" Call ShellExecute(Me.hwnd, "Print", strPath, "", "", 0) End Sub ------------------------------------------------- で、印刷できますけど。 求めている回答と違っていたらごめんなさい。 じゃ、そゆことで。

DS4
質問者

お礼

さっそくの回答ありがとうございます! Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long のあたりがよくわからないですけど、プログラムの中に組み込んでみて 何とか理解できるようにしたいと思います。

その他の回答 (1)

  • osaosa42
  • ベストアンサー率60% (20/33)
回答No.2

「Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long」 の部分は、 Win32API(Windowsの基盤となるプログラムインターフェース)つーものです。 VB標準関数では実現できないこともできちゃうんです。 奥が深すぎますが・・・ 初心者には、難しかったかもしれませんね。 ごめんなさい。 つーことで。

DS4
質問者

お礼

APIですか~・・・奥が深いですね~ ファイルを指定して印刷するところなのですが、 何とかできました! いろいろやり方があるんですね。 APIなるものも今後勉強していきたいと思います。 また、VBの質問をしていることがあるかもしれませんので 見かけたらお願いしますね! それではありがとうございました!!!

関連するQ&A

  • EXCEL2007のVBAを使って、テキストファイルを読み込んで別のテ

    EXCEL2007のVBAを使って、テキストファイルを読み込んで別のテキストファイルを作って書き込むというコードを書きましたが、新しく出来たテキストファイルの末尾に、もともとのファイルには無かったスペースが追加されてしまいます。 原因と対策を教えて頂きたいです。 ------------------------------------------------------- Dim FileName1 As String Dim FileName2 As String Dim FileNumber1 As Integer Dim FileNumber2 As Integer Dim Data As String FileName1 = Application.GetOpenFilename("Text Files (*.txt), *.txt") FileName2 = Application.GetSaveAsFilename(, "Text Files (*.txt), *.txt") Data = Space(FileLen(FileName1)) FileNumber1 = FreeFile Open FileName1 For Binary As #FileNumber1 Get #FileNumber1, , Data Close #FileNumber1 'この間に"Data"内容を処理するコードを入れる予定 FileNumber2 = FreeFile Open FileName2 For Binary As #FileNumber2 Put #FileNumber2, , Data Close #FileNumber2 ------------------------------------------------------- このコードで1284バイトのテキストを読み込ませると末尾にスペースが追加されて1918バイトになってしまいました。 "Data"の内容を表示させてもスペースはなく、Len関数で大きさを調べても1284バイトです。

  • VBでエディタ

    こんにちは。Kakugariです。  今、VBでエディタを作っていますがファイル操作でつまずいてしまいました。Commondialogからファイル名を取得して、そのファイルをMaintxtに表示するプログラムですがMaintxtに表示されるとき、Tabを使用してスペースを空けた部分が、無視されて文字が前に詰めて表示されます。それ以外は正常です。下にコードを載せましたので、お分かりになられる方は、間違いを指摘していただけたらありがたいです。ちなみにVB6です。Commondialogのプロパティは、デザイン時に設定されています。 Private Sub mnuOpen_Click()   On Error GoTo ErrCode   With CommonDialog1     .DialogTitle = "開く"     .ShowOpen   End With   Dim txt As String, Work As String   Open CommonDialog1.FileName For Input As #1   Do While Not EOF(1)     Input #1, Work     txt = txt & Work & vbCrLf   Loop   Close #1   Maintxt = txt   Exit Sub ErrCode:   Close #1   MsgBox "ファイルは開けませんでした。", vbCritical End Sub

  • アクセスにtxtファイルの指定行のみインポートしたい

    先ほども、似たような質問をさせて頂いたのですが、おおもととして、質問していた、textファイルのインポート自体は出来るようになりましたので、 質問を絞って再度、ご質問させて下さい。 textファイルをインポートすると、”データ型の変換エラーが発生しました。”と出ます。 それは、textファイルに、他の行とは違う桁数の、余分な行(先頭行と最終行)があるからです。 先に、textファイルを開き、削除して行えば、問題ありませんが 出来れば、何も編集せずにアクセスで、何行目から何行目までを取り込む。と言った物にしたいです。 csvなどは、簡単に設定できるようですが、textも出来るのでしょうか? ちなみに、今の構文を書いておきます。 どちらに、その構文を追加すれば、いいのかまで、教えていただけると大変助かります。 Private Sub コマンド64_Click() Dim strLine As String Dim dbs As Database Dim rst As Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset("支払明細") Open CurrentProject.Path & "\支払明細.txt" For Input As #1 Do Until EOF(1) Line Input #1, strLine strLine = StrConv(strLine, vbFromUnicode) With rst .AddNew !旧請求年月日 = StrConv(MidB$(strLine, 14, 6), vbUnicode) !指定伝票番号 = StrConv(MidB$(strLine, 20, 7), vbUnicode) !種類 = StrConv(MidB$(strLine, 64, 8), vbUnicode) !数量 = StrConv(MidB$(strLine, 84, 5), vbUnicode) !単価 = StrConv(MidB$(strLine, 89, 7), vbUnicode) !請求金額 = StrConv(MidB$(strLine, 96, 11), vbUnicode) .Update End With Loop Close #1 rst.Close MsgBox "インポートを終了しました。" End Sub

  • VBでファイル読み込み

    VBであるところにあるCSVファイルのデータを読み込みエクセルへ変換出力したいのですが教えてください。コモンダイアログボックス(?)と言うものを使って作成したいのです。よろしくお願いします。 がんばってやってみたのですがわかりません。教えてください。 Private Sub Command1_Click() Dim gnum(25), tensuu(32, 99) Dim sougouten(99), heikin(99), gouhi$(99) 'ファイルを開く On Error GoTo ErrHandler 'コモンダイアログボックス CommonDialog1.CancelError = True CommonDialog1.Filter = "すべてのファイル (*.*)|*.*|" _ & "テキスト ファイル (*.txt)|*.txt|バッチ ファイル (*.bat)|*.bat" CommonDialog1.FilterIndex = 2 CommonDialog1.ShowOpen With CommonDialog1 .FileName = "" .ShowOpen End With Exit Sub ErrHandler: ' ユーザーが [キャンセル] ボタンをクリックしました。 End Sub

  • ファイルを読み込んだらVBがフリーズする

    ↓のコードだと、ファイルを読み込んだ時点でVBがフリーズします(平気なファイルも一部ある)。原因と解決法を教えてください。 Private Sub Command1_Click() CommonDialog1.Filter = "テキスト(*.txt)|*.txt|すべて(*.*)|*.*" CommonDialog1.FilterIndex = 1 CommonDialog1.Flags = cdlONFileMustExist CommonDialog1.CancelError = True On Error Resume Next CommonDialog1.ShowOpen If (Err = 0) Then FileRead CommonDialog1.FileName End If On Error GoTo 0 End Sub Private Sub FileRead(FL As String) Dim FileNo As Integer Dim strDAT As String Dim strELM As String Dim pot1 As Integer, pot2 As Integer Dim pDB1 As Integer, pDB2 As Integer FileNo = FreeFile() Open FL For Input As #FileNo While Not EOF(FileNo) Line Input #FileNo, strDAT strDAT = strDAT & ":" pot1 = InStr(strDAT, ":") While pot1 > 0 strELM = Left(strDAT, pot1) pot2 = InStr(strELM, "OPEN") While pot2 > 0 pDB1 = InStr(strELM, Chr(&H22)) If pDB1 > 0 Then '前の『"』の位置 pDB2 = InStr(pDB1 + 1, strELM, Chr(&H22)) If pDB2 > 0 Then RichTextBox1.Text = RichTextBox1.Text & _ Mid(strELM, pDB1 + 1, pDB2 - pDB1 - 1) & vbCrLf End If End If pot2 = InStr(pDB2 + 1, strELM, "OPEN") Wend strDAT = Mid(strDAT, pot1 + 1) pot1 = InStr(strDAT, ":") Wend Wend Close #FileNo End Sub

  • テキストの読込について

    あいうえお かきくけこ さしすせそ ↑のような中身のテキストファイルを読み込んで、 あいうえおかきくけこさしすせそ ↑のように、改行をなくして新規テキストに出力する プログラムを作成中なのですが、上手くいかず 困っています。 改行を無視した取り込みは出来るのでしょうか? もしくは、LineInput等で読み込んだ後、 改行を取り除くような処理をするのでしょうか? 下記は、現在まで作ったプログラムなのですが、 これだと、改行も同時に取り込んでしまっています。 Private Sub Command1_Click() Dim sData As String Dim FileName As String CommonDialog1.Filter = "テキスト|*.txt|全てのファイル|*.*" CommonDialog1.ShowOpen FileName = CommonDialog1.FileName Open FileName For Input As #1 Do Until EOF(1) Line Input #1, sData Loop Close #1 環境は、WindowsXP、VB6.0エンタープライズです。 以上、宜しくお願い致します<(_ _)>

  • VB5で、PDFファイルを印刷ダイアログボックスを非表示にして任意の場

    VB5で、PDFファイルを印刷ダイアログボックスを非表示にして任意の場所に保存したいのです。 現状は、VB5で下記のように記述しています。 通常のプリンタ設定はCutePDFとなってます。 Printer.Print ○○ Printer.EndDoc 上記で名前をつけて保存ダイアログボックスが表示され、 デスクトップ上が保存先、名前はVisualBasic.pdfとなってます。 これを、 保存ダイアログボックスを非表示にし、 保存先、ファイル名をVB側で指定したいのですが、 どのようにやればいいのかわからず困っています。 その前にできるのか… VB5は客先での環境なので変更できません。 どうぞお力をお貸しください。。 よろしくお願いいたします。

  • 指定列を抜き出す

    V1 , V2 , V3 , V4 , V5 , V6 5.9, 3.9, 0.7, 3.9, 5.8, 5.1 4.1, 6.4, 3.8, 3.3, 5.8, 9.3 3.1, 2.3, 1.8, 2.7, 3.6, 5.6 6.8, 4.2, 2.1, 3.3, 4.9, 5.1 2.3, 0.3, -1.7, -2.1, -1.7, 1.10 8.0, 4.7, 3.7, 6.9, 6.2, 5.5 さらに続く 上記のようなテキストデータがファイルAに入っており これからV1,V3,V5のデータだけを抽出し、 ファイルBに格納するプログラムを作成中なのですが、 データの読み込みと書き込みの部分は作成したのですが、 どのようにすれば抽出できますでしょうか? ソフトはVB6です。よろしくお願いします 'ファイル読み込み Open "C:\A.txt" For Input As #1 FlLen = LOF(1) txt = Input(FlLen, #1) Close #1 'ファイル書き込み Open "C:\B.txt" For Output As #1 Print #1, txt Close #1

  • VB6 名前を指定して保存する際に・・・

    こんにちわ。 ファイルを保存する際のコードを考えて作ったのですが、少し困ったので教えてください。 コードは・・・ With CommonDialog1 .CancelError = True .DialogTitle = "保存ファイル名指定" .DefaultExt = ".txt" .Filter = "テキストファイル(*.txt)|*.txt" .FilterIndex = 1 .ShowSave End With On Error GoTo aaa CommonDialog1.ShowSave Open CommonDialog1.FileName For Binary As #1 Put #1, , Text2.Text Close #1 Text2.Text = "" Exit Sub aaa: If Err.Number = 32755 Then MsgBox "キャンセル" End If これなんですが、text2の内容を保存する際に保存名を入れますが、一度保存OKを押すと「ファイル名.txt」となるのはいいんですが本当は1回OKを押した時点でtxtファイルとして保存できるようにしたいので、どなたか分かる方アドバイスお願いします。

  • excel 2003から VBAのreplaceマソッドで文字を置換する方法を教えてください

    エクセルファイルシートをセミコロン区切りのテキストファイルに変換して出力したいです。 エクセル2002では以下のVBAで書いたマクロがちゃんと動いてTABをセミコロンに置換できますが、エクセル2003では置換ができなくてデータとデータの間にTABまま出力されます。 Public Sub ExportWorksheetWithCustomDelimiter( _ ByVal SourceWorksheet As Variant, _ ByVal FilePath As String, _ ByVal Delimiter As String) ' Exports the source worksheet as a text file with a custom field delimiter. ' ExportWorksheetWithCustomDelimiter(SourceWorksheet, FilePath, Delimiter) ' SourceWorksheet - The name of or a reference to a worksheet. ' FilePath - The full path to the export file. ' Delimiter - One or more characters to use as the field delimiter. Dim DisplayAlerts As Boolean Dim FileNumber As Long Dim FileData As String If VarType(SourceWorksheet) = vbString Then SourceWorksheet = ActiveWorkbook.Sheets(SourceWorksheet).Name ' Create copy of source worksheet in new workbook Sheet1.Copy ' Save copy as tab delimited text file and close DisplayAlerts = Application.DisplayAlerts Application.DisplayAlerts = False ActiveWorkbook.SaveAs FileName:=FilePath, FileFormat:=xlText ActiveWorkbook.Close SaveChanges:=False Application.DisplayAlerts = DisplayAlerts ' Read file into string variable and delete file FileNumber = FreeFile 'Open FilePath For Binary Access Read Write As FileNumber Open FilePath & ".txt" For Binary Access Read Write As FileNumber FileData = StrConv(InputB(LOF(FileNumber), FileNumber), vbUnicode) Close FileNumber Kill FilePath & ".txt" ' Replace all tabs with special character FileData = Replace(FileData, Chr(9), Delimiter) ' Right modified text back out to same file Open FilePath For Binary Access Read Write As FileNumber Put FileNumber, , FileData Close FileNumber End Sub 上のマクロの実行後の結果は次と同じです。 エクセル2002からマクロの実行結果:AAA;BBB;CCC;DDD;EEE;FFF エクセル2003からマクロの実行結果:AAA BBB CCC DDD EEE FFF 解決方法を教えてください。 ぜひよろしくお願いします。 ありがとうございます。