Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


502 / 2272 ツリー ←次へ | 前へ→

【11410】excel出力先をデスクトップに指定する VBA初心者 10/1/21(木) 21:03 質問[未読]
【11412】Re:excel出力先をデスクトップに指定する 超初心者 10/1/22(金) 11:06 発言[未読]
【11415】Re:excel出力先をデスクトップに指定する VBA初心者 10/1/22(金) 12:04 回答[未読]
【11416】Re:excel出力先をデスクトップに指定する VBA初心者 10/1/22(金) 12:48 お礼[未読]
【11417】Re:excel出力先をデスクトップに指定する VBA初心者 10/1/22(金) 12:54 お礼[未読]

【11410】excel出力先をデスクトップに指定する
質問  VBA初心者  - 10/1/21(木) 21:03 -

引用なし
パスワード
   こんばんわ。
VBA初心者です。
OS:XP
office:Access2007

フォームからエクセルファイルでデータを出力しているのですが、
出力先を、使用しているユーザのデスクトップに指定するにはどうしたら
いいでしょうか。
例:c:\document and setting\users\デスクトップ\に出力したいです。
下記に一連のコードを記載しました。
 xlsFileName = "C:\" & Format(Date, "yyyy_mm_dd") & "ホストデータ.xls"
のところを
 「xlsFileName = "SpecialFolders("Desktop"):\" & Format
  (Date, "yyyy_mm_dd") & "ホストデータ.xls"」として、
使用しているユーザのデスクトップに保存されるでしょうか。
お忙しい中申し訳ないですが、どなたかご教授をお願いします。

----------------------------------------------------------------

Private Sub コマンド_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

  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 & "   , AB_COMM AS 事業所 "
  strSQL = strSQL & "   , NEW_HOSTNAME AS 新PC名 "
  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

【11412】Re:excel出力先をデスクトップに指定する
発言  超初心者  - 10/1/22(金) 11:06 -

引用なし
パスワード
   ▼VBA初心者 さん:
>  「xlsFileName = "SpecialFolders("Desktop"):\" & Format
>  (Date, "yyyy_mm_dd") & "ホストデータ.xls"」として、
> 使用しているユーザのデスクトップに保存されるでしょうか。

Debug.Print xlsFileName
にて、xlsFileNameのデータの中身を確認してみると良いです。
きちんとしたファイル名(フルパス)になっていたら出力されます。


余談ですが、私のAcc2000では、デスクトップパスは、
CreateObject("WScript.Shell").SpecialFolders("Desktop")
このようにして取得します。

2007から(?)の機能でCreateObjectなしでも使えるように
なっているのかもしれませんが、一応、参考までに。。。

【11415】Re:excel出力先をデスクトップに指定する
回答  VBA初心者  - 10/1/22(金) 12:04 -

引用なし
パスワード
   ▼超初心者 さん:
こんにちは。
 自分なりに修正して

sub
 
Dim objWShell As Object 'WScript.Shell
Dim strDesktopPath As String 'デスクトップの場所

'Windows Script Hostのオブジェクトを作成する
Set objWShell = CreateObject("WScript.Shell")

'スペシャルフォルダ(特殊フォルダ)の場所を返す
strDesktopPath = objWShell.SpecialFolders("Desktop")

Set DB = CurrentDb
  xlsFileName = "strDesktop" & Format(Date, "yyyy_mm_dd") & "履歴データ一覧.xls"
   Debug.Print xlsFileName 
        .
        .
        .(途中省略)
xlsWkb.SaveAs xlsFileName, FileFormat:=56
  xlsWkb.Close: Set xlsWkb = Nothing
  xlsApp.Quit: Set xlsApp = Nothing
        
end sub

 としましたがユーザのデスクトップに書き出されません。
デバックプリントで出力してもどこをどのように修正するのか
わかりません。
どうかご教授をお願いします。 

>▼VBA初心者 さん:
>>  「xlsFileName = "SpecialFolders("Desktop"):\" & Format
>>  (Date, "yyyy_mm_dd") & "ホストデータ.xls"」として、
>> 使用しているユーザのデスクトップに保存されるでしょうか。
>
>Debug.Print xlsFileName
>にて、xlsFileNameのデータの中身を確認してみると良いです。
>きちんとしたファイル名(フルパス)になっていたら出力されます。
>
>
>余談ですが、私のAcc2000では、デスクトップパスは、
>CreateObject("WScript.Shell").SpecialFolders("Desktop")
>このようにして取得します。
>
>2007から(?)の機能でCreateObjectなしでも使えるように
>なっているのかもしれませんが、一応、参考までに。。。

【11416】Re:excel出力先をデスクトップに指定する
お礼  VBA初心者  - 10/1/22(金) 12:48 -

引用なし
パスワード
   ▼超初心者 さん
VBA初心者です。
いろいろ考えてみたら、
Dim myDir As Stringと宣言して
xlsFileName = myDir & "\" & Format(Date, "yyyy_mm_dd") & "履歴データ一覧.xls"
と変更したら成功しました。

お手数おかけして申し訳ございません。
有難うございました。


>▼超初心者 さん:
>こんにちは。
> 自分なりに修正して
>
>sub
> 
>Dim objWShell As Object 'WScript.Shell
>Dim strDesktopPath As String 'デスクトップの場所
>
>'Windows Script Hostのオブジェクトを作成する
>Set objWShell = CreateObject("WScript.Shell")
>
>'スペシャルフォルダ(特殊フォルダ)の場所を返す
>strDesktopPath = objWShell.SpecialFolders("Desktop")
>
>Set DB = CurrentDb
>  xlsFileName = "strDesktop" & Format(Date, "yyyy_mm_dd") & "履歴データ一覧.xls"
>   Debug.Print xlsFileName 
>        .
>        .
>        .(途中省略)
>xlsWkb.SaveAs xlsFileName, FileFormat:=56
>  xlsWkb.Close: Set xlsWkb = Nothing
>  xlsApp.Quit: Set xlsApp = Nothing
>        
>end sub
>
> としましたがユーザのデスクトップに書き出されません。
>デバックプリントで出力してもどこをどのように修正するのか
>わかりません。
>どうかご教授をお願いします。 
>
>>▼VBA初心者 さん:
>>>  「xlsFileName = "SpecialFolders("Desktop"):\" & Format
>>>  (Date, "yyyy_mm_dd") & "ホストデータ.xls"」として、
>>> 使用しているユーザのデスクトップに保存されるでしょうか。
>>
>>Debug.Print xlsFileName
>>にて、xlsFileNameのデータの中身を確認してみると良いです。
>>きちんとしたファイル名(フルパス)になっていたら出力されます。
>>
>>
>>余談ですが、私のAcc2000では、デスクトップパスは、
>>CreateObject("WScript.Shell").SpecialFolders("Desktop")
>>このようにして取得します。
>>
>>2007から(?)の機能でCreateObjectなしでも使えるように
>>なっているのかもしれませんが、一応、参考までに。。。

【11417】Re:excel出力先をデスクトップに指定する
お礼  VBA初心者  - 10/1/22(金) 12:54 -

引用なし
パスワード
   ▼超初心者 さん
記載漏れです。

Dim myDir As Stringと宣言して
myDir = CreateObject("WScript.Shell").SpecialFolders("Desktop")
xlsFileName = myDir & "\" & Format(Date, "yyyy_mm_dd") & "履歴データ一覧.xls"
          ・
          ・
          ・
xlsWkb.SaveAs xlsFileName, FileFormat:=56
  xlsWkb.Close: Set xlsWkb = Nothing
  xlsApp.Quit: Set xlsApp = Nothing

としたら成功しました。    


>▼超初心者 さん
>VBA初心者です。
>いろいろ考えてみたら、
>Dim myDir As Stringと宣言して
>xlsFileName = myDir & "\" & Format(Date, "yyyy_mm_dd") & "履歴データ一覧.xls"
>と変更したら成功しました。
>
>お手数おかけして申し訳ございません。
>有難うございました。
>
>
>>▼超初心者 さん:
>>こんにちは。
>> 自分なりに修正して
>>
>>sub
>> 
>>Dim objWShell As Object 'WScript.Shell
>>Dim strDesktopPath As String 'デスクトップの場所
>>
>>'Windows Script Hostのオブジェクトを作成する
>>Set objWShell = CreateObject("WScript.Shell")
>>
>>'スペシャルフォルダ(特殊フォルダ)の場所を返す
>>strDesktopPath = objWShell.SpecialFolders("Desktop")
>>
>>Set DB = CurrentDb
>>  xlsFileName = "strDesktop" & Format(Date, "yyyy_mm_dd") & "履歴データ一覧.xls"
>>   Debug.Print xlsFileName 
>>        .
>>        .
>>        .(途中省略)
>>xlsWkb.SaveAs xlsFileName, FileFormat:=56
>>  xlsWkb.Close: Set xlsWkb = Nothing
>>  xlsApp.Quit: Set xlsApp = Nothing
>>        
>>end sub
>>
>> としましたがユーザのデスクトップに書き出されません。
>>デバックプリントで出力してもどこをどのように修正するのか
>>わかりません。
>>どうかご教授をお願いします。 
>>
>>>▼VBA初心者 さん:
>>>>  「xlsFileName = "SpecialFolders("Desktop"):\" & Format
>>>>  (Date, "yyyy_mm_dd") & "ホストデータ.xls"」として、
>>>> 使用しているユーザのデスクトップに保存されるでしょうか。
>>>
>>>Debug.Print xlsFileName
>>>にて、xlsFileNameのデータの中身を確認してみると良いです。
>>>きちんとしたファイル名(フルパス)になっていたら出力されます。
>>>
>>>
>>>余談ですが、私のAcc2000では、デスクトップパスは、
>>>CreateObject("WScript.Shell").SpecialFolders("Desktop")
>>>このようにして取得します。
>>>
>>>2007から(?)の機能でCreateObjectなしでも使えるように
>>>なっているのかもしれませんが、一応、参考までに。。。

502 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078193
(SS)C-BOARD v3.8 is Free