excel2007です。マクロで、データベースへの書き込みをさせています
データベースブックを勝手に開けないようにパスワードをかけています。
user端末のブックに
Workbooks.Open (d$ + databook), Password:="hogehoge"
というマクロをいれておき、長いこと無事に機能していました。
ところが、あるuser端末での操作中、突然、パスワードを聞いてくるようになりました。
つまり、マクロでの自動パスワード入力を拒絶し始めたのです。
手作業でパスワードを入力したらすんなり入れましたが、それでは運営上こまります。
原因は、別のブックを開いたためにそこでexcelの基本設定がかわったのではないかと思われます。どこの設定を戻せば元通り、マクロに仕込んだパスワードが機能するのでしょうか。
あるいは新たなセキュリティ設定がoffice update で仕込まれてしまったのでしょうか。
教えてください。

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

A 回答 (2件)

>補足として、


>操作するPCにインストールされているのは
>Excel2007で、
>データベースとして作成してあるBOOK
>はExcel2003形式 拡張子xls
>です。
>各端末からデータベースに記入するための
>bookもExcel2003形式 拡張子xls
>です。
>このあたりに原因があるようにも思えます。

それはないと思います。
私も、似たようなことをしていますので。

>マクロは動きます。
キー記録で作成したマクロが動くのなら
Workbooks.Open (d$ + databook), Password:="hogehoge"
が間違っているではないですか。
例えば、d$ や databook に不要なスペースが入っているとか。

また、
キー記録で作成したマクロを
Workbooks.Open (d$ + databook), Password:="hogehoge"
と置き換えたら動きますか?

この回答への補足

原因はマクロではありませんでした。
今日、精査したところ、
読み取りパスワードを設定し、共有をかけたbookを
開く際に、パスワードを2回入力する必要があるように
なっていることに気がつきました。
読み取りと書き込みのpwのことではなく
読み取りのためのpwを二回聞いてきます

以前は一度のパスワード入力で済んでいたのですが。

ある方からメールで送信されたbookを開いてからそうなったので
設定が変わったせいと思っていました。

これはexcelか osのバグのようです。

OSはVISTA
excel2007

補足日時:2011/04/19 03:18
    • good
    • 0
この回答へのお礼

ありがとうございました。
マクロが原因ではないので
いったん閉じます
別の質問を立ち上げます

お礼日時:2011/04/19 03:43

キー記録で


そのファイルを開くマクロを作成し、
(, Password:="hogehoge"の部分は手動で追加してください)
そのマクロは動きますか。

この回答への補足

マクロは動きます。
補足として、
操作するPCにインストールされているのは
Excel2007で、
データベースとして作成してあるBOOK
はExcel2003形式 拡張子xls
です。
各端末からデータベースに記入するための
bookもExcel2003形式 拡張子xls
です。
このあたりに原因があるようにも思えます。

補足日時:2011/04/18 16:38
    • good
    • 0

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

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

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

QExcel VBAで同じフォルダ内のファイルを開くには?

Windows2000、Excel2000を使用しています。

「経理」というフォルダに「見積」「請求」の2つのExcelファイルがあります。
「見積」から「請求」を開くマクロを作りたいのですが、どうすればいいでしょうか?
「経理」フォルダは場所が変わることがあるので、パスをどうすれば良いかがわからず苦しんでいます。
VBAはまったくの素人で、本を見ながら挑戦しているのですがうまくできないのです。

どうかよろしくお願いします。

Aベストアンサー

必ず「経理」というフォルダに「見積」「請求」の2つのExcelファイルがあると仮定。

以下ならどうでしょう?

フォルダごと移動されても上記のお約束があれば大丈夫と思います。
以下の記述は「見積」に記述してください。



Sub BookOpen()
Workbooks.Open Filename:=ThisWorkbook.Path & "\請求.xls"
End Sub

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qエクセル 0や空白のセルをグラフに反映させない方法

以下の点でどなたかお教えください。

H18.1~H20.12までの毎月の売上高を表に記載し、その表を元にグラフを作成しています。グラフに反映させる表の範囲はH18.1~H20.12の全てです。
そのためまだ経過していない期間のセルが空白になり、そこがグラフに反映され見づらくなります。
データを入力する都度グラフの範囲を変更すればいいのですが、うまく算式や設定等で空白や0円となっているセルをグラフに反映させない方法はありますか?

お手数ですが、よろしくお願いいたします。

Aベストアンサー

売上高のセルは数式で求められているのですよね?
それなら
=IF(現在の数式=0,NA(),現在の数式)
としてみてください。
つまり、0の場合はN/Aエラーにしてしまうんです。N/Aエラーはグラフに反映されません。

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む


人気Q&Aランキング

おすすめ情報