VB6を使って開発しています。
帳票ツールを使わずに帳票出力が出来ないものかと考えております。
まぁそれが出来ればツールなんて必要ないじゃないかとも思うのですが(^^;
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

回答ではないのですが、経験です。


みなさん同じような悩みを持ってたりするものですね。
私も先日までコーディングのみで帳票にデータを出力するルーチンを作成していましたが、本当に大変です。
VBでの単位がTwipで物理的な紙はやはりmmやcmの単位ですから大変です。
1Twip=1mm ならまったく問題はないのですが、そうではないので気が狂いそうになってコーディングしていました。
とにかく、出力する帳票がかなり無駄になります。(テスト出力の度に・・)
でも、コツを覚えると簡単ですので、一度気が狂いそうになるまでコーディングしてみるのはいかがですか?

printer.currentx=1000
printer.currenty=1000
printer.print "気が狂いそう"

上のコードだけでシステムにデフォルトで設定されているプリンターに出力されます。
なんて単純なコードでしょう・・・
コードが単純なだけにx,yの設定が大変でした。
    • good
    • 0

皆さんが、述べてるように 出力できるけど、コーディングが大変だと思います。

紙ベース(電子データでもいいけど)での細かいレイアウトも必要になる(きっと?)
あとでのメンテナンスもしにくいし、応用、使いまわしを考えてコーディングしないとたいへんな事になったりして。
エクセルがインストールされているPCならエクセルのオブジェクトを使用してみるのはどうなんでしょうか?
    • good
    • 0

ツールが無くても出力できます。


先に回答された方のおっしゃる通り、ガリガリ書けば。

特殊な帳票(ラインプリンターで6分の1で改ページとか)の場合などには、有効ですが、印刷してみないと出力される位置がわからないので、微調整しながらコーディングしていかなくてはなりません。

ツールを使用するメリットとして、まずレイアウトを見ることができます(イメージどおりにデザインできるし、ビューもありますし)。
また、ほとんどの帳票についてコーディングが発生する可能性が低いです。画像の取り込みも簡単です。

一概にどちらか一方でと考えるより(もちろん環境などのことも踏まえ)、出力する帳票によって、どちらが有効なのか考えて作成されると良いと思いますよ。
    • good
    • 0

こんにちは。

itohhといいます。

可能ですよ。
根性と時間が必要でしょうけど...
VisualBasicでは、Printerオブジェクトを使用してコードをガリガリ書けば良いんです。
VisualBasic4.xのころ、やったことがあります。
(凝った帳票ではないですけど...)

あと、Accessのレポートを使用して、帳票を出力するのは、反則ですか?
VisualBasicから、Accessのレポートを呼び出すことは出来たはずです。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q帳票作成、どうしてますか?

DBの値を帳票に反映させ、印刷を行おうと思ってます。
(DBはまだ未定です)

クリスタルレポートってあまり使ったことないので、あまり詳しく知りません。
ActiveReportっていうのを、ちょっとだけ使ったことがあります。
↑この発言でもわかるように、帳票関係にはかなり疎いです。

そこで質問です。
DBとの連携において、お勧めできる帳票ソフトを教えてください。
もし「あるDB限定で便利だよ」というのであれば、そちらのDB名の情報も欲しいです。
また、「ベタ書きが一番」と言う人がいたらそれの理由も教えてください。

できるだけ多くの情報が欲しいので、この発言は一週間ほどしてから締め切るつもりです。

どうかよろしくお願いいたします。

Aベストアンサー

単純な表を印刷するならGrid系コントロールの印刷機能で十分かと
べた書きするならVS-VIEWを奨めます

参考URL:http://www.galliver.co.jp/review/index.html

QVBで帳票するサンプル

Visual Studio Express 2012 for Windows DesktopでVBを使って帳票のプログラムを作ろうとしています。

サンプルソースがあればご紹介ください。

できれば、外部ツールを使わずに、追加費用が発生しない範疇で制作したいです。

Aベストアンサー

とりあえず、自力で文字を印刷する方法です。(ツールは一切使わない)
URLの「印刷する」や「文字列を印刷する」を見てください。

参考URL:http://dobon.net/vb/dotnet/graphics/index.html

QVB.NETで他のプロジェクトで作成したフォームを使う方法

こんにちは。
VB.NETのプロジェクトがぐちゃぐちゃで参照設定とかいろんなの呼んでしまっているので、新しく作成しなおしたいのですが、
新しいプロジェクトでプロジェクトを作成し、前のプロジェクトで必要なファイル(.vb、RESX)を新しいプロジェクトのフォルダにコピーしたのですが、
普通のモジュールは追加>新しい項目の追加でなんとか追加できたのですが、フォームの追加の仕方がわかりません><教えてくださいー

P.S. RESXファイルってフォームのデータが入ってるのでしょうか?そんな気がしてコピーしたのですが。

※VB6.0からVB.NETに以降した際にアップデート情報みたいなのがプログラム上にくっついてしまって.vbファイルも参照項目も増えまくってしまった

Aベストアンサー

ドラッグ&ドロップが使いやすい。
Windowsのエクスプローラでvbファイルをドラッグして、VS.NETのソリューションエクスプローラへドロップする。

QVB.NETのコンボボックスについて

VB6からVB.NETでプログラミングを始めました。
コンボボックスのクリアの仕方や設定の仕方、また
取り出し方等を教えて下さい。

色々とヘルプも見てみたのですが、よく解りません。
宜しくお願い致します。

Aベストアンサー

クリアだけだと思ってました。
追記します。

Itemを操作します


'登録
For i = 1 To 10
  Me.ComboBox1.Items.Add(i.ToString)
Next

'取得
For i = 0 To Me.ComboBox1.Items.Count - 1
  MsgBox(Me.ComboBox1.Items(i).ToString)
Next

'完全クリア
Me.ComboBox1.Items.Clear()

部分クリア
Me.ComboBox1.Items.RemoveAt(Index値)

QVB.NETのDataGridで、選択行の特定の列の内容を取得したい

タイトルにあるとおり、DataGridを使用している場合、実行時に選択された行の特定の列の内容を取得するにはどのようにすればよいのでしょうか?

DataGridは複雑で、まだよくわかっていません。
よろしくお願いします。

Aベストアンサー

選択している行番号は、dataGrid1.CurrentRowIndexでわかります。
行、列を指定して各セルにアクセスするには、
dataGrid1(行番号,列番号)でいいので
dataGrid1(dataGrid1.CurrentRowIndex,列番号)
で選択されている行の特定の列の内容を取得できます。
註:番号は、0始まり

Q【VB】コンボボックスにデータベースから取り出した値を入れたい

VB2005です。

表題の通りですがやり方がよくわかりません。
データベースに接続し、
SQLで重複しない値を取り出すところまではできています。

SQL=SELECT DISTINCT FieldName FROM TableName

VB6の時はこんなソースでした
Do Until rs.EOF
   Combo1.AddItem.Fields("FieldName")
   rs.MoveNext
Loop

VB2005ではどう書くのでしょう?
よろしくご教授ください。

Aベストアンサー

DataReaderを使用したサンプルです
※DBMSが記述されていないので、接続文字列はアクセスの場合です
※テキスト書きなので試験していません
※DataSetを使用する方法もありますが、コンボボックスに表示する程度ならDataReaderで大丈夫でしょう
※VB2005ならば、TableAdapterという便利なクラスがあるそうです
※VisualStudio2005 まださわってません orz

  Dim dbFilePath As String = "C:\testdb.mdb"
  Dim connectionString As String = String.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}", dbFilePath)
  Dim sql As String = "SELECT DISTINCT FieldName FROM TableName"
  Dim conn As New OleDbConnection(connectionString)
  Dim query As New OleDbCommand(sql, conn)

  Try
    conn.Open()
    Dim reader As OleDbDataReader = query.ExecuteReader()
    While (reader.Read())
      Me.ComboBox1.Items.Add(reader.Item("FieldName"))
    End While
    reader.Close()
  Catch ex As Exception
    MessageBox.Show(ex.Message)
  Finally
    conn.Close()
  End Try

DataReaderを使用したサンプルです
※DBMSが記述されていないので、接続文字列はアクセスの場合です
※テキスト書きなので試験していません
※DataSetを使用する方法もありますが、コンボボックスに表示する程度ならDataReaderで大丈夫でしょう
※VB2005ならば、TableAdapterという便利なクラスがあるそうです
※VisualStudio2005 まださわってません orz

  Dim dbFilePath As String = "C:\testdb.mdb"
  Dim connectionString As String = String.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Sourc...続きを読む

QForm間の値の渡し方

1つのForm上のコマンドボタンで別のFormを表示、そこで変数に値を入れ、そのFormを閉じ、元のFormでその変数を使いたいのですが、どうもうまくいきません。
実施したやり方は、一方のFormの宣言領域で、”Public abc As String”を宣言、両方のFormの(変数に値を入れた方と変数を使う方の)プロシージャーの宣言では引数として(abc As String)と記述しました。
因みに、両プロシージャーともイベントプロシージャーです。何か基本的なことができていないのだとは思いますが、どなたか教えていただけませんか?よろしくお願いします。

Aベストアンサー

すでに何件か回答があがっていますので、少し変わった方法をご参考までに。

あまり使われませんが、Formにはtagというプロパティがあります。
これは「文字列形式であれば何でも格納できる」という、上手く使えば便利なプロパティです。

FormAからFormBを呼び出し、FormBで変更した値をFormA.tagにセットします。
ここでFormBをUnloadしてもFormA.tagの値は影響を受けないので自由に使えます。

複数の値を呼び出し元に戻してやる場合に、区切り文字(カンマなど)で連結した文字列をtagに格納し、呼び出し元で区切り文字でsplitして、複数の値を受け渡すという手法をよく使っています。

QDataGridViewの、選択されている行を取り出したい

いつもお世話になっております。

DataGridViewに関して、選択されているレコードをDataRow型で別フォームに渡してから、各項目をテキストボックスに表示したいのですがうまくいきません(DataRow型にこだわっているわけではないのですが、レコード1件丸ごと取得する型を他に知らないので例として挙げました)。

DataGridViewのCurrentRowプロパティや、SelectedRows(0)をDataRow型に代入する試みをしましたが、型変換できませんでした。

DataGridViewで選択されているレコード一件まるごと変数に渡す方法というのはあるのでしょうか?

ちなみに、SelectionModeはSelectFullRowに、MultiSelectはFalseにしてあります。

ご存知の方ご教授いただけると助かります。
よろしくお願いします。

Aベストアンサー

>おっしゃるとおりやってみたのですが、どうもやはり型変換ができませんでした。
>参照しているのはDataTable型なわけですから、DataRowも取り出せそうな気はするのですが。。。

えー・・・スイマセン
今度はコーディングして確認してみたところ、
なにやら、1ステップすっ飛ばしていました

下記の手順にて取得可能です

[C#]
System.Windows.Forms.DataGridViewRow dgr = this.DataGridView1.CurrentRow;
System.Data.DataRowView drv = (System.Data.DataRowView)dgr.DataBoundItem;
System.Data.DataRow dr = (System.Data.DataRow)drv.Row;

[VB2005]
Dim dgr As System.Windows.Forms.DataGridViewRow = Me.DataGridView1.CurrentRow
Dim drv As System.Data.DataRowView = CType(dgr.DataBoundItem, System.Data.DataRowView)
Dim dr As System.Data.DataRow = CType(drv.Row, System.Data.DataRow)

※最後のキャストを変更すれば、型付データセットにも対応可能のはずです

>おっしゃるとおりやってみたのですが、どうもやはり型変換ができませんでした。
>参照しているのはDataTable型なわけですから、DataRowも取り出せそうな気はするのですが。。。

えー・・・スイマセン
今度はコーディングして確認してみたところ、
なにやら、1ステップすっ飛ばしていました

下記の手順にて取得可能です

[C#]
System.Windows.Forms.DataGridViewRow dgr = this.DataGridView1.CurrentRow;
System.Data.DataRowView drv = (System.Data.DataRowView)dgr.DataBoundItem;
System.Data...続きを読む

QDataGridViewで指定したセルの値を取得

こんにちは。

VB2008のDataGridViewで指定したセルの値を取得をする方法がわかりません。
どなたか教えてください。

Aベストアンサー

こんばんは.

 Dim Data As String
 Data = Me.DataGridView(0, 2).Value
 MsgBox(Data)

みたいな感じで取れないですかね???

QVBの処理結果をEXCELシートへ出力したい

VB6で処理した結果を、EXCELシートへ編集しプリンターへ出力する方法を教えて下さい。
(1)VBからEXCELをどのようにして、起動させるのか。
(2)EXCELファイルのオープンはどのようにするのか。
(3)BVとEXCEL間の制御が分らない。

Aベストアンサー

こんなかんじでしょうか。

Sub test()

Dim oXl As Object 'Excel
Dim FileNM As String 'ファイル名
Dim BookNM As String 'ブック名
Dim SheetNM As String 'シート名

FileNM = "c:\test.xls" 'ファイル名

Set oXl = CreateObject("Excel.Application") 'excel起動
oXl.Workbooks.Open (FileNM) 'ブックを開く
BookNM = oXl.ActiveWorkbook.Name 'ブック名を取得
SheetNM = oXl.ActiveSheet.Name 'シート名を取得

oXl.Workbooks(BookNM).Worksheets(SheetNM).Cells(1, 1).Value = "test" 'A1セルに「Test」をセット
oXl.Workbooks(BookNM).Save '保存
oXl.Visible = True '表示

'oXl.Workbooks(BookNM).Close '閉じる
'oXl.Quit '終了
'Set oXl = Nothing '解放

End Sub

こんなかんじでしょうか。

Sub test()

Dim oXl As Object 'Excel
Dim FileNM As String 'ファイル名
Dim BookNM As String 'ブック名
Dim SheetNM As String 'シート名

FileNM = "c:\test.xls" 'ファイル名

Set oXl = CreateObject("Excel.Application") 'excel起動
oXl.Workbooks.Open (FileNM) 'ブックを開く
BookNM = oXl.ActiveWorkbook.Name 'ブック名を取得
SheetNM ...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報