EXCEL97のVBAで作成したマクロを他のPCで使用するとマクロが正常に動きません。VBAを作成したPCと使用したPCで特に環境の違いといえば、ジャストシステム系のアプリケーション(一太郎)がインストールされているかいないか位の差です。開発側には一太郎が存在しています。
Visual Basic Editorで参照できるファイルが存在していない旨のメッセージ?らしきものがでたので[ツール]-[参照設定]を確認したところJUSTファイルのJslib32の参照ができていないようなのです。開発者(といっても素人)は、特に難しい設定をしたわけでもないのですが・・・?
このように、VBAを使うとき開発環境と使用環境の違いで動かなくなることってあるのでしょうか?
このような場合、どのような対策をとれば、使用できるようになるのでしょうか?(使用PCに一太郎を入れれば良いのでしょうが、他の方法は無いのでしょうか?)
ただし、勝手に一太郎の責任にしているのかも知れません。

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

A 回答 (4件)

 一太郎は過去にATOKとAccessの相性の悪さでひどい目にあって以来使用していません(^^;;


 参照設定でJslib32をはずしてみてはどうでしょうか?
何のライブラリかわかりませんがそのdll?に依存する機能をVBA側で使用していない限り必要ないと思うのですが。
    • good
    • 0
この回答へのお礼

質問している者が素人な為、用を得ない質問でごめんなさい。
参照設定でJslib32をはずしたら動きました。ありがとうございました。

しかし、VB Editorのプロパティウインド等のフォントが正常に表示されなくなってしまいました。今後改良等の予定はないので、いいかなぁ~とも思いますが、この状態でも使用に対して問題は無いでしょうか?

お礼日時:2001/02/01 16:53

もし一太郎で出力するとか特別な指定がないようでしたら、このまま「Jslib32」を参照する部分の行の先頭に「'」をつけて(つまり「Jslib32」をさんしょうしないようにして)、このファイルをほかのPCに移しても大丈夫だと思います。


でも、なぜ「Jslib32」を参照するマクロになるんだろう?と云う疑問が生じるのですが…
最善は作成者に良く確認することだと思います。
VBAはそれほど敷居が高くないので、これを機にkazhさんもお勉強なさってみてはどうでしょうか?
    • good
    • 0

申し訳ありませんが、もう一度、このエクセルのファイルが何のためのモノか、差し障りのない範囲で仰っていただけますか?


「Jslib32」は一太郎とかジャストシステム製品のためのライブラリの格納フォルダです。これを使うようなExcelファイルであるならば、これを動かすPCにも一太郎やジャストシステムアプリケーションがあって、そのためのものではないのですか?
それと文字化けは、ほかのマクロを表示した時にも発生しますか?

この回答への補足

ありがとうございます。
>このエクセルのファイルが何のためのモノか
エクセルのワークシート上に、家畜のエサの成分が入っていまして、どのくらい食べさせれば、栄養的に十分かを計算させるものです。セルにいちいち数値を入力するのが大変なため、入力フォームを作成し入力をするマクロを組みました。・・・
というわけで、ジャストシステムアプリは使っていないと思うのですが?

>それと文字化けは、ほかのマクロを表示した時にも発生しますか?
Jslib32を切ってしまったら、このファイルのVB Editorのプロパティウインドの文字が化けてしまいました。
他の、ファイルを開き確認したところ化けていないようです。

補足日時:2001/02/01 18:36
    • good
    • 0

仰っていることは、要するにマクロの付いたExcelのファイルが開けない(そのファイルのマクロが動かない)と云うことですか?


何をするためのファイルか分かりかねますが、特定のファイルを参照するのであれば、そのファイルがないと動かないでしょう。代替処理(その参照ファイルがなければ、別のところへ飛ぶ)か何かやらないと…
これはVBAだけのことではないと思いますが…
もっと具体的に書いていただけますか。
    • good
    • 0
この回答へのお礼

質問している者が、素人なので用を得なくてすみません。
外部のファイルを参照しているのにそのファイルが無くて、動かないのではないと思われます。jslib32のなかのDLLを参照している用なのですが・・・

参照設定を解除(チェックをはずしたら)動きました。ただ、このまま使って問題ないのかが不安です。さらにVB Editorのフォントが文字化けしたようになってしまいました。

もしわかれば、教えて下さい。 お願いします。

お礼日時:2001/02/01 17:01

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

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

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

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

Qトンネル工事に女性が参加できなくなった時期について

明治期の新聞に、鉄道のトンネル工事の事故現場から、そこで働いていた女性が救出された、とありました。
トンネル工事に女性が入れなくなったのは、いつごろからなのでしょうか。
ご存知の方がいらっしゃったら、教えてください。
よろしくお願いいたします。

Aベストアンサー

去年だったのか今年だったのは忘れましたが、トンネル工事に携わる女性陣をNHKで放送をされていましたが。
http://www.news-postseven.com/archives/20160319_392145.html
女性の現場監督者もいれれば、現場で肉体を汚して働いている女性もいます。

Q[AccessXP]VBAのものの本に書いているような条件式を受け付けない

DLookUp関数やOpenFormコマンドのWhereconditionで抽出条件式を設定するとき、ものの本では、
"フィールド2='" & Me![フィールド1] & "'"  ...式1
と書いてますが、今開発中のAccessのデータベースでは、フィルタプロパティに出る書き方のように、
"[テーブル1].[フィールド2]=" & Me![フィールド1]   ...式2
と書かないと、「演算子がありません」と言われます。
なぜでしょうか。
Accessは一度受け付けた条件式のスタイル以外を認めようとしない癖があるように感じます。一度、式2のように書いてそのプロシージャを実行したことがあるために、それ以後そのデータベースでは式1を条件式のスタイルとみなさないという癖です。この質問の答えと関係があるかどうかわかりませんし、「感じ」なので実際のところはっきりしませんが、感じるという方も書き込みをお願いします。

Aベストアンサー

> "フィールド2='" & Me![フィールド1] & "'"
フィールド2 がテキスト型の場合の記述方法です。


> "[テーブル1].[フィールド2]=" & Me![フィールド1]
こちらは、数値型の場合ですね。


> それ以後そのデータベースでは式1を条件式のスタイルとみなさないという癖です。
こういったことはないと思います。


ちなみに、対象フィールドが日付/時刻型の場合は、
"[フィールド名]=#" & Me![コントロール名] & "#"
のように記述します。

Q技術が発達した現在ではトンネル工事で死人が出ることはないのでしょうか?

TVで黒部の太陽を見てたのですが黒部ダム(黒四ダム?)を建設する時に大町トンネルを貫通するのに苦労し、多数の死人が出たそうですが、技術が発達した現在では大規模なトンネル工事でも昔みたいに何十人も死人が出ることはないのでしょうか?。東京湾アクアラインのような長い海底トンネルでも死人が何人も出たという話は聞かないですしトンネル工事も安全になったのでしょうか?。

Aベストアンサー

シールド工法やコンピュータによるシュミレーション技術は進みましたが、最後の確認をして現場で掘り続けるのは人間ですし、急な出水崩落、火山や温泉帯の場合爆発という危険もあります。厚生労働省の統計のアドレスを載せて置きますので見ていただけるとわかると思います。

参考URL:http://wwwdbtk.mhlw.go.jp/toukei/kouhyo/indexkr_37_3.html

Q[Access VBA] DoCmd.OpenForm ...の書式について(VBAに詳しい方求む!)

仕事でAccessを使用しています。
帳票管理のデータベースを作ってて
帳票名フィールドに各種の帳票の名前が格納されています。
ここはコンボボックスにしてあり、データベース化する
対象の帳票も決まってます。
メインのフォームには帳票の基礎データを入力し
フォーム上に作ったボタン(ボタン名「詳細記録」)を押すことで
各帳票の詳細な記録を書きこむフォームが現れるように設計する予定です。

そこで、メインのフォームに設けたボタンの
「クリック時」のイベントプロシージャに以下の記述をしました。

Private Sub 詳細記録_Click()
DoCmd.OpenForm 帳票名
End Sub

ボタンをクリックした時点で帳票名フィールドに記載されている
帳票の詳細記録フォームがたちあがります。
例えば帳票名フィールドが
「AA」の時→ボタンClick→AAの詳細記録フォームが立ちあがる。
「BB」の時→ボタンClick→BBの詳細記録フォームが立ちあがる。
(企業秘密のため具体的な帳票名を書けません。)

実はこのような動作をしてくれるのが目的だったのですが
疑問があるんです。
それより前には、上述のと1箇所だけ記述がいろいろ変えてました。

DoCmd.OpenForm "帳票名"

帳票名のところがダブルクォーテーションでくくってあるかないか
の違いです。
くくるとエラーが出ますが、くくらないとうまく行きます。

[帳票名]のときもうまく行きましたが、"[帳票名]" はだめのようです。

また、" "の中を具体的な帳票の名前にすると
(例:DoCmd.OpenForm "AA")
いつでもそのAAフォームだけがたちあがります。
(帳票名フィールドの記述がBBでも)

たまたまダブルクォーテーションをはずすと
うまく反応してくれたんでよかったんですが
ダブルクオーテーションひとつで
なぜこんなに動きが違うのか?
わかる方よろしくお願いします。

仕事でAccessを使用しています。
帳票管理のデータベースを作ってて
帳票名フィールドに各種の帳票の名前が格納されています。
ここはコンボボックスにしてあり、データベース化する
対象の帳票も決まってます。
メインのフォームには帳票の基礎データを入力し
フォーム上に作ったボタン(ボタン名「詳細記録」)を押すことで
各帳票の詳細な記録を書きこむフォームが現れるように設計する予定です。

そこで、メインのフォームに設けたボタンの
「クリック時」のイベントプロシージャに以下の記述をし...続きを読む

Aベストアンサー

文字列と要素名との使い分けで混乱なさってるようですね。

ダブルクォーテーションで括るのは、「ソースコード中に直接、文字列を記述する」場合のみです。

'テキストボックスに「こんにちは」と表示する
MsgBox "こんにちは"

この例では、MsgBox命令に対して、「こんにちは」という文字列を渡しています。

Dim Message as String
Message = "こんにちは"
MsgBox Message

この例では、Message という変数に「こんにちは」という文字列を代入し、MsgBox命令にMessage という変数を渡しています。
Messageは変数であって文字列ではないため、ダブルクォーテーションで括る必要がないのです。

DoCmd.OpenForm でも同様。

DoCmd.OpenForm "帳票A"
は、「帳票A」という文字列をDoCmd.OpenForm命令に渡しています。


帳票フィールドに「帳票A」という文字が格納されているとき、

DoCmd.OpenForm Me![帳票フィールド]

とすると、DoCmd.OpenFormに渡されるのは「Me![帳票フィールド]」という文字列ではなく、帳票フィールドに格納されている「帳票A」という文字列が渡されるのです。

尚、この命令文は

Dim Chouhyou As String
Chouhyou = Me![帳票フィールド]
DoCmd.OpenForm Chouhyou

とするのと同じです。

あんまりいい説明じゃないかもしれませんが、VBA理解の一助にでもなれば幸いです。

文字列と要素名との使い分けで混乱なさってるようですね。

ダブルクォーテーションで括るのは、「ソースコード中に直接、文字列を記述する」場合のみです。

'テキストボックスに「こんにちは」と表示する
MsgBox "こんにちは"

この例では、MsgBox命令に対して、「こんにちは」という文字列を渡しています。

Dim Message as String
Message = "こんにちは"
MsgBox Message

この例では、Message という変数に「こんにちは」という文字列を代入し、MsgBox命令にMessage という変数を渡しています...続きを読む

Q井荻トンネル工事の車線規制は終了しましたか

 井荻トンネル近隣住民ではないですが8月か9月に利用予定あります。埼玉から中央道へいくのに、大泉ICからカンパチ-甲州ー調布IC
と行きたいです。車線規制は平成17年3月20日~平成18年6月までということでしたが、工事完成して車線規制は終了したのでしょうか。東京都建設局のサイトではどこにも「工事完成」との記述はありません。
 5/28に南田中トンネル完成とのことですが、これは建設局に問い合わせたら、井荻トンネル工事の車線規制とは別とのことでした。

Aベストアンサー

工事はわかりませんが、私はいつも埼玉から中央道へ行くのには、大泉--石神井公園のほう--富士街道--田無--武蔵境通りで調布に行きます。
(環八を通る理由があるのなら失礼いたしました。)

Q[VBA]半角カタカナ

No.858407からの再質問です。

Excel2000を使っています。
D列に「NB/RD」といった色名略称が入っています。F列に、これを「ネイビー/レッド(半角カタカナ)」というふうに表示させたいと思っています。基本となる色名は約200あり、これはIMEの辞書に登録済みです。
下記のようなマクロを作ってみました。

Sub 色名ふりがな()
Dim rngTarget As Range

For Each rngTarget In Selection
rngTarget.Offset(0, 2).Value = Application. _
GetPhonetic(rngTarget)

Next
End Sub

ただし、この方法だとF列には全角カタカナで表示されます。これを同じプログラム上で半角カタカナにするには、どう書けばいいのでしょうか?

どなたかご存知の方、教えてください(>_<)
ちなみにVBAは勉強を始めたばかりの初心者です。

Aベストアンサー

VBAやるのにヘルプは必須ですよー。
まぁ、乗りかかった舟で答えとくけど。
rngTarget.Offset(0, 2).Value = StrConv(Application. _
GetPhonetic(rngTarget), vbNarrow)

Q1年前の倉敷市海底トンネル工事中の大事故のその後

一年程前岡山県倉敷市で最大手ゼネコンの鹿島が元請の海底下トンネル工事で大事故があり何人もの作業員が犠牲になりました。海底下の事故であり当時は何もすることが出来ず、その後海底を浚渫してシールド機(トンネル掘削機)を取り出すことになり、 一ヶ月ほど前やっとシールド機が海上へ引き上げられたとの簡単なニュース記事をインターネットで見ました。

私自身以前ゼネコンに勤め大小いろんなタイプのトンネル工事に従事しましたが、現在は転職し海外在住です。このような次第でこの事故原因解明には大きな関心がありますが、やはり鹿島も自社の汚点になるような情報はあまり出したくないと見え同社のホームページを見ても事故原因については触れられていません。もしどなたか情報があれば教えていただけるとうれしく思います。特に以下の点に関心があります。

1)シールド機が回収されて一ヶ月位経ったと思いますが、原因については何か分かってきているのか?
2)事故当時安物の韓国製セグメント(トンネル掘削後取り付けられるコンクリート製の板)が原因のように言われてましたがこれについてどうなったか?
3)事故当時行方不明作業員が全員は見つかってはいなかったと思いますが、こちらのほうはどうなったのか?
4)事故の起きたトンネルの代替のトンネルは掘られたのか?
5)鹿島は事故の後役所の指名停止や、労基からの処分をうけたのか?

その他お知りのことがあれば教えてください。どうかよろしくお願いします。

一年程前岡山県倉敷市で最大手ゼネコンの鹿島が元請の海底下トンネル工事で大事故があり何人もの作業員が犠牲になりました。海底下の事故であり当時は何もすることが出来ず、その後海底を浚渫してシールド機(トンネル掘削機)を取り出すことになり、 一ヶ月ほど前やっとシールド機が海上へ引き上げられたとの簡単なニュース記事をインターネットで見ました。

私自身以前ゼネコンに勤め大小いろんなタイプのトンネル工事に従事しましたが、現在は転職し海外在住です。このような次第でこの事故原因解明には大き...続きを読む

Aベストアンサー

ttp://www.geo-yokoi.co.jp/News/Mizusima_Sield.htm
水島シールド事故の教訓
(13/08/28)の図
筆者による考察

ttp://www.asahi.com/area/okayama/viewphoto_okayama.html?area-pg/OSK201308240091.jpg
シールドマシン内側より
ttp://photo.sankei.jp.msn.com/kodawari/data/2013/08/23kurashiki/
シールドマシン内側より

QVBA グラフのデータ参照、タイトル参照のコマンド

シートに1つ埋め込みグラフがあり、そのグラフの
データ元の範囲とタイトルの参照Rangを知る方法が
分かりません。方法があれば教えてください。

Aベストアンサー

こんにちは。
グラフのデータ元範囲やタイトルの参照アドレスを直接取得するようなプロパティは無いようです。
したがって、SeriesオブジェクトのFormulaプロパティでデータ系列の参照数式を取得して、文字列操作でデータ範囲を求めるしかないように思います。
タイトルについても同様なので、ChartTitle.Characters.Textを範囲から検索するような形になると思います。

参考までに、アクティブシートの1番目のグラフのデータ元アドレスとタイトルのあるアドレスをメッセージボックスに表示するサンプルです。

Sub Sample()
Dim sourceData As String
Dim n As Integer
Dim myRange As Range
With ActiveSheet.ChartObjects(1).Chart
For n = 1 To .SeriesCollection.Count
sourceData = .SeriesCollection(n).Formula
sourceData = Replace(Replace(sourceData, "," & n & ")", ""), "=SERIES(", "")
If myRange Is Nothing Then Set myRange = Range(sourceData)
Set myRange = Application.Union(myRange, Range(sourceData))
Next
MsgBox "データ範囲アドレス:" & myRange.Address & vbLf & "タイトル参照アドレス:" _
& myRange.CurrentRegion.Find(what:=.ChartTitle.Characters.Text).Address
End With
Set myRange = Nothing
End Sub

グラフタイトルはデータ元範囲のアクティブセル領域に存在している前提でのコードですので、もしそうでない場合はmyRange.CurrentRegionを実状に合わせて変えてください。

こんにちは。
グラフのデータ元範囲やタイトルの参照アドレスを直接取得するようなプロパティは無いようです。
したがって、SeriesオブジェクトのFormulaプロパティでデータ系列の参照数式を取得して、文字列操作でデータ範囲を求めるしかないように思います。
タイトルについても同様なので、ChartTitle.Characters.Textを範囲から検索するような形になると思います。

参考までに、アクティブシートの1番目のグラフのデータ元アドレスとタイトルのあるアドレスをメッセージボックスに表示するサンプルです...続きを読む

Q夜間のトンネル工事について

 市が発注するトンネル工事で24時間作業することを考えています。しかし、騒音規制法では特定建設作業を実施する場合、24時間の作業は認められていません。そうなると24時間作業はできないのでしょうか?高速道路の建設などは24時間やっていると思うのですが・・・どうか宜しくお願いいたします。(作業地域は騒音規制法の第3種地域です)

Aベストアンサー

法律の専門家ではないので、意見です。
トンネルの中は、ある意味治外法権的な面があるので厳密には関係ない部分がありますが、一応、地上と同じ法律を適用するのが通常でしょう。

24時間作業については、シールドマシンをゴリゴリしてダンプが昼間と同じように往来する作業は、やってはいけません。

24時間の作業は、内装などの計装作業に限られます。 つまり17時に入坑して朝までトンネルから出ないような作業に限られます。

住民には、安眠を邪魔しないほうが懸命です。意義を唱えられると作業がとまりますよ。

Qフィルタオプション設定をVBAで処理したものに、さらに連番(ナンバリング)もされるようにVBAを作成し直したい。

よろしくおねがいします。

フィルタオプション設定を下記のようにVBAにて既に作成したものがあります。(ボタンをクリックするだけで、データが抽出されるようにしてあります。)
Sub Macro1()
Dim myRow1 As Long, myRow2 As Long
myRow1 = Sheets("職員名簿").Range("B65536").End(xlUp).Row
myRow2 = Sheets("東京都").Range("B65536").End(xlUp).Row
If myRow2 >= 5 Then
Sheets("東京都").Range("B5:T" & myRow2).ClearContents
End If
Sheets("職員名簿").Range("A2:S" & myRow1).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("データ").Range("A2:F32"), CopyToRange:=Range("B5:T5"), _
Unique:=False
End Sub

この実行時に、A列に抽出されたデータの件数を自動的に1からの連番にて入る(ナンバリングされる)ように、VBAを追加作成し直したいのですが、
どうしたら良いか分からず、教えていただきたいと思います。

既に作成してある、VBAを実行した後に、A列のセル一つ一つに、
=SUBTOTAL(3,B$6:B6)
などのように、関数を入れて抽出した行分、コピーしていけばいいのではないか。とおっしゃるかもしれませんが、
作成は私の仕事なのですが、実際これを使っていくのは、私ではなく上司なので(エクセル超初心者で使いこなせない)、

データ抽出と同時に、A列に番号が連番されていくように、
ボタン一つで、データ抽出とナンバリングができるように、
VBAを追加作成し直したいのです。

どういう命令文を追加すればよろしいのでしょうか。
よろしくおねがいいたします。

よろしくおねがいします。

フィルタオプション設定を下記のようにVBAにて既に作成したものがあります。(ボタンをクリックするだけで、データが抽出されるようにしてあります。)
Sub Macro1()
Dim myRow1 As Long, myRow2 As Long
myRow1 = Sheets("職員名簿").Range("B65536").End(xlUp).Row
myRow2 = Sheets("東京都").Range("B65536").End(xlUp).Row
If myRow2 >= 5 Then
Sheets("東京都").Range("B5:T" & myRow2).ClearContents
End If
Sheets("職員名簿").Range("A2:S" & my...続きを読む

Aベストアンサー

質問者提示のコードで上手くいっているなら、
●●●で囲まれたコードを追加するだけです。

'------------------------------------------
Sub Macro1()
 Dim myRow1 As Long, myRow2 As Long
 myRow1 = Sheets("職員名簿").Range("B65536").End(xlUp).Row
 myRow2 = Sheets("東京都").Range("B65536").End(xlUp).Row
 If myRow2 >= 5 Then
  Sheets("東京都").Range("B5:T" & myRow2).ClearContents
 End If
 Sheets("職員名簿").Range("A2:S" & myRow1).AdvancedFilter Action:=xlFilterCopy, _
  CriteriaRange:=Sheets("データ").Range("A2:F32"), CopyToRange:=Range("B5:T5"), _
  Unique:=False

'●●● 
 Dim R As Long
 For R = 6 To Range("B65536").End(xlUp).Row
   Cells(R, "A").Value = R - 5
 Next R
'●●●

End Sub
'----------------------------------------------
 
以上。
 

質問者提示のコードで上手くいっているなら、
●●●で囲まれたコードを追加するだけです。

'------------------------------------------
Sub Macro1()
 Dim myRow1 As Long, myRow2 As Long
 myRow1 = Sheets("職員名簿").Range("B65536").End(xlUp).Row
 myRow2 = Sheets("東京都").Range("B65536").End(xlUp).Row
 If myRow2 >= 5 Then
  Sheets("東京都").Range("B5:T" & myRow2).ClearContents
 End If
 Sheets("職員名簿").Range("A2:S" & myRow1).AdvancedFilter Action:=xlFilterCopy, ...続きを読む


人気Q&Aランキング

おすすめ情報