end-u の回答履歴

全1157件中101~120件表示
  • エクセルVBAでセル範囲のデータをクリップボードに

    セル範囲のデータをテキストとしてクリップボードに取り込みたいのです。 http://okwave.jp/qa/q5650002.html#16327676 の回答ANo2を見て Sub test01() Dim myData As DataObject Dim myCb As Variant Dim x x = "TESTデータです。" Set myData = New DataObject myData.SetText x myCb = myData.GetText myData.PutInClipboard End Sub は出来ました。 そこで、セル範囲A1:B3をクリップボードに貼ろうといろいろやってみました。 一応、下記でできましたが、実際にはもっと広い範囲を取り込みたいので、もっと簡単な方法はないでしょうか? Sub Clip() Dim myStr As String Dim myData As DataObject Dim myCb As Variant Set myData = New DataObject With Sheets(1) myStr = .Range("A1").Value & ":" & .Range("B1").Value & _ vbNewLine & .Range("A2").Value & ":" & .Range("B2").Value & _ vbNewLine & .Range("A3").Value & ":" & .Range("B3").Value End With myData.SetText myStr ', 1 myCb = myData.GetText If MsgBox("データ" & vbNewLine & myCb & " をクリップボードに送りますか? ", vbYesNo + vbQuestion, "確認") = vbNo Then Exit Sub End If myData.PutInClipboard End Sub

  • エクセルVBAでセル範囲のデータをクリップボードに

    セル範囲のデータをテキストとしてクリップボードに取り込みたいのです。 http://okwave.jp/qa/q5650002.html#16327676 の回答ANo2を見て Sub test01() Dim myData As DataObject Dim myCb As Variant Dim x x = "TESTデータです。" Set myData = New DataObject myData.SetText x myCb = myData.GetText myData.PutInClipboard End Sub は出来ました。 そこで、セル範囲A1:B3をクリップボードに貼ろうといろいろやってみました。 一応、下記でできましたが、実際にはもっと広い範囲を取り込みたいので、もっと簡単な方法はないでしょうか? Sub Clip() Dim myStr As String Dim myData As DataObject Dim myCb As Variant Set myData = New DataObject With Sheets(1) myStr = .Range("A1").Value & ":" & .Range("B1").Value & _ vbNewLine & .Range("A2").Value & ":" & .Range("B2").Value & _ vbNewLine & .Range("A3").Value & ":" & .Range("B3").Value End With myData.SetText myStr ', 1 myCb = myData.GetText If MsgBox("データ" & vbNewLine & myCb & " をクリップボードに送りますか? ", vbYesNo + vbQuestion, "確認") = vbNo Then Exit Sub End If myData.PutInClipboard End Sub

  • 【VBA】ファイルを開く→シートをコピー→保存

    VBAを使って、複数ファイルを一気に編集したいです。 あるフォルダ内に、複数のエクセルブックと VBAを登録したブックが入っています。 VBAの内容としては、 (1)フォルダ内のエクセルファイルをすべて開く (2)各ファイル1ページ目のシートを複製(コピー)する (3)上書き保存して閉じる (4)VBAを登録したブックを閉じる です。 下記のように書いてみたのですが、まったく動かないので どこが間違っているかのアドバイスをいただければと思います。 ----------------------------------------------------- Sub test() Dim Myfile, Filepath As String Filepath = ThisWorkbook.Path 'フォルダ名取得 Myfile = Dir(Filepath & "\") 'フォルダ内のファイル名取得 Do While Myfile <> "" Workbooks.Open Filename:=Filepath & "\" & Myfile Workbooks(Myfile).Activate Sheets(1).Select Sheets(1).Copy after:=Sheets(1) Workbooks(Myfile).Close SaveChanges:=True Myfile = Dir() Loop ThisWorkbook.Close SaveChanges:=True End Sub ----------------------------------------------------- よろしくお願いいたします。

  • Excel VBA インポートファイル名指定したい

    Excel VBA 初心者です。 スイッチを押すと、テキストファイルのインポートダイアログを開いて、外部データの取り込みをしたいと考えています。 指定セルにインポートを設定+シートにマクロ実行スイッチを配置+マクロの自動記録の記述を参照してマクロを登録し、そのスイッチを押す事で、正常にインポート作業を行なう事ができました。 しかし不明点が2箇所ほどあります。 1.ダイアログを開いたとき、ファイル拡張子を指定したいのですが、どうすれば指定できますか? 2.ダイアログを「キャンセル」で閉じると、「実行時エラー1004:アプリケーション定義またはオブジェクト定義のエラー」と表示されるのですが、解決方法はどうすればいいですか?  ※マクロの自動記録を参照して記述したマクロ処理 Sub Macro1() Sheets("HIN").Select Range("A1").Select ActiveCell.Offset(2, 0).Select Selection.QueryTable.Refresh BackgroundQuery:=False Sheets("Sheet1").Select End Sub 環境:EXCEL2000、VB6.0 以上、宜しく御願い致します。

  • Excel2007でpdfファイルに変換する

    Excel2007でpdfファイルに変換する(名前を付けて保存する)と、できたpdfファイルの右上に印刷日時が出るのですが、出ないようにするにはどうすればよいのでしょうか。Word2007では出ませんでした。

  • エクセルでのグラフを複数選択し1ページずつ印刷

    質問させていただきます。 現在エクセル2010を使用してグラフを作成しています。 グラフをA1・A2・・・・A30の計30個程度作成したとしてそれぞれを1つの用紙に印刷したいと考えています。 現在の方法では (1)A1を選択 (2)印刷プレビュー (3)印刷実行 (4)A2を選択 … の方法を繰り返し行うことで印刷していますが、データ数が大量のグラフのため1つずつグラフを上記の手順で行うと非常に時間と手間がかかってしまいます。 そのため、グラフをすべて選択して印刷を試みたのですが、ワークシートごと印刷されたり、縮小して小さいグラフが並んだものしか印刷できません。 もしよろしければ、複数グラフを選択して一括で1ページずつ印刷することは可能なのかを教えていただけると幸いです。 また、可能ならばその方法も教えてください。 そういうマクロなどもありましたら、教えてください。 それでは、よろしくお願いいたします。

  • VBA サンダーバードのメール自動作成

    いつもお世話になってます。 サンダーバードでメールを自動作成しようと思い、回答者さんのアドバイスで以下のコードを 作成しました。 【仕様】 sheet2のA列に、メールの宛先と本文の文字列が下方向に並んでおり、ループしながら宛先と本文を新規メールに送っていく。 Dim sPath As String Dim Mailad As String Dim Subjct As String Dim Bodyst As String Do Until Sheets("sheet2").Range("J" & cnt).Value = syuryono + 1 If Sheets("sheet2").Range("I" & cnt).Value = "アドレス" Then 'メルアドを取得 meruado = Sheets("sheet2").Range("A" & cnt).Value cnt = cnt + 1 'メルアドから下の行を本文として取得 honbun = "" Do honbun = honbun & Sheets("sheet2").Range("A" & cnt).Value honbun = honbun & "%0a" cnt = cnt + 1 Loop Until Sheets("sheet2").Range("I" & cnt - 1).Value = "エンド" '文字数カウント a = Len(honbun) 'メール作成 sPath = """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose " Mailad = meruado Subjct = Sheets("説明").Range("A7").Value Bodyst = honbun Shell sPath & "to=" & Mailad & "," & _ "subject=""" & Subjct & """," & _ "body=""" & Bodyst & """" Else cnt = cnt + 1 End If Loop で、質問なんですが、 'メルアドから下の行を本文として取得 honbun = "" Do honbun = honbun & Sheets("sheet2").Range("A" & cnt).Value honbun = honbun & "%0a" cnt = cnt + 1 Loop Until Sheets("sheet2").Range("I" & cnt - 1).Value = "エンド" 上記の部分で本文を作っていくときに、本文中に「,」が入っていると、そこで本文が途切れてしまいます。 例えば、A2セルに「りんご」A3セルに「みかん」とある場合、変数honbunは「りんご%0aみかん」となり メール本文は「りんご(改行)みかん」となりますが、A2セルが「りんご」A3セルが「み,かん」の場合 メール本文が「りんご(改行)み」で終わってしまいます。 正規表現?的な文字が入っていると、メーラーのbodyに渡す時に途切れちゃうのかなという感じです。 変数honbunに入っている文字列はすべてただの文字列とし、上記の例の場合にメールが途中で 途切れないようにする方法はありますでしょうか?

  • エクセルVBAに関する質問です。

    フォームのコマンドボタンを押すと、シート1のA1が選択され、その後、何もせず数字を入力すると、シート1のA1にその数字が入るようにしたいのですが、どうすればよいのでしょうか? フォームはメニュー代わりに使いたいので、常に表示させておきたいです。 よろしくお願いします。

  • CSVファイルをインポートするマクロについて

    CSVファイルをインポートするマクロを作成しようと思っているのが、作り方がわかりません。 アドバイスを下さい。 インポートするCSVの書式 "AAA","CC","DFD" "BBB","FF","HHH" "JJ","LL","JI" "Skip" "A","Y","JI","Y","JI" "B","L","JI","JI" "C","IL","JI" 1~3行目はエクセルのD3行,D4行,D5行 4行目はインポートしない 5行目以降はエクセルのA6行,A7行・・・にインポートしたいと思っております。 サンプルを作成して頂けないでしょうか。 下記のソースを元に作成しようとしているのですが、わからなくなってしまいました。 ◆作成途中のソース Sub READ_TextFile() Const cnsTitle = "テキストファイル読み込み処理" Const cnsFilter = "CSV形式ファイル (*.csv),*.csv" Dim xlAPP As Application ' Applicationオブジェクト Dim intFF As Integer ' FreeFile値 Dim strFileName As String ' OPENするファイル名(フルパス) Dim vntFileName As Variant ' ファイル名受取り用 Dim X() As Variant ' 読み込んだレコード内容 Dim IX1 As Long ' CSV項目カラムINDEX Dim GYO As Long ' 収容するセルの行 Dim lngREC As Long ' レコード件数カウンタ Dim strREC As String ' レコード領域 Dim POS1 As Long ' レコード文字位置INDEX Dim POS2 As Long ' レコード文字位置INDEX ' Applicationオブジェクト取得 Set xlAPP = Application ' 「ファイルを開く」のダイアログでファイル名の指定を受ける xlAPP.StatusBar = "読み込むファイル名を指定して下さい。" vntFileName = xlAPP.GetOpenFilename(FileFilter:=cnsFilter, _ Title:=cnsTitle) ' キャンセルされた場合はFalseが返るので以降の処理は行なわない If VarType(vntFileName) = vbBoolean Then Exit Sub strFileName = vntFileName ' FreeFile値の取得(以降この値で入出力する) intFF = FreeFile ' 指定ファイルをOPEN(入力モード) Open strFileName For Input As #intFF GYO = 13 ' ファイルのEOF(End of File)まで繰り返す Do Until EOF(intFF) ' レコード件数カウンタの加算 lngREC = lngREC + 1 xlAPP.StatusBar = "読み込み中です....(" & lngREC & "レコード目)" ' 行単位にレコードを読み込む Line Input #intFF, strREC ' (1) ' LineInputより自分で半角カンマを探しCSV→項目分割させる POS1 = 1 IX1 = 0 ReDim X(IX1) ' 配列を初期化 Do While POS1 <= Len(strREC) ' (2) POS2 = InStr(POS1, strREC, ",", vbTextCompare) ' (3) If POS2 < POS1 Then POS2 = Len(strREC) + 1 End If ReDim Preserve X(IX1) ' 配列要素数を再設定 X(IX1) = Trim$(Mid$(strREC, POS1, POS2 - POS1)) ' (4) ' シングルクォーテーション、ダブルクォーテーションで囲まれている場合は ' 両端文字を取り除く If (((Left$(X(IX1), 1) = """") And (Right$(X(IX1), 1) = """")) Or _ ((Left$(X(IX1), 1) = "'") And (Right$(X(IX1), 1) = "'"))) Then ' (5) X(IX1) = Trim$(Mid$(X(IX1), 2, Len(X(IX1)) - 2)) End If POS1 = POS2 + 1 IX1 = IX1 + 1 Loop ' 行を加算しレコード内容を表示(先頭は2行目) GYO = GYO + 1 If IX1 >= 1 Then Range(Cells(GYO, 1), Cells(GYO, IX1)).Value = X ' 配列渡し (6) End If Loop ' 指定ファイルをCLOSE Close #intFF xlAPP.StatusBar = False ' 終了の表示 MsgBox "ファイル読み込みが完了しました。" & vbCr & _ "レコード件数=" & lngREC & "件", vbInformation, cnsTitle End Sub

  • VBAでの文字列置換

    表題のとおりですが、過去の質問では良い回答が 見当たりませんでした。 ・やりたいこと ”A”->”001” ”B”->”002” ”C”->”003” ”D”->”004” のようにテキストの置換候補があり(置換、置換対象のテキストは全角、半角さまざまです)、 それをExcelのワークシートに適用したいです。 やり方はどういうやり方でも良いです。ただ置換リストは追加、変更する必要があります。 VBAのreplaceを利用した置換マクロを作成すればよいのでしょうか。 当方、Word用の簡単なVBAマクロの作成経験はありますが、 Excelでは利用したことがありません。 ある程度具体的に御教授いただけると助かります。 よろしくお願いします。

  • マクロ CSVファイル取込 最終行、最終列の取得

    マクロでCSVファイルを取込むプログラムを作成しております。 最終行を取得するソースまではできたのですが、最終列を取得する処理ができておりません。 教えて頂けないでしょうか。 処理概要 (1)ボタンを押したら、Sheet2にCSVファイルがインポートされる (2)Sheet2に出力されたA2行~A8行とA2行~A8行の最終列までをSheet1のD4行~D10行、D4行~D10行の列にコピー  (3)Sheet2に出力されたA9行目はコピーしない (4)Sheet2に出力されたA10行以降とA10行以降の最終列までをSheet1のA13行以降の最終列までにコピー 現在のソースは(2)、(4)の最終列を取得するソース以外はできています。 (2)、(4)の最終列を取得し、コピーする方法を教えて下さい。 現在のソースです。 Sub READ_TextFile() Dim LoadFileName As String Dim LR As Long '選んだcsvファイルをSheet1に読み込む LoadFileName = Application.GetOpenFilename("CSVファイル(*.csv),*.csv", 1, "読み込むcsvファイルを選んで下さい", False) If LoadFileName = "False" Then Exit Sub Workbooks.Open LoadFileName Cells.Copy ThisWorkbook.Sheets("Sheet2").Range("A1") ActiveWorkbook.Close False 'Sheet2のA2:A8をSheet1のD4を先頭セルとする範囲にCopy Worksheets("Sheet2").Range("A2:A8").Copy Worksheets("Sheet1").Range("D4") 'Sheet2のA列のデータのある最終行を取得しLRという変数に入れる LR = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row 'Sheet2のA10からA列の最終行までをSheet1のA13を先頭セルとする範囲にCopy Worksheets("Sheet2").Range("A10:A" & LR).Copy Worksheets("Sheet1").Range("A13") End Sub

  • VBA shellでメールを作成した際の変数は?

    エクセルVBAから、shellメソッド?を使い、サンダーバードのメール作成画面を呼び出し 送信先、件名、本文はワークシートから持ってくるというプログラムを作りたいです。 webを調べた結果、自分にもできそうなのはshellでのメール作成画面の呼び出しだったので 以下のプログラムをテストしてます。 Shell """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose ""to="" アドレス "",subject=件名,body=本文""", vbNormalFocus 上記プログラムで、メール画面を呼び出せたのですが 送信先、件名、本文を変数から入力することはできないのでしょうか? 例えば上記例で言うと、to=の後の「アドレス」を変数にしたいのです。 例えば上記のプログラムの前に アドレス=○○@yahoo.co.jp のように、変数宣言をしても、出てきた送信画面では「アドレス」のまま、固定値のままなのです。 メール作成画面にデータを渡す際、変数の使用をする方法はあるのでしょうか?

  • Excel ピボットテーブル 外部データ取り込み

    外部データ取り込みによるピボットテーブルにて、値が0となり正しい値が表示されません。 Book1にデータを蓄積しています。 Book2でBook1のデータを取り込んでピボットテーブルを作成したところ、あるフィールドの集計値だけが0となってしまいます。 問題はBook2でデータを取り込んだ際に、そのフィールドだけが文字列扱いになってしまっているようです。(ピボットテーブルのセルの詳細表示にて、文字列となっていることを確認) Book1にてピボットテーブルを作成した場合、そのフィールドは数値として認識しています。 どのように対処すれば、数値として認識してくれるのでしょうか? 動作環境 Win7 Excel 2010

  • EXCEL2000でのVBAについて

    お世話になります。 EXCEL2000のVBで下記のことをしたいのですが、うまく出来ないところがあり対処方法を教えて頂きたいです。 (1)アクティブブックの名前を取得   (2)ブックのセルA1の値を取得 (3)保存ダイアログでA1の値をファイル名にし保存 (4)保存したファイルを閉じる (5)基のアクティブブックを再度開く 以上です。 今できていないのは(1)と(5)です。 基のアクティブブックの名前をプログラム上に直接入力する分には出来るのですが、 ファイル名が変更になった時に、いちいちVBを書き換えるのが面倒なだけです… コードを提示しますので、ご教授願えればと思います。 Sub 保存() Dim ファイル名 As String, フォルダ名 As Object, フォルダ選択 As Object, ファイル名2 As Workbook Set ファイル名2 = ActiveWorkbook ファイル名 = Range("A1").Value Set フォルダ選択 = CreateObject("Shell.Application") Set フォルダ名 = フォルダ選択.BrowseForFolder(0, "保存フォルダを選んでください", 1) ActiveWorkbook.SaveAs Filename:=フォルダ名.items.Item.Path & "\" & ファイル名 & ".xls" MsgBox ファイル名 & ".xls", vbOKOnly, フォルダ名 & "に保存しました" Workbooks.Open "C:\test\" & ファイル名2 Workbooks(ファイル名 & ".xls").Close End sub ファイル名の取得が間違っていると思うのですが、ネットなどで調べてみましたが、よくわかりませんでした。

  • Yahooからの株価取込みが正しくできない

    Yahooからの株価データの取り込みが少し不便です XP上でExcel2010を使用しています。 VBAの経歴は1年ほどでさほど詳しくはありません。 Yahoo ファイナンスから株価データを取得しようとすると以下の現象が起きます。 Excelのメニューバーの「データ」→「外部データの取り込み」→「新しいWebクエリ」を選んで。 Yahoo ファイナンスまでは行けますが、株価データのテーブルだけを取り込もうとしても 黄色の矢印アイコンが画面全体を取り込む位置に一個だけしか表示されません。 テーブルだけのアイコンを表示する方法をご教示ください。 今は取り込んだ全体情報のうち不要な部分をマクロで消していますが、 連続して複数の銘柄を取得するとき時々不具合を発生します。 最初からデータのテーブルだけを取得すれば安定して動作すると思っています。 よろしくお願いします。

  • EXCELのVBAについての質問です

    現在、2つのブックでVBAを使用して作業中ですが、 どうしてもうまく作動しない箇所があります。 BookAとBookBがあり、BookBにはtesというユーザーフォームを設置しています。 やりたい作業は以下の通りです。 BooKAからコマンドボタンを利用してBookBを開く。 BookBは開くとBookAを閉じる。testのユーザーフォームを開く。 BookAのコマンドボタンのコードは Private Sub CommandButton1_Click() Dim mypath As String mypath = ThisWorkbook.Path Workbooks.Open (mypath & "BookB.xlsm") End Sub BookBのOPENイベントに Private Sub Workbook_Open() Workbooks("BookA.xlsm").Close test.Show End Sub を入力しています。 これを実行すると エラーが発生せず、デバッグで1行ずつコードを確認すると test.Showが実行されずに closeで処理が終了されています。 ・ユーザーフォームのActiveイベントでclose処理を入れるとcloseが処理されずに モードレスでフォームを開くと、close後にフォームが閉じられてしまいます。 ・クッション用のブックを作成して、そこにBookAをclose処理とBooKBのOPEN処理を入れても closeで処理が終了されてしまいます。 エラーが出ると対応の使用があるのですが、エラーも無く静かに処理だけが終了してしまうため、 対応ができず困っています。 あちこち検索して調べてみましたが、いずれも当てはまらない状況です。 何かヒント等でもお持ちの方は、ご教授下さい。

  • VBA上で定義された関数のワークシート上での実行

    Ecxel2003 のマクロ上で、複素数の構造体を以下のように定義しました。 Public Type Complex R As Double I As Double End Type 2つの実数(引数)を複素数に変換する関数を、以下のように定義しました。 Public Function setComplex(x As Double, y As Double) As Complex setComplex.R = x setComplex.I = y End Function 複素数の絶対値を計算する関数を以下のように定義しました。 Public Function absComplex(A As Complex) As Double absComplex = Sqr(A.R * A.R + A.I * A.I) End Function これらの定義式を用いて、ワークシート上の数値を参照して 計算しようとしても、なぜかうまくいくません。 うまくいかない例 → =absComplex(setComplex(B6,C6)) (セル"B6"には 2 、セル"C6"には 3 が格納済み) マクロ上で計算する場合はうまくいきます。 Public Function test() As Double Dim varC1 As Complex varC1 = setComplex(2, 3) test = absComplex(varC1) End Function 適当なセル上で、=test() と打ち込むと、√13に相当する少数が表示されます。 なぜ、=absComplex(setComplex(B6,C6)) では計算してくれないのでしょうか?。 そもそも、マクロ上で定義した構造体を、セル上で用いようとするのがいけないのでしょうか? どなたか、ご教授願います。

  • excelで図形の真ん中に線を引くマクロ

    みなさん教えてください。 今エクセルで、添付図のような図を描いています。 そこで、教えて頂きたいことがあります。 図形1にAのように、縦に真ん中のラインを引き、AとBの間L(単位:mm)を知りたいと思います。 これをマクロで行うことは可能でしょうか? みなさん教えてください。 お願いします

  • Excel 文字列を区切る VBA 質問

    A列にスペース区切りのデータがあります これをC列 D列 に分けて表示したいのですが A列のデータが不規則(個数がバラバラ 空白もある) と、なった場合 なかなか上手くいきません C列以降は使用可能です(空いてます) その道の方 お助けたください 元のVBAは Sub Sample3() Dim i As Long, tmp As Variant For i = 2 To 22 tmp = Split(Cells(i, 1), " ") Cells(i, 2) = tmp(0) Cells(i, 3) = tmp(1) Next i End Sub です お手数ですが宜しく お願いします

  • Excel VBA リストボックス

    Excelで管理している台帳にあるデータをユーザーフォームで呼び出して更新作業をしたいと考えています。完全に我流でやってきており、まわりくどい記述等あるかもしれませんが、ご了承ください。 また開示しにくい情報が多々あるため、記述のごく一部を抜粋しています。 添付の記述は、Excelのマスタシートにある会社名のマスタをリストボックスに取り込み、 一覧にあるデータを選択状態にしようとしています。 D_会社名にはtestという会社名が入力されており、y_会社名にもtestがセットされるはずなのに 何故か””になってしまいます。 これは何が原因なのでしょうか。