ベストアンサー 記号 2008/02/13 09:49 質問します。Excel VBAで下記のようなコードの中に, := こういう記号がでてきますが、 =とどう違うか。=ではエラーとなりますか。 NewBook.SaveAs Filename:=new_BOOKName みんなの回答 (1) 専門家の回答 質問者が選んだベストアンサー ベストアンサー liquid_crystal ベストアンサー率71% (124/174) 2008/02/13 11:52 回答No.1 根拠になる情報がみつからないので参考情報として考えてください。 := という書き方は、組み込みダイアログボックスなどで「名前付き引数」を指定する場合に利用します。 Application.Dialogs(xlDialogSaveAs).Show arg1:="Test1.xls" と指定すると、ファイル名に "Test1.xls" がセットされた「名前を付けて保存」ダイアログが表示されます。 なぜ := なのか、というのが推測になってしまいますが、単に = だと「変数への代入」の意味になってしまうからではないでしょうか。 変数へ値の代入を行うには、 変数 = 値 という書式でコードを書きます。 = の左辺に右辺を代入する、という処理ですね。 組込みダイアログボックスの引数も「代入する」という意味では同じですが、変数ではなく引数だから := を使う、、、と自分は考えています。 というよりも、組み込みダイアログで引数を利用する場合は := を使うものだ、という理解をしています。 なぜ := なのか、ではなくて := を使うのが正解、という理解ですね。 例えば VBA で変数を定義するには Dim を使い、As に続いて変数のデータ型を宣言します。 Dim 変数名 As データ型 普通はなんで Dim なのか、ではなくて Dim を使うものと理解しますね。 As が Is じゃダメなのか、とは考えません。 仮に考えたとしても、実際にそれをやってみて動作しなければ「あ、やっぱりダメなのね」と理解します。 それと同じに理解する...ということなのではないかなと。 > =ではエラーとなりますか。 実際にやってみてください。 手元の環境 (Excel 2003) で Application.Dialogs(xlDialogSaveAs).Show arg1 = "Test1.xls" と指定して試してみたら、ファイル名には "FALSE" と表示されました。 手元の環境では、Option Explicit で変数の宣言を強制しているので、コードの実行前に "arg1" に対して「変数が定義されていません」というコンパイルエラーが出ました。 これはつまり、= だけで代入を行うとその左辺にあるのが変数だと判断されている (引数だと判断されていない) ということになります。 逆に、変数への代入に := を使うと、コードの記述段階でコンパイルエラー 「修正候補 : 式」が表示されます。 どちらも本来の使い方ではないので当たり前ではありますけど、「そういうもの」と理解する他ないのかなと思うんですが...。 でもこうした疑問は判っていても、検証してみるだけでもけっこう面白いですね。 自分は特に疑問も感じずに := を使っていましたが、そんな考え方もあるもんだ、と思いました。 というか、いろんな部分に関心を持って理解を深めようってスタイルは見習いたいです。 質問者 お礼 2008/02/14 11:32 わかりました。たいへんていねいに有難うございました。 疑問解決しました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ パソコン・スマートフォンソフトウェアオフィス系ソフト 関連するQ&A VBAであるBOOKの「sample」というシートを別BOOKに VBAであるBOOKの「sample」というシートを別BOOKに 別Bookにコピーしたいのですが、 ネットを参考にして下記のようにするとエラーになります。 実行時エラー'9' 「インデックスが有効範囲にありません」 と表示されます。 どこが間違っているでしょうか? どなたか教えてください。 ---------------------------------------- Dim NewBook As Workbook Dim fName As String Set NewBook = Workbooks.Add fName = ThisWorkbook.Path & "cp.xls" NewBook.SaveAs Filename:=fName Workbooks("moto.xls").Sheets("ピッキング").Cells.Copy Workbooks(fName).Sheets("Sheet1").Paste Destination:=Cells(1, 1) '<---ここでエラー Workbooks(fName).Save ---------------------------------------- (Excel vba)ExcelシートをCSV保存する時、通貨記号を\にする方法 セルの書式設定で通貨(記号は¥)を設定しているセルを含むexcelのシートをCSV形式に保存しようとしています。手作業でメニューの「ファイル」-「名前を付けて保存」をクリックし、ファイル形式をCSVにして保存した場合は通貨記号¥がついた金額が入っていて問題ありません。 次のようにvbaのSaveAsメソッドを使用した場合、通貨記号$のついた金額になってしまいます。 ActiveWorkbook.SaveAs Filename:=FCsvName, FileFormat:=xlCSV vbaで通貨記号を\にする方法を教えてください。環境はExcel2000・Windows98SEです。 マクロ シート別に名前をつけて保存したい 1つのブックにシートが複数あり、それぞれシート毎に名前をつけて保存したいです。 質問を検索しましたら似たようなマクロを見つけたのですが、例えば1.2.3・・・というシートがあった場合、エクセル1、エクセル2、というような共通の言葉をつけて保存したい場合の方法を教えて下さい。 たぶんですが・・・下記のどこかにエクセルという言葉をいれるとできますでしょうか? Workbooks(2).SaveAs Filename:= _ SvPath & Workbooks(BookName).Sheets(SheetName).Name & ".xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False よろしくお願い致します。 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? OKWAVE コラム ACCESS VBAで作成済のExcelのコピーを作りたい ACCESS VBAで作成済みのExcelファイル (複数シートがあります)の コピーを作成し そのファイルでテーブルのデータを 出力したいと思っています。 シートが1つならできましたが シートが複数あるとできません。 できる方法を教えてください。 なおシートが一つの場合は、下記でできました。 Dim oXLS As New Excel.Application Dim NewBook As Excel.Workbook oXLS.Workbooks.Open Filename:=既存ファイル名 oXLS.ActiveWorkbook.Sheets(シート名).Copy Set NewBook = oXLS.ActiveWorkbook oXLS.Workbooks(ファイル名).Close 複数シートがある場合の 作成方法を教えてください。 よろしくお願いします。 ExcelのマクロでCSVファイルを開くと遅いのですが ExcelのマクロでCSVファイルを開くと遅いのですが速く開く方法はありますか? 普通にファイル-開くに比べてかなり遅いです。 下記のVBAで記述してあります。 Workbooks.Open Filename:=fname ActiveWorkbook.SaveAs Filename:=fname, FileFormat:=xlCSV, _ CreateBackup:=False ActiveWorkbook.Close savechanges:=False エクセル(2003)変数について エクセル初心者です。会社で暇な時間に事務の効率化を目指してエクセルの勉強をしています。周囲にマクロ・VBAの分かる方がいないのでこちらで変数について質問させて下さい。 仮にAというBOOKがあったとして Aを開くとウィンドウが出て、そこに日付を入れるだけで(例:2013.7)ある型通りの新規ファイルを作るマクロを作成したいのです。 Aのシート1に2013年7月1日から平日のみを抽出したカレンダーが作成され 平日の日数(count)が別セルで定義され 平日のみ抽出され0701、0702と記入されたセルを新規BOOK(仮にBとします)のシート名に 日数分-3をBOOK Bのシート数にし Aのシート2に書かれた内容をBのシートに全てコピーされる、というコードを書きたいと思っています。 all aboutの記事(http://allabout.co.jp/gm/gc/297751/)を参照していたのですが、3Pめの変数の部分でコードが上手く書けなくなり質問させて頂きたいと思いました。 sub 新しいBOOK() dim bookname as string bookname=range("a2").value workbooks.add activeworkbook.saveas filename:="C:\"&bookname&".xls",fileformat:=_xlnormal, end sub のように記述したところ(実際のファイルはネットが繋がらないPCでやっているためコピペしていません。誤字があっても気になさらないで下さい;)、".xls"の部分で「コンパイルエラー」が出てしまいます。 どうにかして前に進みたいのですがいまいち分かりません。 原因は何なのでしょうか? エクセルVBAで 名前を付けて保存の方法、もしくは・・・ エクセルVBAで名前を付けて保存は、 SaveAsを使って・・・というのは、解っているのですが、 これだと指定した名前しか、保存できないですよね;; 自分的には、エクセルの名前を付けて保存を押すと出てくる、画面を出したいのです。 それか、とあるセルに入っている数字を利用して保存の名前にしたいのですが、どなたかわかる方宜しくお願いいたします。 (本当は下のほうのやり方が良いんですけどね;;) ActiveWorkbook.SaveAs FileName:= ("A1")"月分" 見たいな感じで VBAを打てたら良いのにな・・・と思っています;; 宜しくお願いいたします。 【VB】【エクセル操作】 SaveAsでエラーが出てしまいます。 VB6.0で作成したソフトの一部でエクセルを操作する箇所があります。 『新しいブックを作成して名前を付けて保存する』ところでエラーが出てしまいます。 Excel2007,2003では正常に動作するのですが、2000ではエラーが発生し強制終了されてしまいます。 '//////////////////////////////////////////////////////////// Private Sub EditExcelFile(FileName As String) Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add xlApp.Visible = True With xlBook .Application.DisplayAlerts = False .SaveAs (FileName) .Application.DisplayAlerts = True End With Set xlBook = Nothing Set xlApp = Nothing End Function '//////////////////////////////////////////////////////////// 上記コードの .SaveAs (FileName)の箇所でエラーがでます。 .SaveAs (FileName)をコメント文にすると2000でも正常に動作します。 FileNameは新しいブック名のパスが入ります。 2000でも正常に動作させるにはどのような処理を加えれば良いでしょうか? 宜しくお願い致します。 VBAでの " の使い方をお教え下さい ThisWorkbook.SaveAs Filename:="C:???.xlsm"(???はファイル名です)をVBAの式に直す方法をお教えください。なお、???はセルを参照することにしています。具体的にはRange("O1")です。 ThisWorkbook.SaveAs Filename:="""C:" & "Range(""O1"").xlsm"""とすると、ファイル名に : は使えないというエラーメッセージが出ました。 " の使い方が分かりづらく、悩んでいます。正しい使い方はどのように考えれば良いかも教えていただければ幸いです。よろしくお願いします。 指定フォルダ内のファイルオープン→別フォルダに同じファイル名のcsvとして保存 のマクロを作ろうとしています エクセルで、指定フォルダ内のファイルオープン→別フォルダに同じファイル名のcsvとして保存 のマクロを作ろうとしています。 現在下記のようなマクロを途中まで作成したのですが、保存の良い方法が分からず困っております。 (ファイルオープンまでは出来ているようですが、その後エラーが出てしまいます) どなたかお知恵を拝借願えませんでしょうか。 どうぞ宜しくお願い致します。 Sub Book_Open() Dim BookName As String Dim PathName As String PathName = "C:\test_htmltocsv\test\" BookName = Dir(PathName & "*.html") Do Until BookName = "" Workbooks.Open PathName & BookName BookName = Dir() ActiveWorkbook.SaveAs "Sample.xls" ←← Loop End Sub EXCEL VBA)ファイルを作成する際に「そのファイルは既に存在します」の警告を出さずに上書きしたい 下記の「AAA」ブックを作成するコードを実行した際に、「そのファイルは既に存在します。上書きしますか[はい][いいえ]」という警告が出ます。この警告を出さずに、即上書きするようにしたいのですが、どうすればよいでしょうか。よろしくお願いします。 ActiveWorkbook.SaveAs Filename:="c:\FILE\AAA.xls" EXCEL2000を使用しています。 EXCEL VBA 新規ブック保存について フォームで作成したデータから、請求書などの帳票をシートに作成しています。 その請求書シートを、新たなブックを作成し、シートへ貼り付け セルC7(帳票名) F11(コード1) J11(コード2) この3つを合わせた名前で任意のフォルダへ保存して、閉じるようにしたいと考えています。 また、ブックの保存先を指定するにあたり 下の指定でコードを書いたのですが C:\Users\××××××\Desktop\管理システム\帳票 システムを丸ごと違うPCに変えても、エラーが出ないようにするには この指定の書き方でも良いのでしょうか? まだ初心者なもので 二つのブックを行き来するコードで頭が混乱しています。 まだVBA勉強を始めたばかりで、質問方法も拙いところも多々あると思いますが ご教授いただけます様、どうぞよろしくお願い致します! 自分で書いたコードですが 考えすぎて、ちょっと支離滅裂になってしまい 恥ずかしいのですが藁にもすがる思いでご質問させていただきました Dim Newbook As Workbook Set Newbook = Workbooks.Add fileName = Range("C7") & "_" & Range("F11") & Range("J11") Newbook.SaveAs fileName:=Worksheets("請求書").Range("C7") & "_" & Worksheets("請求書").Range("F11") & Worksheets("請求書").Range("J11") Windows("管理システム.xls").Activate Worksheets("請求書").Select Cells.Select Selection.Copy Windows("fileName").Activate Cells.Select ActiveSheet.Paste Range("A1").Select ブック名 (元データ) 管理システム.Xls シート名 請求書 追記: 本来はフォームから直接印刷を出したいのですが フォームでは対応しきれない部分を、シート上にて必要に応じ手を加えてから、 出力したいと考え、今回のシートへの出力を考えています ヤバいパソコンが壊れたかも!?事前に知っておきたい3つの兆候と対策 OKWAVE コラム EXCELVBAでONEDRIVE上への保管方法 EXCEL ファイルの VBAで、 OneDrive上の ファイルを コピーして XLSX および XLS旧フォーマット 両方の 保存形式で ファイルを 保管しようとしています。 WINDOWS8.1 EXCEL2013 を 使用しています。 ONEDRIVE上へ、コピー作成する同名ファイルがなく、 新規のファイルを コピー作成する場合は 『Microsoft Excelは動作を停止しました。』 というエラーが (ファイルをコピー作成していますが)、 出てしまいます。 上書きする場合は エラー がでない模様です。 ' Sub 旧EXCEL形式保管() ' Application.DisplayAlerts = False ' Dim PathName, FileName1, FileName2, FileName3 As String ' PathName = ActiveWorkbook.Path FileName1 = "テスト.xlsx" FileName2 = "テストCOPY旧.xls" FileName3 = "テストCOPY新.xlsx" ' Workbooks.Open Trim(PathName) & "\" & Trim(FileName1) Windows(Trim(FileName1)).Activate ' ActiveWorkbook.SaveAs Filename:=Trim(PathName) & "\" & Trim(FileName3) ActiveWorkbook.Close ' Workbooks.Open Trim(PathName) & "\" & Trim(FileName1) Windows(Trim(FileName1)).Activate ' If Application.Version < 12 Then ActiveWorkbook.SaveAs Filename:=Trim(PathName) & "\" & Trim(FileName2), FileFormat:=xlExcel9795 Else ActiveWorkbook.SaveAs Filename:=Trim(PathName) & "\" & Trim(FileName2), FileFormat:=xlExcel8 End If ' ActiveWorkbook.Close ' End Sub ' より効率的な VBA記述、 エラーへの対処方法 を 教えていただけないでしょうか? よろしく お願いします。 VBA 新規にエクセルを開き既存のファイルを開く VBAで新規にエクセルのアプリケーションを起動し、 その中に既存のファイルを起動する方法は有りますか? Sub Sample() Dim appExcel As Excel.Application Dim WSH As Variant Dim strPath As String Set appExcel = New Excel.Application Set WSH = CreateObject("Wscript.Shell") strPath = ActiveWorkbook.Path With appExcel .Visible = True .Workbooks.Add .ActiveWorkbook.SaveAs (strPath & "\ test.xls") End With Set WSH = Nothing End Sub このコードは、ネットから拾ったサンプルコードなのですが 新しいアプリケーションでエクセルを立ち上げることはできたのですが 新規のブックが開いてしまい、 更に、開きたいファイルに上書き保存してしまいそうです。 新規のブックが開く原因は .Workbooks.Addで、 上書き保存する原因は .ActiveWorkbook.SaveAs だとわかってるのですが、 この部分を同変更すればいいのかがわかりません。 Workbooks.Open?Filename:="C:\Users\test.xlsx" だと、現在実行しているvbaファイルを同じ枠内で 該当のファイルが開いてしまいます。 エクセル VBAによる名前を付けて保存? エクセルのVBAにて名前(本日日付&NO.)を付けてブックを保存 したいのですが下記のように書込作成しました。 ActiveWorkbook.SaveAs _ Filename:="C:\発注書\" _& "発注済" & Format(Date, "mm.dd") & "(" & ".xls" 上記で 発注済( までの名前を付けの保存は出来たのですが ( のあとに発注書シート内のセルU12にあるNOを入れたいのですが 色々試してみましたがコンパイルエラーが出てしまいます。 セルをどの様に指定すれば宜しいでしょうか? VBA 新規ファイルを元ファイルと同じ場所に保存する方法 こんにちは。VBA初心者です。 エクセルファイルのシートを、いろいろ行を増やしたり計算を自動にするようにして、 最後にテキスト形式にするためのマクロをつくっております。 元のエクセルファイルの対象のシートをコピーして、新しいファイルを作成しペースト→保存→ファイルを閉じるところまでなんとかできました。 現在、下記のコードで新しいファイルは「マイドキュメント」に保存されていますが、元のエクセルファイルと同じ場所に保存したいのですが、どのようにコードを書けばよろしいでしょうか。 教えていただけますと幸いです。宜しくお願い申し上げます。 Sheets("TXT").Copy Sheets("TXT").SaveAs FileFormat:=xlCurrentPlatformText, Filename:="今月.txt" With Workbooks("今月.txt") .Saved = True .Close エクセルvbaで発音記号を入力するには エクセルvbaで発音記号を入力したいのですが、例えば https://en.wikipedia.org/wiki/Schwa の文字をA1セルに入力するにはどういうコードでできますでしょうか。 ネットからコピペすればいいのですが、大量に入力したい場合は手間が掛かり過ぎます。 Chr関数を使えばいいのかと思いますが、そもそもその文字のコード番号がわかりません。 よろしくお願いします。 \(円)記号を置換したい Windowsのファイル名に使用禁止文字(\:/*?"<>|)を全角に置換しようと思い、下記のコードを書いてみたのですが、「\」だけが全角に置換されません。 どうしたら、「\」も全角に置換できるでしょうか? よろしくお願いいたします。 Private Function ReplaceZenkaku(ByVal fileName As String) As String Dim ignoreString As Regex = New Regex("[\\:\/\*\?""<>\|]") Return ignoreString.Replace(fileName, New MatchEvaluator(AddressOf ReplaceKigou)) End Function Private Function ReplaceKigou(ByVal M As Match) As String Return Strings.StrConv(M.Value, VbStrConv.Wide) End Function 【ワードのマクロ】特定の記号の後ろにタブをいれるマクロについて マクロとVBAは詳しくありませんが内容はだいたい理解 できるかと思います。おしえて頂けると嬉しいです。 ワードのマクロまたはVBAで以下のようなことが 可能かおしえてください。どうもマクロでは できないようなのですがVBAなら可能でしょうか? =======質問内容============= 業務でつかっているあるワード文書内の 特定の記号(■とか●とか)の後ろに タブをいれる。特定の記号の後ろに数字があれば その後ろにタブをいれる。 VBAでここまで可能でしょうか。できるとすれば どのようなコードをいれるのかご存知のかた いらっしゃいましたらよろしくお願いいたします。 VBA エクセル2003だと出るエラー VBAはじめたばかりですが、宜しくお願いいたします。 エクセル2000ではエラーがでませんが、2003の場合次のようなエラーがでます。 実行時エラー1004 アプリケーション定義またはオブジェクト定義エラーです 「デバック」を押して、コードをみますと、次の行に黄色いマーカーがつきます。 Sheets("TXT").SaveAs FileFormat:=xlCurrentPlatformText, Filename:=ThisWorkbook.Path & "\今月.txt" マウスオーバーすると、次の2つが表示されます。 xlCurrentPlatformText= -4158 ThisWorkbook.Path ="C:\Document&【現在このファイルがあるパス】" 解決方法はありますでしょうか。 ご存知の方、いらっしゃいましたら、なにとぞ宜しくお願いいたします。 このマクロの実行目的は、あるエクセルファイルを加工して、最終的にテキストファイルを生成することです。 テキストファイルをつくったあと、保存するタイミングでエラーがおきるようです。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ パソコン・スマートフォン ソフトウェア Excel(エクセル)Word(ワード)PowerPoint(パワーポイント)Access(アクセス)その他MS Office製品オフィス系ソフトPhotoshop(フォトショップ)Illustrator(イラストレーター)その他Adobe製品画像・動画・音楽編集ホームページ作成ソフト筆まめ・はがき作成フリーウェア・フリーソフトその他(ソフトウェア) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
わかりました。たいへんていねいに有難うございました。 疑問解決しました。