|
▼小僧 さん:
こんにちは。
VBA初心者です。
>TransferSpreadsheet のヘルプはご覧になられましたか?
>(Accessのヘルプではなく、VBAのヘルプですね)
いろいろなサイトから探してみました。その結果、
「acExport, 8,」の部分はexcel2000と97形式みたいなことが
書かれてました。自信がないので教えてくだされば幸いです。
>オートメーションを使う必要がありそうですね。
参考記述例を書いて頂きありがとうございます。
かなりの勉強になります。
>strSQL = ""
>strSQL = strSQL & " SELECT 登録日 "
>strSQL = strSQL & " , QH_COMM AS 事業所 "
>strSQL = strSQL & " , NEW_HOSTNAME AS 新PC名 "
>strSQL = strSQL & " , QH_IPADR AS IPアドレス "
>strSQL = strSQL & " , MEMO2 AS メモ1 "
>strSQL = strSQL & " , MEMO3 AS メモ2 "
>strSQL = strSQL & " , MEMO4 As メモ3 "
>strSQL = strSQL & " , MEMO5 As 事項 "
>strSQL = strSQL & " FROM " & Me.RecordSource & " "
>strSQL = strSQL & " WHERE " & strWhere
の形式で記述すると、
「実行時エラー'3075'
クエリ式'登録日 'の構文エラー:演算子がありません。」というメッセージ
が表示されます。
strSQL = "SELECT 登録日,QH_COMM AS 事業所,NEW_HOSTNAME AS 新PC名,QH_IPADR AS IPアドレス,NEW_USERNAME AS 新ユーザ名,NEW_DOMAIN AS 新ドメイン名,Office判定,ソフト1,ソフト2,ソフト3,特記事項 FROM " & Me.RecordSource _
& " WHERE " & Me.Filter
の形式にしたらエラーメッセージが表示されないで処理されます。
書き方の違いだと思うのですが、どこが違うのかが判別できません。
また、出力したエクセルファイルを開こうとすると、
「ファイル各k銚子が示す形式と異なります。このファイルが破損していなこと、信頼できる
発行元からのファイルであることを確認して下さい。ファイルを今すぐ開きますか?」
のエラーメッセージが表示されてしまいます。
エクセルファイルを保存するときに「,FileFormat:=XlFileFormat.xlExcel8」の記述を入れたいのですが、どのタイミングで挿入すべきかわかりません。
どうかお時間のあるときご教授願います。
>▼VBA初心者 さん:
>こんにちは。
>
>>「acExport, 8,」の部分が解釈できません。
>
>TransferSpreadsheet のヘルプはご覧になられましたか?
>(Accessのヘルプではなく、VBAのヘルプですね)
>
>英語のページしか見つかりませんでしたが
>MSの
>
>h tp://msdn.microsoft.com/en-us/library/bb225982.aspx
>MSのサイトにもありますね。
>
>
>> エクセルのセル内に綺麗に収まり画面にデータが出力されます。
>> TransferSpreadsheetを使っても同じように出力できますでしょうか。
>
>Output To メソッド も TransferSpreadsheet も
>お手軽にExcelへの出力を行ってくれる半面
>今回の様に細かく書式やセルの大きさを設定できない
>欠点もあります。
>
>以前に
>
>>> Output To メソッドを使った後に書式を変更する事も可能ですが
>>> ExcelVBAとオートメーションの知識が必要となってきます。
>
>と回答させて頂きましたが、
>オートメーションを使う必要がありそうですね。
>
>Private Sub コマンド35_Click()
>Dim DB As DAO.Database
>Dim RS As DAO.Recordset
>Dim strSQL As String
>Dim strWhere As String
>Dim xlsApp As Object
>Dim xlsWkb As Object
>Dim xlsFileName As String
>Dim i As Long
>
> 'フィルタを掛けた時点で Hitするものがなかったような場合は
> 'メッセージを出して処理を中止します。
> If Me.Recordset.EOF Then
> MsgBox Prompt:="出力するデータがありませぬ" _
> , Buttons:=vbExclamation
> Exit Sub
> End If
>
> Set DB = CurrentDb
> xlsFileName = "C:\" & Format(Date, "yyyy_mm_dd") & "ホストデータ.xls"
>
> 'もし Filterプロパティになにも記述されていなかったら
> 'フォームに表示されている全データを出力するようにします。
>
> If Me.Filter = "" Then
> strWhere = True
> Else
> strWhere = Me.Filter
> End If
>
>
> '変数に SQL文を代入します。
> 'Filter プロパティに記述されているものを抽出条件とします。
>
> strSQL = ""
> strSQL = strSQL & " SELECT 登録日 "
> strSQL = strSQL & " , QH_COMM AS 事業所 "
> strSQL = strSQL & " , NEW_HOSTNAME AS 新PC名 "
> strSQL = strSQL & " , QH_IPADR AS IPアドレス "
> strSQL = strSQL & " , MEMO2 AS メモ1 "
> strSQL = strSQL & " , MEMO3 AS メモ2 "
> strSQL = strSQL & " , MEMO4 As メモ3 "
> strSQL = strSQL & " , MEMO5 As 事項 "
> strSQL = strSQL & " FROM " & Me.RecordSource & " "
> strSQL = strSQL & " WHERE " & strWhere
>
> 'レコードセットに対象のデータを代入します
> Set RS = DB.OpenRecordset(strSQL, dbOpenSnapshot)
>
> '以下Excelの操作------------------------------------------
> Set xlsApp = CreateObject("Excel.Application")
> xlsApp.Visible = True
>
> Set xlsWkb = xlsApp.workbooks.Add
> With xlsWkb.Sheets("Sheet1")
>
> For i = 0 To RS.Fields.Count - 1
> .Range("A1").Offset(0, i).Value = RS.Fields(i).Name
> Next i
>
> .Range("A2").CopyFromRecordset RS
> .Columns("A:H").AutoFit
> End With
>
> xlsWkb.SaveAs xlsFileName
> xlsWkb.Close: Set xlsWkb = Nothing
> xlsApp.Quit: Set xlsApp = Nothing
>
> MsgBox "出力が終了しました"
>
>End Sub
>
>
>ご参考になれば幸いです。
|
|