|
▼VBWASURETA さん:
本当にありがとうございます。
>プリンタ出力の前に質問があります。
>>いま作成しているモジュールはAccessからExcelのシートに書き出し
>>Excelのシートを出力したいのです。
>
>この部分はできているのでしょうか?
>又、シートに出力はエクスポートのみして印刷操作はExcelからでしょうか?
AccessでExcelを開きシートにデータを入力しています。
下記のサンプルは今まで見たサンプルの中で非常にわかりやすいです。
コメントも書かれていて非常にうれしいです。
下記のモージュールで通常使うプリンタ名取得関数
についてなのですが、通常に使うプリンタは変更プリンタみたく
Const trDefaultPrinter = "KYOUSERA DEN26"
に固定してしまえば通常使うプリンタ名取得関数は必要ないのですか?
他の人もVBAの知識がないので今は余分なモジュールはなくしたいのです。
あとコンパイルをかけると
Set WshNet = CreateObject("Wscript.Network")
の部分でコンパイルエラーになります。変数が定義されていませんとなります。
参照設定で何か設定しないといけないのですか?
よろしくお願いします。
VBA デバック方法についてのメモの参考にさせていただきます。
ありがとうござます。
>
>sub 印刷_Click()
> Const strOutPrinter = "FUJITSU VSP4901" '変更プリンタ
> Dim strDefaultPrinter As String
>
> '現在の通常使うプリンタ名を列挙
> If GetDefaultPrinter("", "", strDefaultPrinter) = False Then
> MsgBox "通常使うプリンタが見つかりませんでした"
> Exit Sub
> End If
>
> If (MsgBox(印刷を開始しますか?", vbYesNo) = vbYes) Then
>
> '指定のプリンタに変更
> If (FncPrintOut( strOutPrinter ) = False) Then
> MsgBox strOutPrinter & ":通常使うプリンタが見つかりませんでした"
> Exit Sub
> End If
>
> '// ここに印刷処理のコードを追加してください
>
>
> '元のプリンタに通常使うプリンタとして戻す
> If (FncPrintOut( strDefaultPrinter ) = False) Then
> MsgBox strDefaultPrinter & ":通常使うプリンタが見つかりませんでした"
> Exit Sub
> End If
>
> End If
>End Sub
>
>
>'プリンタ変更関数
>Function FncPrintOut(StrPrinterName As String ) As Boolean
> Dim strdefoultprt As String
> Dim i As Integer
>
> FncPrintOut = False
> Set WshNet = CreateObject("Wscript.Network")
> With WshNet.EnumPrinterConnections
> For i = 0 To .Count - 1 Step 2
> If (.Item(i + 1) = StrPrinterName) Then '変更するプリンタが見つかった
> 'ここで通常使うプリンタとして設定する。
> WshNet.SetDefaultPrinter .Item(i + 1) '.Item(i + 1) はインストールされているプリンタ名の配列
> FncPrintOut = True
> Exit For
> End If
> Next
> End With
>
>End Function
>
>'通常使うプリンタ名取得関数
>Function GetDefaultPrinter(strUser, strPassword, oDefault) As Boolean
>
> On Error Resume Next
> GetDefaultPrinter = False
>
> Dim oService
> Dim oPrinter
> Dim iRetval
> Dim oEnum
>
> iRetval = 1
>
> If PConnect("", kNameSpace, strUser, strPassword, oService) Then
>
> Set oEnum = oService.ExecQuery( _
> "select DeviceID from Win32_Printer where default=true")
> Else
> GetDefaultPrinter = 1
> Exit Function
>
> End If
>
> If Err.Number = 0 Then
> GetDefaultPrinter = True
> For Each oPrinter In oEnum
>
> oDefault = oPrinter.DeviceID
> Next
>
> iRetval = 0
>
> Else
> wscript.echo "通常使うプリンタを取得できません" & vbCrLf _
> & Hex(Err.Number) & " " & Err.Description
> End If
>
> 'GetDefaultPrinter = iRetval
>
>End Function
>
>
>Function PConnect(strServer, strNameSpace, strUser, _
> strPassword, oService)
>
> On Error Resume Next
>
> Dim oLocator
> Dim bResult
>
> oService = Null
>
> bResult = False
>
> Set oLocator = CreateObject("WbemScripting.SWbemLocator")
>
> If Err = 0 Then
>
> Set oService = oLocator.ConnectServer(strServer, _
> strNameSpace, strUser, strPassword)
>
> If Err = 0 Then
>
> bResult = True
>
> oService.Security_.impersonationlevel = 3
> oService.Security_.Privileges.AddAsString _
> "SeLoadDriverPrivilege"
>
> Err.Clear
>
> Else
>
> wscript.echo "処理エラー" & vbCrLf _
> & Hex(Err.Number) & " " & Err.Description
> End If
>
> Else
> wscript.echo "処理エラー" & vbCrLf _
> & Hex(Err.Number) & " " & Err.Description
>
> End If
>
> PConnect = bResult
>
>End Function
|
|