• ベストアンサー

AccessVBAから、Excelシート内の列の書式設定がしたい!!

とうとう朝になってしまいました。 もう丸2日間も悩んでいます。 どなたか解決方法をご存知の方、よろしくお願いいたします。 AccessVBA内のモジュールからExcelファイルを開いて、そこへデータを出力するという処理は動きます。 そこで、出力する前に、Excelのセルの書式設定を列毎にしようとしていますが、どうしても上手くいきません。 下記のような感じでは、使えないのでしょうか? Set xls = GetObject("c:AAA\TEST.xls") xls.Application.Windows(1).Visible = True xls.Application.worksheets("sheet1").Activate xls.Application.worksheets("sheet1").RANGE("A:A").Selection.NumberFormatLocal = "\#,##0;\-#,##0" なにか良い方法がありましたら教えてください!! よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • wingtodo
  • ベストアンサー率56% (9/16)
回答No.3

No1さんの回答の xlApp.cells(1, 1).NumberFormat = "$#,##0;$-#,##0" を xlApp.Columns("A:A").NumberFormatLocal = "\#,##0;\-#,##0" したらどうでしょ

mamappi82
質問者

お礼

上手くいきました。 ありがとうございました。m(_ _)m

その他の回答 (2)

  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.2

逆にACCESS知らないんですけどEXCEL党の僕からみると明らかにSelectionが要らないです。

mamappi82
質問者

お礼

回答ありがとうございました。m(__)m ちょっと試してみましたが、 今回の件では、 Selectionはあまり問題ではさそうでした。

noname#22222
noname#22222
回答No.1

Excel は操作したこともないプログラマですが、 なるほど、失敗しますね! Private Sub cmdImport_Click()   Dim xlApp As Object   Dim xlBook As Object      Set xlApp = CreateObject("Excel.Application")   Set xlBook = xlApp.workbooks.Open("D:\Sales2005\営業報告書.xls")   xlApp.Visible = True   xlApp.cells(1, 1) = 123400   xlApp.cells(1, 1).NumberFormat = "$#,##0;$-#,##0" End Sub これで、\123,400 と表示されました。 ビックリしたーという感じです!

mamappi82
質問者

補足

回答ありがとうございます。m(_ _)m 参考書などにも、cellsの例は載っているので、多分cells だと上手くいくと思います。 ここがRangeでも上手くいくと良いのですが・・・。 後ほど、上記の文を応用して、試してみようと思います。 上手くいくといいです・・・。

関連するQ&A

  • Worksheets("Sheet1").ActivateのActivateの反対語は

    ACCESSのVBAからの操作です ----------------------------------------------- 略 Set Xls = GetObject(myFile2) Xls.Application.Windows(1).Visible = True Xls.Application.worksheets("Sheet1").Activate<--- ------------------------------------------------ 上記でActivate、の反対にしたいとき、何ですか 最後のポイント↓を入れると ("Sheet1").<--- 選択値が出てくる場合がありますが(この場合ではない) この場合選択値がでないので、 よろしくお願いします

  • ACCESSのVBで、エクセルファイルの最終行を取得

    題名の通り ファイルの最終行を知りたいのです ざっと エクセルファイルをオープンするは下記のように すると思いますが その後、最終行を取得するのに、どうするのか 教えてください ーーーーーーーーー------------ Set Xls = GetObject("エクセルのファイル") Xls.Application.Windows(1).Visible = True Xls.Application.worksheets("Sheet1").Activate

  • 2つのエクセルファイルのオブジェクトどちらがActiveか知る方法

    ACCESSのVBAにおいてです Set Xls = GetObject("File1.xls") Set Xls2 = GetObject("File2.xls") Xls.Application.Windows(1).Visible = True Xls2.Application.Windows(1).Visible = True Xls.Application.worksheets("Sheet1").Activate こんな風にして行って、 File1.xls File2.xls のCellを参照しています この場合どちらのSheet1、がActive、なのか知るのに どんな命令語を使うのですか よろしくおねがいします 実は、Xls、Xls2、のオブジェクト名では File1.xls、File2.xls、の区分ができなくて困っています しかし、今の質問はどちらがActiveか知る手立てが わかればたすかります

  • エクセルの「ウィンドウ→表示しない」について

    エクセルを開いていて メニューバーのウィンドウ→表示しなし とするとSheet全体が見えなくなります また ウィンドウ→再表示、とすると 見えるようになります さて、 これをACCESSのVBで操作すると どの命令になるのでしょうか 参考までに ACCESSからエクセルを参照するときは ---------------------------------------- Set Xls = GetObject(myFile2) Xls.Application.Windows(1).Visible = True Xls.Application.worksheets("Sheet1").Activate ---------------------------------------- こんな風にしますが 終わり方がまずいために 質問にあるように、表示されなくなります 余計なことを書きましたが 質問点は画面を表示するVBAコードは?、です

  • ACCESSのVBAにてExcelのシートをコピーしたい

    入庫.xlsに現在、"原紙"というシートがあります。 入庫.xlsには、"原紙"と入庫のあった日のシートがあるようにしたいのです。 今日、入庫があれば、入庫.xlsには "原紙"と"20"のシートが存在するようにしたいのです。 AccessのVBAにて1文でシートのコピーってできないでしょうか? Dim oApp As Object Dim StWk1 As String Dim SHizk As String Dim Hizk As Integer Hizk = DatePart("d", Me![入庫日付]) SHizk = CStr(Hizk) StWk1 = "c:入庫.xls" Set Xls = GetObject(StWk1) Xls.Application.Windows(1).Visible = True Xls.Application.worksheets("原紙").Copy After:=Xls.Application.worksheets(SHizk) Xls.Application.worksheets(SHizk).Activate 上記のように作成してみたのですが、実行すると、 Xls.Application.worksheets("原紙").Copy After:=Xls.Application.worksheets(SHizk) のところで、エラーになります。 実行エラー'9': インデックスが有効範囲にありません。 のメッセージが表示されます。 教えてください。

  • 「ほかのデータソースへのリンクが含まれています。」→VBで操作

    Excelを開いた時に、下記の画面が出ます -------------------------------------------------- このブックには、ほかのデータソースへのリンクが含まれています。 ・リンクを更新すると、Excelは更新のデータを取り込もうとします。 ・リンクを更新しないと、以前の情報が利用されます。 □更新する、□更新しない、□ヘルプ -------------------------------------------------- このファイルをACCESSのVBで操作、つまり Set Xls = GetObject(myFile) Xls.Application.windows(1).Visible = True Xls.Application.Worksheets("Sheet1").Activate と(Open)して、該当Cellを読もう、としています。 この時、上記のメッセージが出るのですが □更新しない、にVBで答えるには、どうするんですか? よろしくお願いします。

  • Access2000からExcel2000の罫線の削除

    Access2000でデータを抽出し、Excel2000に出力する作業を行っています。 VBAで以下のような記述で行っています。 'ファイルパス指定 lBookNm = "D:\temp\test.xls" 'Excelのオブジェクトを設定 Set lExcelObj = CreateObject("Excel.Application") 'Excelを開く lExcelObj.Workbooks.Open (lBookNm) 'Excelの表示 lExcelObj.Application.Visible = True 'シートのコピー lExcelObj.Worksheets("master").copy After:=lExcelObj.Worksheets("master") lExcelObj.Worksheets("master (2)").Name = "テスト" 'シートの操作 With lExcelObj.Worksheets("master") .Activate .Cells(8, 1).Value = "test" End With lExcelObj.ActiveWorkbook.Save '保存 以下の2点について、わかる方おりましたらご教示お願いします。 1、罫線の削除 罫線を削除したいと思い、以下の記述をしましたが、 「アプリケーション定義またはオブジェクト定義のエラーです。」となってしまいます。 どのように記述すればよいでしょうか。 With lExcelObj.Worksheets("master")   .Range("B39:B42").Select   .Application.Selection.Borders(xlEdgeRight).LineStyle = xlNone End With 2、シートの削除 シートを削除したいと思い、以下のように記述しましたが、 Excel上で、「シートを削除します。」「OK」、「キャンセル」 と問い合わせ画面が出てしまいます。 無条件で削除を行いたいのですが、可能でしょうか。 lExcelObj.Worksheets("テスト").Delete

  • Excel2003VBA

    お世話になっております。 手作業マクロの記録で下記作業を行い、一部修正をして一度はうまく動作していたのですが 1点 問題が御座いまして独自に色々試していたのですが、どうにもうまくいかないので どなたかご教授いただけませんでしょうか。 Sub ●●用() ' ' ●●用 Macro ' 12月1月の店舗を抽出し新しいブックに移動する。 ' Selection.AutoFilter Field:=3, Criteria1:="=12月", Operator:=xlOr, _ Criteria2:="=1月" Selection.AutoFilter Field:=8, Criteria1:="(店名)" Range("A4:W2076").Select Selection.Copy Sheets.Add ActiveSheet.Paste Application.CutCopyMode = False Worksheets("Sheet1").Select Worksheets("Sheet1").Move Workbooks("営業部まとめ.xls").Sheets("全件表示").Activate Selection.AutoFilter Field:=3 Selection.AutoFilter Field:=8 Range("A5").Select ActiveWorkbook.Save End Sub まず、 >Worksheets("Sheet1").Move ここだけあれば >Worksheets("Sheet1").Select こっちは必要ないでしょうか? あと、上記の中で > Worksheets("Sheet1").Select この部分なのですが、毎回「Sheet1」とは限らないので「アクティブシート」にしたいと思い色々試してみましたが 全てエラーとなり、結局元にもどしてしまいました。 > Worksheets("Sheet1").Move あと出来ればこれも移動させた後でデスクトップに名前を付けて保存までしたいのですが どのようなコードを追加すればよろしいでしょうか。 宜しくお願い致します。

  • excel2003のマクロで全シートを選択したい場合

    初心者です、お願いします。 Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select Sheets("Sheet1").Activate Range("E1").Select Selection.NumberFormatLocal = "G/標準" ’現在文字列 ActiveCell.FormulaR1C1 = "7/1/2008" Range("F1").Select Selection.NumberFormatLocal = "G/標準"  ’現在文字列    ActiveCell.FormulaR1C1 = "5/31/2009"  上記の記述で1行目、全シートの選択を指定したいのです。 どのように変えたら良いかどなたか教えてください。

  • セルの値で別BookのSheetを開く

    EXCELのVBAで、特定のBook(元データ.xls)のA1セルに入力された文字列と同じ名前の別Book(format.xls)のSheet(元データ)を開くようにしたいのですがうまくいきません。 VBAはほぼ素人で、いろいろなページを参考につぎはぎで作りました。 どうか、宜しくお願いします。。。 Dim a As String a = Workbooks(\"元データ.xls\").Worksheets(\"Sheet1\").Cells(1, 1).Value ActiveCell.FormulaR1C1 = \"=LEFT(bookname(),FIND(\"\".\"\",bookname())-1)\" Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False   >> 元データ.xlsのA1にはファイル名を取得(除く.xls)して、値貼り付けするようにしています。          Workbooks(\"format.xls\").Activate Worksheets(a).Select     ↑ココがうまく行かないようです。 が、一度失敗して2回目は上手く動きます。なぜなのかわかりません。

専門家に質問してみよう