ACCESSで作ったクエリを一度エクセルにエクスポート(マクロを使ってワークシート変換)後、エクスポート先のシートとは別シート(同一ブック内)で集計し、集計結果をACCESSへインポート(マクロを使ってワークシート変換)させたいのですが、前回の集計結果がインポートされてしまい、新しい集計結果が反映されません。

一度エクセルのブックを開けば新しい集計結果が取り込めます。
何故でしょうか?
またブックを開かずに最新のエクセルの集計結果をACCESSに反映させる方法はありますでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

Excelのファイルを開いて保存する記述です。


下記の場合コマンドボタンCmd1のクリック時のイベントに記述した場合。
マクロでエクスポートする部分はDoCmd.TransferSpreadsheet・・の部分です。エクセルファイル名.xlsはフルパスで記述してください。
参照設定のMicrosoft Excel *.* ObjectLibraryにチェックされているか確認しチェックされてなければチェックを入れて下さい。*.*はお使いのAccessのバージョンに合ったものが表示されているはずです。

Private Sub Cmd1_Click()
On Error GoTo Err_Cmd1_Click

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

DoCmd.TransferSpreadsheet acExport, 8, "XXX", "エクセルファイル名.xls", False, ""

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("エクセルファイル名.xls")
Set xlSheet = xlBook.Worksheets(1)

xlApp.Quit

Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

Exit_Cmd1_Click:
Exit Sub

Err_Cmd1_Click:
MsgBox Err.Description
Resume Exit_Cmd1_Click

End Sub
    • good
    • 0

>一度エクセルのブックを開けば新しい集計結果が取り込めます。


状況が分かりにくいですが・・・
Accessでエクスポート後、ExcelのBookを開き別シートで集計した後、Excelを閉じAccessからインポートしても反映されないという事なのでしょうか?
そうでなければExcelにエクスポート後すぐAccessにインポートする。ということでしょうか?
この場合はExcel上で再計算されていないためだと思うのですが・・。
AccessからExcelのBookを開き再計算させれば良いと思うのですが。
ExcelのシートをAccessのテーブルにリンクしシートにデータを追加してもExcelのシート内で再計算はされませんから。
>またブックを開かずに最新のエクセルの集計結果をACCESSに反映させる方法はありますでしょうか?
開かないと集計を反映できないと思います。VBでExcelを閉じた状態で再計算させるのは出来ると思います。

この回答への補足

ありがとうございます。
Excelにエクスポート後直ぐにAccessにインポートしています。

AccessからExcelのBookを開く方法を教えていただけますでしょうか?

お手数をお掛けいたします。宜しくお願いいたします。

補足日時:2005/04/21 17:48
    • good
    • 0

 ちょっと良くわからないので、補足要求を(^_^;


 エクスポート後、集計作業はエクセル側で行っている
のですか?それともACCESS?
>一度エクセルのブックを開けば新しい集計結果が取り込めます。
と書いているということはエクセルではないのかな?
理解力不足で、ココがわかっていません。
同一の動作を再現したいので、再度投稿していただけると
助かります。

この回答への補足

ありがとうございます。
補足させていただきます。

集計作業はエクセル側で行っています。

ACCESSからエクセルにデータを渡した後直ぐにエクセルからACCESSにデータを戻しています。

上記の流れでは集計結果がACCESSに反映されないので、確認の為一度エクセルを開き集計結果をエクセルで確認後、エクセルを終了し、再度上記マクロを実行すると今度はACCESSに集計結果が反映されます。

説明がわかりにくくてすみません。
宜しくお願いいたします。

補足日時:2005/04/21 17:45
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qシートベルトの固定解除

チャイルドシートを取りはずそうとして,(シートベルトの固定機能が作動しているときに)誤って,チャイルドシートの固定する金具の軸に引っかけてしまい,そのためチャイルドシートが取り外せなくなってしまいました。つまり引っ張っても,固定されてしまってシートベルトが伸びずにはずせなくなってしまったのです。
一度,シートベルトを巻き戻すほかに,シートベルトの固定を解除する方法はないのでしょうか。
車屋さんに頼むしかないのでしょうか。

Aベストアンサー

最近の車のリアシートの、最後までシートベルトを引き出すとカチカチカチカチと引き込まれるタイプですね?

探してもないかとは思いますが、お車によってはどこかをどうにかするとシートベルトが、チャイルドシート固定機構が外れる構造になっているかもしれません。その場合は、お車の取扱説明書に書かれている場合もあると思いますので、まずは探してみて下さい。(外車や高級車ですと、電気的に、裏コマンドで、例えば“どこかのスイッチを何回繰り返し押すとチャイルドシート固定機構が外れる。”なんてことになっているかもしれませんので、)無理に何かをやってみる前に、その辺(取扱説明書や、ディーラーに電話 問い合わせ)をまずよく確かめてみて下さい。

次に、“知恵の輪”的にやってみるしかないです。まず、反対側のシートベルトで、どこまで引き込めばチャイルドシート固定機構がフリーになるのかを確認し、その長さまで何とか引き込めないかを、知恵の輪の様にやってみるのです。これでしばらくやってみても無理でしたら、もう無理です。


次に、どこかを外し始めることになりますが、セダンですと、取扱説明書に、リアシートの外し方が載っている場合が多いです。これは、最近のリアシートは、シートカバーを付けたり外したりしやすいように、工具なしで簡単にリアシートが外れる場合が多いのです。リアシートが外れれば、その分すき間ができますので、その分引き込めてチャイルドシート固定機構がフリーになるかもしれません。
これも、シートを外す前に、反対側ベルトで長さを確認してから作業を始めたほうが良いですね。


フロントシートベルトに付いているアンカー(肩の上にある、肩ベルトの高さを調節する部分。)のようなものがリアシートベルトにも付いておりましたら、最後の手段があります。

(上記が全てが不可でしたら、)“最後の手段”、シートベルトの一番上のアンカーのところのボルトだけを外します。自転車の車輪が外せる程度のDIYが出来るかたがおられましたら、可能な作業ではありますが、100%の自信がある場合以外は、専門家に頼んで下さい。
ラチェットハンドル(http://www.koken-tool.co.jp/img/products/tec/ratchet/3753n.jpg)と ソケットレンチ(http://www.koken-tool.co.jp/catalog/img/main/h4/4400m.jpg)といった工具を必ず使って下さい。

決してこんな モンキレンチ(http://www.kyototool.co.jp/products/catalog/nepros/nwm.jpg)や スパナ(http://www.kyototool.co.jp/products/catalog/nepros/ns2.jpg)は使ってはいけません。

どこのボルトを緩めるかといいますと、リアシートベルトを支えてる、一番上の部分てありますよね?座った時に肩より上に来る部分です(アンカーといいます。)。これは、ボルト1本で取り付けられているのですが、きっとプラスチックの めくらぶた が付いていると思いますが、まずこれを外し、 ボルトを緩める前に、油性マジックインキなどでボルトの頭の一番上に印を付けておくと、あとで締め付けるときの目安になります。
その後、ソケットレンチにて、反時計回りにじわっと緩めます。この時注意して頂きたいのは、緩んだ瞬間に工具がリアガラスに当たって割れないように充分に気を付けて下さい。

ボルトが緩みさえすれば後は簡単です。手でボルトをクルクル緩め、完全に外れる前に、アンカー内にあるスペーサーやワッシャーをなどを なくさないように気を付けて、付いてる順番などを覚えながら外して下さい。

これでかなりの量のベルトが引き込めるようにはなるのですが、これを外したところで、必ずチャイルドシート固定機構が外れるかどうかは分からないというのが実際です。なぜなら、お車が、どの程度ベルトが引き込まれれば固定機構が外れるかや、チャイルドシートがどの程度ベルトを消費(巻き付き)しているかによって、変わってくるのです。

(リアシートの方は、アンカーが内装トリムの中に隠れているタイプの車もあり、その場合は、トリムを外すといったことは、出来そうな気がしても、お勧めできません。  トリムはなれない人が外すと割れてしまったりします。)


リアシート座面を外して、腰より下の部分のシートベルト(左シートなら腰の左側)の取り付け部を外す方法もありますが、ここまでやる場合は、よほど自信がある場合だけにして下さい。
(車をいじくるのが好きでいつもやっているかたですと簡単な作業ですが、そうでない場合は、工具を使う作業については専門家に頼んで下さい。)

最近の車のリアシートの、最後までシートベルトを引き出すとカチカチカチカチと引き込まれるタイプですね?

探してもないかとは思いますが、お車によってはどこかをどうにかするとシートベルトが、チャイルドシート固定機構が外れる構造になっているかもしれません。その場合は、お車の取扱説明書に書かれている場合もあると思いますので、まずは探してみて下さい。(外車や高級車ですと、電気的に、裏コマンドで、例えば“どこかのスイッチを何回繰り返し押すとチャイルドシート固定機構が外れる。”なんてこと...続きを読む

QVBAでAccessのテーブルのエクスポート・インポートをするには。

すみませんが、教えてください。

Excel+VBAで、AccessをSQL,ADO,ADOXで操作しようとしています。

a.mdbのテーブルを、b.mdbに、エクスポート(インポート)したいのですが、やり方がわからず困っています。

すみませんが、テーブル構造のみをエクスポートする方法、データを含めてエクスポートする方法を教えてください。

Aベストアンサー

◆方法1

Access をお持ちなら以下の方法が可能です。

DoCmd.CopyObject でコピーする。

これを行うには excelのVBA画面で 参照設定に microsoft Access Object 10.0 Liblary
を追加します。
__________________________________________________________
◆方法2
リンクテーブルを用いる

まず、B.MDB にリンクテーブルとして A.mdb のテーブルを
定義します。
これで B.mdb 側から A.mdbのテーブルが見えるようになります。

参考:「Microsoft Access のテーブルを使用した作業」のHPを参照
______________________________

【参考】
◆CopyObject マクロ アクション
 http://office.microsoft.com/ja-jp/access/HA012262131041.aspx

◆Microsoft Access のテーブルを使用した作業
http://www.microsoft.com/japan/msdn/columns/office/office10052000.aspx


◆ADO(ActiveX Data Object)
 http://tuka.s12.xrea.com/index.xcg?p=ADO#p10
 
 

◆方法1

Access をお持ちなら以下の方法が可能です。

DoCmd.CopyObject でコピーする。

これを行うには excelのVBA画面で 参照設定に microsoft Access Object 10.0 Liblary
を追加します。
__________________________________________________________
◆方法2
リンクテーブルを用いる

まず、B.MDB にリンクテーブルとして A.mdb のテーブルを
定義します。
これで B.mdb 側から A.mdbのテーブルが見えるようになります。

参考:「Microsoft Access のテーブルを使用した作業」のHPを...続きを読む

Qチャイルドシートの固定金具

チャイルドシートを固定するときに使う、固定金具(ロッキングクリップ)はどこで売っているのでしょうか。
ご存知でしたら教えてください。よろしくお願いします。

Aベストアンサー

お近くのオートバックス、イエローハット、ジェームスなどで売ってます。
シートベルトだけでなく、補助ベルトも使ってつけるとしっかり固定できます。

QACCESS2000でテキストファイルのインポート・エクスポート出来ない

インポート及びエクスポートをテキスト形式(csv,txt等)で実行すると「ActiveXコンポーネントはオブジェクトを作成できません。」と出るようになってしましました。どなたか情報をいただけませんか?宜しくお願いします。

Aベストアンサー

>ActiveXコンポーネントはオブジェクトを作成できません。
このエラーが出るのは大まかにいって下記の原因が考えられます。
*1つか複数の設定されている参照が見つからない。
*無効なユーティリティデータベース参照が存在している。
*破損したウィザード ファイルがある。
*要求するライブラリに必要な権限をユーザーが持っていない。
*DAOが正しく登録されていない。
などですが・・。
VisualBasicEditorを開き参照設定を確認してみてください。

Qシート下にサブウーハー固定

シートの下にサブウーハーを設置したいのですが、何か良い固定方法はあるでしょうか?

Aベストアンサー

軽量化でマットをはずしたりしていないのであれば、
マジックテープの硬いほうをマットに触れる面に両面テープで
付けると、車のマットがマジックテープのやわらかいほうの役割を
するので、固定しやすいです。

Qaccessからexcelへのエクスポート時のシート

access2002
excel2002

現在accessのクロス集計クエリで各店舗の損益表を作成しフォームからの出力指示でexcelにエクスポートしています。店舗番号を抽出条件にして1店舗ずつ出力しています。
これを店舗番号を指定せずクエリを実行し全店舗分の損益データを店舗ごとのシートに出力するようにしたいのですが、そんなことはできないでしょうか。

店舗,項目 ,8/1 ,8/2 ,8/3 ...
0001,売上 ,10000,12000,13000
0001,原価 , 5000, 5000. 6900
0001,人件費, 4000, 4500, 5000
0002,売上 ,20000,21000,19000
0002,原価 , 9000, 8900. 9000
0002,人件費, 6000, 7000, 6000
上記クエリ結果を
シート0001に
店舗,項目 ,8/1 ,8/2 ,8/3 ...
0001,売上 ,10000,12000,13000
0001,原価 , 5000, 5000. 6900
0001,人件費, 4000, 4500, 5000
シート0002に
店舗,項目 ,8/1 ,8/2 ,8/3 ...
0002,売上 ,20000,21000,19000
0002,原価 , 9000, 8900. 9000
0002,人件費, 6000, 7000, 6000

店舗ごとにクエリを作成すればできるような気がするのですが、店舗数が50以上あるのでどうにかひとつのクエリでできないものか考えたのですがどうしても分かりませんでした。
どなたかご存知の方がいらっしゃいましたらご教授願います。

access2002
excel2002

現在accessのクロス集計クエリで各店舗の損益表を作成しフォームからの出力指示でexcelにエクスポートしています。店舗番号を抽出条件にして1店舗ずつ出力しています。
これを店舗番号を指定せずクエリを実行し全店舗分の損益データを店舗ごとのシートに出力するようにしたいのですが、そんなことはできないでしょうか。

店舗,項目 ,8/1 ,8/2 ,8/3 ...
0001,売上 ,10000,12000,13000
0001,原価 , 5000, 5000. 6900
0001,人件費, 4000, 4500, 5000
0002,売上 ,20000,210...続きを読む

Aベストアンサー

Function makeXL()
'要参照設定 Microsoft DAO 3.x Object Library
Dim qDef As DAO.QueryDef
Dim strSQLa As String, strSQLb As String
Dim rs As DAO.Recordset

|strSQLa = "PARAMETERS [Forms]![F日付入力]![日付] DateTime;" _
|    & " TRANSFORM Sum(Q損益.Sales07) AS 売上の合計" _
|    & " SELECT Q損益.店舗, 項目マスタ.項目" _
|    & " FROM Q損益 INNER JOIN 項目マスタ ON Q損益.科目No = 項目マスタ.[No]"
|
|'WHERE (((Q損益.店舗)="0000000000001"))
|
|strSQLb = " GROUP BY Q損益.店舗, Q損益.科目No, 項目マスタ.項目" _
|    & " ORDER BY Q損益.科目No" _
|    & " PIVOT Format$([SalesDate],""yyyy/mm/dd(aaa)"");"
L__ここまででご質問者の作成したクエリからWhere句を除く部分をSQL文として変数に格納

Set rs = CurrentDb.OpenRecordset _
    ("select 店舗番号 from 店舗マスタ order by 店舗番号", dbOpenSnapshot)
__レコードセットの取得

    
For Each qDef In CurrentDb.QueryDefs
  If qDef.Name = "Q_TMP" Then
    DoCmd.DeleteObject acQuery, qDef.Name
  End If
Next qDef
__クエリの中に、「Q_TMP」が有れば削除

Set qDef = CurrentDb.CreateQueryDef("Q_TMP")
__クエリ「Q_TMP」の作成
  一個上でクエリの削除を行っていますが
  本来なら無ければ作成の方が良さそうですが・・手抜きの雰囲気

Do Until rs.EOF __レコードセットが、お終いまで繰り返す
  qDef.SQL = strSQLa _
  & " where Q損益.店舗 = '" & rs!店舗番号 & "'" _
  & strSQLb
  __上で変数に格納したSQL文にWhere句を追加し、クエリ「Q_TMP」
    のSQL文としています
    
  Debug.Print qDef.SQL
  __↑この辺でF9を押してブレークポイントを作成しAccessのウィンドウに
    戻ってクエリ「Q_TMP」が書き換わっているのを見てね
    また F8 で一行ずつ実行されますので変数などが変わって行くのも確認
    
  DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Q_TMP", _
    CurrentProject.Path & "\" & Format(Date, "yyyymm") & "outXL.xls", _
    True, rs!店舗番号
       '↑cstr(rs!店舗番号) かも?
  rs.MoveNext__次のレコードセットに移動
Loop__繰り返し

|rs.Close: Set rs = Nothing
|Set qDef = Nothing
|__このモジュールを抜けるときに白紙状態になるはずなのですが
   オマジナイです
MsgBox "お待たせ"
End Function

それぞれの関数やプロパティはカーソルを合わせて、F1 で該当するヘルプが出ますので
調べてください
私からはこれまでです。
自分で調べて覚えれば確実に自身の血となり肉(脳みそ)となります
がんばって下さい。

Function makeXL()
'要参照設定 Microsoft DAO 3.x Object Library
Dim qDef As DAO.QueryDef
Dim strSQLa As String, strSQLb As String
Dim rs As DAO.Recordset

|strSQLa = "PARAMETERS [Forms]![F日付入力]![日付] DateTime;" _
|    & " TRANSFORM Sum(Q損益.Sales07) AS 売上の合計" _
|    & " SELECT Q損益.店舗, 項目マスタ.項目" _
|    & " FROM Q損益 INNER JOIN 項目マスタ ON Q損益.科目No = 項目マスタ.[No]"
|
|'WHERE (((Q損益.店舗)="0000000000001"))
|
|strSQLb = ...続きを読む

Qお腹で固定するチャイルドシートについて

 12月に第二子が誕生する予定です。第一子は,ベビーシートとチャイルドシートが兼用になっているもの(寝かせられるタイプ)を使っていました。
 第二子の誕生に合わせて,当然もう一つ購入を考えていますが,兼用のものは高いので,下の子はお下がりを使ってもらって,上の子に新しいものを買おうと思っています。
 いまのところ,プリムキッズのようなお腹の部分で固定するタイプを考えています。ただ,肩からベルトで股まで固定するタイプに比べて,お腹のみの固定の方が,事故のときに力を受け止める場所が少ないので,体に負担がかかるのではないかと心配しています。
 国土交通省の実験サイトでは,「良」となっているので大丈夫なのでしょうが,みなさんはどう思われますか?
 また,みなさんは第二子誕生のときはどのように対応されていましたか。よろしくお願いします。

Aベストアンサー

お子さんはおいくつでしょうか?
うちの子は今3歳で、今使ってるチャイルドシート↓
http://www.coscojuvenile.com/product.asp?productID=38のベルトが目イッパイになってきた
(股下カッチンの為)事、最近お友達を乗せてあげることが増えた事等の理由からいずれ使うであろう
(最近使ってますが)ジュニアシートを購入しました。
いわゆる一般的な座台だけのジュニアシートは子供の体に直接シートベルトを装着するので、
・シートベルトが体を圧迫しないか?
・3歳の座高では微妙にシートベルトが首をかすめるのではないか?
・寝てしまった時に・・不安。
と言う不安材料があったのと、寝た時に前の台を抱えて枕代わりにしたりしてたので、前の台は必要だと
思いました。なので今まで使ってたのと同じ形(前台付)のジュニアシートにしました。
考えてらっしゃるプリムキッズも同じような前台付ですよね?

参考までに、うちの購入したジュニアシートです。↓

参考URL:http://www.coscojuvenile.com/product.asp?productID=34

お子さんはおいくつでしょうか?
うちの子は今3歳で、今使ってるチャイルドシート↓
http://www.coscojuvenile.com/product.asp?productID=38のベルトが目イッパイになってきた
(股下カッチンの為)事、最近お友達を乗せてあげることが増えた事等の理由からいずれ使うであろう
(最近使ってますが)ジュニアシートを購入しました。
いわゆる一般的な座台だけのジュニアシートは子供の体に直接シートベルトを装着するので、
・シートベルトが体を圧迫しないか?
・3歳の座高では微妙にシートベルトが首を...続きを読む

QACCESSでのエクセルインポート時のシート有無の判定について

ACCESS上でエクセルファイルをインポートするにおいてそのファイルが存在するかの判定用IF文は
If Dir("C:\インポートファイル.xls") = "" Then MsgBox "インポートファイル.xlsファイルがありません。"
End If
でうまくいくのですが

インポートファイル.xls
______________________________
/シート2/シート3/シート4/

インポート用EXCELファイルのシート1が無いことを判定するときの設定方法がネットを調べても発見することが出来ませんでした、やり方があるようなら教えてください

If Dir("C:\インポートファイル.xls" ※恐らくここに何か追加が必要だとは思うのですが※ ) = "" Then
MsgBox "インポートファイル.xlsファイルのシート1がありません。"
End If
一度質問を登録したのですが、登録失敗していたので再度質問しました。よろしくお願いします。

Aベストアンサー

下記の文で一応テストしましたが、内容通り動いてくれました。(わざとシートを抜けた状態でインポートしてみました。)但し、#3の方のエラーコードと違うのでちょっとその辺がどうなのか実際のシートで試してみればいかがですか?
又、TransferSpreadsheetの各スイッチ等については、実際の環境の数値に合わせて下さい。くわしくはヘルプに出ていますので確認して下さい。

Private Function インポート()
On Error GoTo Errインポート

Dim strテーブル名 As String
Dim strシート名 As String
Dim intカウント As Integer
Dim strエラーメッセージ As String

intカウント = 1
strエラーメッセージ = ""

DoCmd.RunSQL "delete * from 売上1テーブル"
DoCmd.RunSQL "delete * from 売上2テーブル"
DoCmd.RunSQL "delete * from 売上3テーブル"
DoCmd.RunSQL "delete * from 売上4テーブル"

Do While intカウント <= 4
strテーブル名 = "売上" & intカウント & "テーブル"
strシート名 = "シート" & intカウント & "!"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, strテーブル名, "C:\インポートファイル.xls", True, strシート名 & "A1:C5"
intカウント = intカウント + 1
Loop

MsgBox ("処理終了しました。" & Chr(13) & strエラーメッセージ)

Exit Function

Errインポート:
Select Case Err.Number
Case 3011
strエラーメッセージ = strエラーメッセージ & "," & strシート名 & "が存在しませんでした。"
Resume Next
Case Else
MsgBox (Err.Number & ":" & Err.Description)
Exit Function
End Select

End Function

下記の文で一応テストしましたが、内容通り動いてくれました。(わざとシートを抜けた状態でインポートしてみました。)但し、#3の方のエラーコードと違うのでちょっとその辺がどうなのか実際のシートで試してみればいかがですか?
又、TransferSpreadsheetの各スイッチ等については、実際の環境の数値に合わせて下さい。くわしくはヘルプに出ていますので確認して下さい。

Private Function インポート()
On Error GoTo Errインポート

Dim strテーブル名 As String
Dim strシート名 As String
Dim int...続きを読む

Q【エクセル2003】シート保護でズームとスクロールを固定させる方法。

連続投稿すみません。お世話になってます。

シートを保護した後、シートの表示(ズーム)を変えられないようにしたいのですがどのようにすれば良いのでしょうか。70%で固定させて使ってもらいたいのです。

また、スクロールさせないようにする方法も知りたいです。

ご教示のほどよろしくお願いします。

Aベストアンサー

こんにちは。

>シートを保護した後、シートの表示(ズーム)を変えられないよう
本来、表示(ズーム)は、相手のPC環境に依存しているので、ユーザーオプションとして固定する方法はありません。

ですから、以下のように、マクロで行う方法しかありません。

標準モジュールの Auto_Open() や
ThisWorkbook モジュールの Private Sub Workbook_Open()
に、以下の中身をそっくり入れると良いです。


Sub TestZoomFixed()
'-----------------------
  '最初にシートの選択を必ずすること
  Worksheets("Sheet1").Select
  With ActiveWindow
    If .Zoom = 100 Then
      .Zoom = 70
    End If
  End With
  With Application.CommandBars.FindControls(, 925).Item(2)
    .Enabled = False
  End With
'----------------------
End Sub

終了時などに、
標準モジュールに、Sub Auto_Close() や

ThisWorkbook モジュールに
Private Sub Workbook_BeforeClose(Cancel As Boolean)
で、以下の中身を入れてあげます。

その反対は、
ズームは保存されますから、必要がなければ、コメントブロックのままにしてよいです。ただ、他のシートも同時に開いていたブックも、メニューからズームが使えなくなっています。(解決方法はあります)
'---------------------------
  Worksheets("Sheet1").Select
  'With ActiveWindow
  '  .Zoom = 100
  '  End If
  'End With
  With Application.CommandBars.FindControls(, 925).Item(2)
    .Enabled = True
  End With
'---------------------------

>スクロールさせないようにする方法

意味がはっきり分からないというか、取り違えているかもしれませんが、スクロールさせないという意味そのものは、スクロールロックをしてしまうことになるので、たぶん違うと思います。

例えば、使わない行や列を下や右端列まで選択し、

 書式-行-非表示、
 書式-列-非表示

としてしまう方法があります。その後で、

他にも、マクロで、シート・プロパテイのScrollArea というものがあって、その範囲を設定させてしまうと、範囲から外にはスクロールが出来なくなります。

例:
ThisWorkbook モジュールなどに入れてあげます。
Worksheets("Sheet1").ScrollArea ="A1:E10"

こんにちは。

>シートを保護した後、シートの表示(ズーム)を変えられないよう
本来、表示(ズーム)は、相手のPC環境に依存しているので、ユーザーオプションとして固定する方法はありません。

ですから、以下のように、マクロで行う方法しかありません。

標準モジュールの Auto_Open() や
ThisWorkbook モジュールの Private Sub Workbook_Open()
に、以下の中身をそっくり入れると良いです。


Sub TestZoomFixed()
'-----------------------
  '最初にシートの選択を必ずすること
  W...続きを読む

QAccessでオートフィルタの抽出結果を反映させる

Accessで見積書管理をしています。
受注数/見積書を出した数→受注率 で月ごとに個人別で受注率を出したいと思っています。年末になったらその受注率の合計で個人評価にになります。

それでACCESSで可能でしょうか?

お詳しい方のご教授をお待ちしております。
どうぞよろしくお願いいたします。

Aベストアンサー

>フォームに作成日の検索に加えたいですが
別の話になるので、新しくスレッドを立ててください。

考え方をまとめてからコーディングしましょう。
(1)Date1とDate2があればこの範囲
(2)Date1だけならDate1以降
(3)Date2だけならDate2以前
(4)Date1、Date2がなければ条件にしない

If Nz(Date1, "") <> "" Then
    If Nz(Date2, "") <> "" Then
        strWhere = strWhere & strAndOr & " 作成日 Between #" _
        & Date1 & "# And #" & Date2 & "#"
    Else
        strWhere = strWhere & strAndOr & " 作成日 >= #" & Date1 & "#"
    End If
Else
    If Nz(Date2, "") <> "" Then
        strWhere = strWhere & strAndOr & " 作成日 <= #" & Date2 & "#"
    End If
End If

上のDate1やDate2は正しくはMe.Date1.Valueですが、Valueはデフォルトプロパティ
であること、Date1やDate2がクラス内オブジェクトとして認識できることから省略も
可能なのです。
尚、作成日に時刻表記がある場合、作成日<=#2010/11/20#とやると、これは
0時0分0秒になるので、2010/11/20 00:00:01以降、つまりこの日にできたものは
対象外になります。また、時刻は微妙に一致しないことがあるので、Format関数を
使い、合わせるほうが正確です。
strWhere = strWhere & strAndOr _
& "Format(作成日,'yyyy/mm/dd')<='" & Date2 & "'"

>フォームに作成日の検索に加えたいですが
別の話になるので、新しくスレッドを立ててください。

考え方をまとめてからコーディングしましょう。
(1)Date1とDate2があればこの範囲
(2)Date1だけならDate1以降
(3)Date2だけならDate2以前
(4)Date1、Date2がなければ条件にしない

If Nz(Date1, "") <> "" Then
    If Nz(Date2, "") <> "" Then
        strWhere = strWhere & strAndOr & " 作成日 Between #" _
        & Date1 & "# And #" & Date2 & "#"
    Else
        st...続きを読む


人気Q&Aランキング