- ベストアンサー
アクセスからエクセルへ出力時のシート名について
DoCmd.TransferSpreadsheetでExcelへデータをエクスポートする際に、 シート名にハイフンを使うことはできないでしょうか? 例えばexcelシート名を"pre-date"とする。 通常だとハイフンはアンダーバーに変換されて保存されますが、 無理矢理、ハイフンをシート名に入れる方法はありませんでしょうか? よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Office2002と2010で試すと・・確かに。 Excel上で手動で変更は出来ましたので同じことをやらせれば・・。 ただし、HyperLink関数やInDirect関数では、 シングルクォーテーションで囲む必要が出てくるなどデメリットも。 http://app.m-cocolog.jp/t/typecast/260142/217579/71452397 下記はOffice2010の場合です。"sheet-X" → "sheet_X" → "sheet-X"に変わってゆきます。 ご参考までということで。 Sub test() Const tblName As String = "テーブル名" Const xlName As String = "e:\test.xlsx" Dim oXL As Object Dim oBK As Object DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, tblName, xlName, False, "sheet-X" 'Excel操作部分 Set oXL = CreateObject("excel.application") Set oBK = oXL.workbooks.Open(xlName) oBK.Sheets("sheet_X").Name = "sheet-X" oBK.Close saveChanges:=True ' oXL.UserControl = True ' oXL.Visible = True Set oXL = Nothing MsgBox "終了" '確認のために開きなおす CreateObject("shell.application").shellexecute xlName End Sub
お礼
いただいたコードで試したところ、思った通りの結果を得られました! できるのかなあ?と思い質問しましたが、 2度も変換が必要になるんですね・・・。 面倒な質問にもかかわらず、ご回答いただきましてありがとうございました。 私事ですが、なかなか試せなかったため、 お礼が遅くなってしまい失礼致しました。