[表示 : 全て 最新50 1-99 101- 201- 2ch.scのread.cgiへ]
Update time : 01/05 16:07 / Filesize : 78 KB / Number-of Response : 246
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part64



1 名前:デフォルトの名無しさん mailto:sage [2019/12/02(月) 23:43:54.18 ID:ngrqyTy20.net]
!extend:checked:vvvvv:1000:512

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part63
https://mevius.5ch.net/test/read.cgi/tech/1568630099/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

72 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 20:37:14.17 ID:Z8IKnDOY0.net]
>>69
仰いますけど、
参照しようとした定義名は、自bookのアクティブsheet内だす。

73 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 20:45:36.21 ID:Z8IKnDOY0.net]
>>71
参考にしたのはMSコミュニティのこれ↓

https://answers.microsoft.com/ja-jp/msoffice/forum/msoffice_excel-mso_other-mso_2010/%E5%89%8D%E5%9B%9E%E4%BF%9D%E5%AD%98%E6%97%A5/97f992ad-416d-e011-8dfc-68b599b31bf5?messageId=33ce5330-cb6f-e011-8dfc-68b599b31bf5&auth=1

74 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 21:50:46.52 ID:TvnOkFVF0.net]
Range("R_TargetFullPath").Value

75 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 22:19:06.53 ID:JYKNIWO60.net]
>>72
そのシートがアクティブになっていれば取得できる
なってなければ取得できない
取得できないということはアクティブだと思い込んでるだけか、名前が間違ってるか、指定が間違ってるか

76 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 22:21:49.68 ID:ZJISTsUc0.net]
>>72
シートは一つ?別のシートにも同名範囲があって特定できないとか?

77 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 22:23:12.83 ID:JYKNIWO60.net]
>>74
それだと1004エラーが出たらしい

78 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 00:08:00.24 ID:IGUOZi3/x.net]
>>73
これはサブルーチン呼び出しの都合でPublicスコープにしているだけで、BuildinDocumentPropertiesの仕様とは関係ないのでは

79 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 00:18:53.99 ID:IGUOZi3/x.net]
名前付き範囲のスコープの問題もありそう

80 名前:デフォルトの名無しさん (ワッチョイ 4be8-V35x) mailto:sage [2019/12/10(火) 06:11:01 ID:1SW8Wt4N0.net]
>>77
その時は
Range(R_TargetFullPath).Value
としたんじゃないか?>>52-53



81 名前:デフォルトの名無しさん (ワッチョイ 037d-V35x) mailto:sage [2019/12/10(火) 11:53:22 ID:Snrdoe410.net]
ページに設定しているフィルターの解除をする場合

Range("E5").Select
Selection.AutoFilter

といった具合にRangeとセットで使うしか無いのでしょうか?
ここでは、VBAで「E5」を指定していますが、中のデータが入力により空になる事もある為
Range指定する事なくフィルタを解除したいです。

82 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 20:17:21.65 ID:78OD2uofx.net]
>>81
ページって何?シートのこと?
それとも印刷範囲のこと?

83 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 21:36:21.94 ID:ntdCbZOy0.net]
シート1のJ1〜J220のセルをシート2に行で張り付けて
それをどんどん繰り返して1〜48400の列を220*220の表にしたいんだけど、forに対するnextが無いと怒られます
3つのforに対してnextが足りてないのはわかるのですが、適当な場所においてもエラーが出ます
どうしたら解決するでしょうか?

Sub TEST4()
Dim S1 As Worksheet, S2 As Worksheet
Dim i As Integer, y As Integer, z As Integer

For i = 1 To 220
For y = 1 To 48181 Step +220
For z = 220 To 48400 Step +220

Set S1 = Worksheets("Sheet1")
Set S2 = Worksheets("Sheet2")
S2.Range("A" & i & ":" & "HL" & i).Value = S1.Range("J" & y & ":" & "J" & z).Value
Next

End Sub

84 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 21:54:10.27 ID:bwWsAejd0.net]
>>83
Sub TEST4()
  Dim S1 As Worksheet, S2 As Worksheet
  Dim r1 As Long, r2 As Long

  Set S1 = Worksheets("Sheet1")
  Set S2 = Worksheets("Sheet2")
  r2 = 1

  For r1 = 1 To 48400 Step 220
    S2.Range("A" & r2 & ":HL" & r2) = WorksheetFunction.Transpose(S1.Range("J" & r1 & ":J" & r1 + 219))
    r2 = r2 + 1
  Next
End Sub

85 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 21:58:10.86 ID:blXuValB0.net]
>>83
間違った場所に置くからエラーが出るんでしょうな

86 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 22:05:06.97 ID:bwWsAejd0.net]
Sub TEST4()
  Dim S1 As Worksheet, S2 As Worksheet
  Dim r1 As Long, r2 As Long
  Set S1 = Worksheets("Sheet1")
  Set S2 = Worksheets("Sheet2")
  r2 = 1
  For r1 = 1 To 48400 Step 220
    S2.Range("A" & r2).Resize(, 220) = WorksheetFunction.Transpose(S1.Range("J" & r1).Resize(220))
    r2 = r2 + 1
  Next
End Sub

87 名前:デフォルトの名無しさん [2019/12/10(火) 22:33:04.15 ID:e5kRWpUlM.net]
>>83
シート1には既に220*220の表があって、それをシート2に縦横入れ換えて貼り付けたいってこと?

88 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 22:41:16.48 ID:+pH53X+X0.net]
現在表示しているワークブックからファイル名の一部を取り出して、その数字をMsgBoxで表示するなど他の計算で使うことってできないでしょうか?

例えば「01-5.xlsx」の場合「-5」、「02+5.xlsx」の場合「5」、「03+1000.xlsx」の場合「1000」、「04-1234.xlsx」の場合「-1234」のような形
左の数字は2桁、右の数字は1〜4桁でファイルによって違います
0や小数点以下の数字はありません
ファイル名がプラスの場合とマイナスの場合があります
正数の場合ファイル名は+表記ですが記号自体は必要ありません
「マクロを実行しているワークブック」ではなく「現在表示しているワークブック」のファイル名を参照したいです

プログラミングの経験が全くなくて先週からマクロを触り始めたので不可能なことを質問かもしれませんがよろしくお願いします

89 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 22:46:23.21 ID:ntdCbZOy0.net]
>>84、866
スゲーできたーありがとうございます。中身よく見て、勉強します。

>>87
シート1に1列で48400ほどデータがあるんで、それを別シートに220*220の表にしたかったんです。

90 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 23:00:44.84 ID:78OD2uofx.net]
>>88
+ または - を区切り文字としてThisworkbook.NameをSplit関数で分割して配列化する

得られた配列の二つ目の要素を取り出して整数型に型変換する

この二つのステップを実現すれば良い



91 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 23:02:34.06 ID:78OD2uofx.net]
>>88
よく要件を読んだらThisworkbook.Nameより
ActiveWorkbook.Nameの方が良いかも

92 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 23:04:16.14 ID:blXuValB0.net]
>>90
-が消える上に.拡張子まで全部取得する羽目になる

93 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 23:06:54.98 ID:blXuValB0.net]
ファイル名を.で区切った1個目の3文字目以降を取得して数値変換すればいい

94 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 01:12:21.51 ID:HRfJYRvp0.net]
>>82
シートです!

95 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 05:06:25.08 ID:rrddvJwO0.net]
>>81
Worksheets("シート1").Autofiltermode = false

96 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 09:15:52.19 ID:0sWj3Hq10.net]
>>83
For NextではNextの後を省略すべきじゃない。
For Eachならまだ分かるが。

97 名前:デフォルトの名無しさん (ワッチョイ 037d-V35x) mailto:sage [2019/12/11(水) 11:27:42 ID:HRfJYRvp0.net]
>>95
サンキュー!!

98 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 19:02:34.08 ID:3wTkanlw0.net]
それ多分フィルタ掛かってないとコケる。
On Error〜か、If AutoFilterMode Then入れないと。

99 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 23:16:02.27 ID:0sWj3Hq10.net]
>>98
Falseにする分には問題無い。

100 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 20:44:42.97 ID:gjQRRqT20.net]
>>88
Sub test2()
'整数を格納
Dim lngFileName As Long

'正規表現オブジェクトを作成
Dim objReg As Object, objRegMatch
Set objReg = CreateObject("VBScript.RegExp")
With objReg
'ファイル名のパターンを指定
'[半角数字2文字][区切り文字1文字][半角数字1〜4文字][拡張子(xlsxまたはxls)]に一致
.Pattern = "^\d{2}.(\d{1,4})\.(?:xlsx|xls)$"
.Global = True
End With

'正規表現にマッチしないファイル名だった場合の処理
Set objRegMatch = objReg.Execute(ActiveWorkbook.Name)
If objRegMatch.Count < 1 Then
'メッセージボックスを表示
MsgBox ("正規表現アンマッチ")
'Label1にジャンプして処理を終了
GoTo Label1
End If

'正規表現のグループ化した部分を整数として格納
lngFileName = objReg.Replace(ActiveWorkbook.Name, "$1")

'メッセージボックスを表示
MsgBox (lngFileName)
Label1:
End Sub



101 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 21:07:09.62 ID:TAtdTKRF0.net]
ここには北海道のグラサンスーパーハゲザーこないのー?

102 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 22:26:00.96 ID:NQXxI4iB0.net]
ファイル名に + と - は使えないんじゃね

103 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 22:29:22.61 ID:NQXxI4iB0.net]
あれ?使えるのか

104 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 23:03:36.86 ID:pxF5Pr1U0.net]
>>103
使えるけどコマンドプロンプトでトラブルが起きることがあるから推奨しないと主張する派閥もいる

105 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 08:53:38.24 ID:Kr+RdvKJM.net]
特定のディレクトリに複数のエクセルがあってそのエクセルの特定のシートに値を設定するってマクロを作ったところなんですが特定のシートがない場合は処理を抜けるようにするのってどうすればいいんでしょうか

106 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 09:22:06.72 ID:jxXQPWyn0.net]
バイナリデータをエクセルに16列で読み込んで(ここまでは出来た)、
今度はそれの逆をしようとしているのですが最初で詰まっています

とりあえず1列だけでもと、やってみたものの全然うまくいきません
サンプルのOutputをBinaryに、Print をPut構文にすればできるような気がするのですが
出力ファイルにデータが反映されてなかったりといった状況です

Sub make()

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(1)
Dim datFile As Variant
datFile = ActiveWorkbook.Path & "\data.bin"

Open datFile For Output As #1

Dim i As Long
i = 1
Do While ws.Cells(i, 1).Value <> ""
Print #1, ws.Cells(i, 1).Value
i = i + 1
Loop

Close #1

End Sub

107 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 09:29:21.11 ID:tON2FCC6x.net]
>>105
Dir関数かFileSystemObject. FileExistsで調べられる

108 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 09:33:50.19 ID:tON2FCC6x.net]
>>105
ファイル存在確認じゃなくてシート存在確認かごめん

109 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 10:57:50.32 ID:Kr+RdvKJM.net]
>>108
シートがない場合の件はForで回して無事解決できました

110 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 12:12:29.79 ID:Kr+RdvKJM.net]
VBAで名前定義がされたセルに値を書き込む際名前定義の範囲がシート指定の場合操作できないのでしょうか



111 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 14:57:25.33 ID:tYi2uLeR0.net]
>>106
出力するデータの型がバイナリになっていないとだめかも

112 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 18:47:12.50 ID:PdnkT2240.net]
>>110
そんなことないはず。

113 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 21:57:03.12 ID:mlyVYmAb0.net]
北海道のグラサンスーパーハゲザーはここにこないのー?

114 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 10:49:44.02 ID:q6pf2Uya0.net]
PDFからのデータ取得ってどうにかならんもんかな。
Adobeの有料版使ってエクセル変換してるが、フォーマットによってはレイアウト崩れが酷くて使い物にならん。
ハイライトリストも試してみたんだけど、文字がぶつ切りでしか取れなくて、速度も遅い。
座標見ながら文字結合するのもアレだし。
RPA的にコピペするのもマヌケだしなぁ。

115 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 11:40:24.17 ID:0wkcBg3Ka.net]
そんな馬鹿なことをしなくてもいいように業務フローを見直す、が正解

116 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 11:59:38.55 ID:qU+OtdBcd.net]
>>114
理論上はPostscriptを完璧にシミュレートすれば可能なはずなんだけど、かなり面倒だしそこまでやってるアプリは今のところ見た事ない
レイアウトが崩れない変換アプリがあるんなら教えて欲しいわ

117 名前:デフォルトの名無しさん mailto:sage [2019/12/14(土) 14:16:07.99 ID:O6whyyHQ0.net]
PDFのレンダリングは完璧なんだから
取得ができないのは本来おかしいんだけどね

118 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 09:28:05.88 ID:P17lNwFm0.net]
環境は、OS:Windows10, Excel2016です。
初歩的な質問ですが、よろしくお願いします。

エクセル開発タブ⇒マクロの記録を選択
マクロの保存先を新しいブックにしてOKすると、
新しいブックが表示されてしまいます。(EXCEL2010までは表示はされなかった気がします。)
表示させないようにしたいですが方法はありますでしょうか?

119 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 12:10:44.95 ID:JDQV93QX0.net]
Excelの使い方の質問ですな

120 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 13:30:33.36 ID:STgulX1kx.net]
>>118
そもそもそんな質問をする理由が分からない
マクロの保存先を作業中のブックに変えればいいだけの話では
RPAとかの都合なのか?



121 名前:デフォルトの名無しさん (ワッチョイ eff1-ctch) [2019/12/15(日) 14:37:37 ID:Jtes46Zd0.net]
VBAのコードを長時間書いていたら肛門が痛くなりました。
これは何かの病気?いい薬はありますか?

122 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 15:56:49.13 ID:ZgYfMqOYM.net]
Worksheets(1), Worksheets(2), Worksheets(3), ...
が常にワークシートの並び順になっている事を前提にコーディングしても大丈夫ですか?

123 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 16:04:03.19 ID:jQWuvGce0.net]
止めは先が100%大惨事になるだろうな

124 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 16:08:21.42 ID:STgulX1kx.net]
>>122
OK
シートの並び順とシートのIndexは連動しているから

ただ他人と共有するブックでシートIndexに依存したコードを書くならば、シートの追加や削除や並び替えをユーザー側で行えなくするために、ブック構成の保護をかける必要はあるかも

125 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 20:43:05.99 ID:FsE4lMSlp.net]
>>122
非表示がなければ

126 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 21:19:26.62 ID:SHKnrJYm0.net]
インデックス値とシートの順にそんな保証あったかな
使い古しのワークブックだと最初のシートがSheet1とは限らない気がするし

127 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 21:53:45.41 ID:jQWuvGce0.net]
sheet1じゃなくてsheet(1)だぞ
左端がsheet(1)

128 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 22:30:02.10 ID:STgulX1kx.net]
>>126
CodeNameの話じゃなくてシートインデックスの話だぞ

129 名前:デフォルトの名無しさん [2019/12/15(日) 23:11:58.85 ID:HW9FgRDW0.net]
VBAで拡張子がDWGのCAD図面ファイルから文字列と数字を抜き出してエクセルに貼り付けたいんだけどなんかイイ方法ない?

130 名前:デフォルトの名無しさん [2019/12/15(日) 23:42:09.44 ID:LATD77rz0.net]
AutocadのVBA使えば。



131 名前:デフォルトの名無しさん [2019/12/15(日) 23:44:25.04 ID:4M9N/f7Ka.net]
>>130
AutoCADのソフトは持ってないんだけど出来るの?

132 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 02:59:51.17 ID:81b5k4YR0.net]
DXFファイルはないのか?

133 名前:デフォルトの名無しさん [2019/12/16(月) 08:14:35.94 ID:ylV0M4Pv0.net]
>>132
ないんだ

134 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 08:19:35.03 ID:MkhWpp+30.net]
>>129
VBAからほかのアプリをコントロールする方法があるから、適当なフリーウェアでDXFに変換
DXFはテキストファイルだから文字列がそのまま入ってる

135 名前:デフォルトの名無しさん [2019/12/16(月) 09:20:06.30 ID:ylV0M4Pv0.net]
>>134
会社だからあんまりフリーソフト入れたくないんだよなぁ

136 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 12:08:57.72 ID:t2/k2gwa0.net]
どこまで読み取りたいのか分からんが、タイトルとかコメントとか作者とかは読み取れるんじゃない?

AutoCAD入ってなくても動くか分からんけどCOM用のAPI使って読み取るサンプルならAutodeskのフォーラムに有ったぞ。

137 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 18:36:30.35 ID:81b5k4YR0.net]
>>135
業務上必要だと上司に相談して無理ならできませんでいいやん

138 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 19:13:38.22 ID:zd6rche20.net]
DWGファイルを扱うってことはどっかの部署ではAutoCADが動いてるわけだから環境借りるなりすればいい

139 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 19:29:44.71 ID:A0F2PFYR0.net]
何がやりたいのか(最終目的が何なのか)分からないが、
AutoCADのスレで質問した方がいいと思う

AutoCAD総合スレ part7
https://mevius.5ch.net/test/read.cgi/bsoft/1556080032/

140 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 20:17:26.44 ID:+vV5KnGFa.net]
そんなデータの編集業務ってブラック企業じゃね



141 名前:デフォルトの名無しさん [2019/12/16(月) 20:25:39.43 ID:ylV0M4Pv0.net]
図面から読み取る仕事が多くてVBAで自動化できないかと考えてるだけだよ。ブラック企業でもないよ。
バイナリファイルじゃ読み取れないし、フリーソフトで一つ一つテキストファイルDXFに変換っていうのもなかなかナンセンスな気がする

142 名前:デフォルトの名無しさん [2019/12/16(月) 21:37:32.27 ID:CfM/IfFed.net]
>>141
お前が馬鹿なだけだろ

143 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 21:44:36.78 ID:UUZzkS6j0.net]
よかったな天才に教えて貰えるぞ

144 名前:デフォルトの名無しさん [2019/12/16(月) 21:59:33.00 ID:UZ2w46Iu0.net]
>>141だけど天才の>>142に教えてほしい。どうしたらいい?

145 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 23:05:55.21 ID:ArNGhSEVa.net]
その図面データに営利目的で使用してはいけないって書いてないか?

146 名前:デフォルトの名無しさん [2019/12/16(月) 23:19:30.71 ID:zUbFdDFya.net]
社内の人が作ってる図面なんだが

147 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 01:41:33.76 ID:fNjlS94d0.net]
だったら保存形式かえてもらえばすむやん

148 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 02:29:00.49 ID:7tj6sNHj0.net]
CADファイルならVISIOで開けるじゃね
VISIOにVBA載ってなかったか

149 名前:デフォルトの名無しさん (ワッチョイ a201-VrMI) mailto:sage [2019/12/17(火) 02:51:35 ID:Ef4LKPDY0.net]
DWGもCOM経由でExcelから扱える

150 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 08:50:39.06 ID:7E3y3B+ga.net]
Excelで作成したものをフリーOfficeのCalcで開こうとするとエラーが出るので、違うPCのExcelにコードを写したいのですが、どうすれば良いでしょうか?
sheetは5枚でそれぞれデータが入力されています。
そのシートをコピーしてマクロコードをコピペすればできるのでしょうか?
コピーはできても貼り付ける場所が分かりません。教えてください。



151 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 09:41:37.65 ID:vQ+5LFSo0.net]
マクロは互換性ほぼ無いからなあ

152 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 15:37:53.37 ID:/A3hSSic0.net]
>>150
よく分からん。
ファイルをコピーしてそのファイルをそのまま使えば良いんじゃね?

要はさ、そのマクロのコ―ドがExcelの何を使っているかで変わるだろ。
コードを追って必要なものをコピーすれば使えるだろうよ。

153 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 20:23:29.92 ID:3Fa5Zu3xa.net]
慣れてる人ならできるかもしれんが
初心者じゃ無理だろ、互換性ないし

154 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 20:37:54.29 ID:WWM9H/Hw0.net]
OOoのVBAは相当単純なものじゃないと動かなかったような
色々省略するのもダメだったような気がする

155 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 20:55:11.10 ID:BpmC86c/0.net]
OOOBasicなんてあるんだな
勉強する人いるの?

156 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 21:06:28.96 ID:WWM9H/Hw0.net]
OOOBasicというのか・・・
数年前きまぐれにちょっと触って、あまりの互換性のなさに逃げ出したわ

157 名前:デフォルトの名無しさん (ワッチョイ 1b8e-RPlZ) [2019/12/17(火) 23:47:48 ID:eRzCNyCK0.net]
>>150
馬鹿は死ね

158 名前:デフォルトの名無しさん [2019/12/18(水) 02:07:35.42 ID:ksLRDXXy0.net]
なんでBasicにしたんだろね。
後発なんだから選べたはずなのに。

159 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 02:16:13.86 ID:mwLPhsOw0.net]
Cに似せるほうが大変だろう

160 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 07:45:18.46 ID:enbCu13E0.net]
>>158
VBが売れたから、機能はほぼそのままにVBAとしてofficeに搭載した
VCの登場はもっと後
時系列的に仕方ないとは思う
俺もCの方が良いとは思う



161 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 07:46:31.18 ID:5n7ujQMK0.net]
oooの話だろ

162 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 08:15:59.63 ID:Bw/0QRZma.net]
>>152

PC1のデータをPC2に移したい。でも、PC2にUSBなど外部のものを差し込めないしネットには繋がるけど仮想?か分からないけどデータをPC2のデスクトップとかドキュメントに保存できないので、
データの中身をコピーしてPC2でExcelを開きペーストすれば良いのではと考えたのですが、
Excelのデータを丸々コピーするにはまずシートをコピペしてその後マクロコードをコピペすれば良いのでしょうか?どこに貼り付ければ良いのかわかりません。

163 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 14:12:35.99 ID:HS0oeyOA0.net]
PC2のどこに移したいの?
PC2でデータを開き データの中身をコピーして Excel(新規ブック)を開きペーストすれば良い
でもその新規ブックは保存できないんでしょ?

164 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 14:53:42.73 ID:mwLPhsOw0.net]
会社のPCなら上司にまず先に相談しろ

165 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 15:30:08.92 ID:Bw/0QRZma.net]
>>163
PC2のデスクトップ
Excelを新規で開けば保存できる。
もしくは開きたいExcelのデータCalcでなら開ける。
Calcで開いてコピーしたものをExcelに貼り付けたら出来るのか?セル全範囲コピーして貼り付けてマクロコードもコピーして。

166 名前:デフォルトの名無しさん [2019/12/18(水) 16:28:12.29 ID:cW21FM1r0.net]
>>162
馬鹿は死ね

167 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 18:12:16.35 ID:2hbVJNuaa.net]
シートの書式がコピーできるかな?

168 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 18:12:36.66 ID:2hbVJNuaa.net]
セルね

169 名前:デフォルトの名無しさん [2019/12/18(水) 18:28:12.80 ID:jQts0Cg90.net]
>>167
死ね

170 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 20:40:24.52 ID:eYqAoNFQM.net]
Officeクリップボードをクリアするにはどうしたらよいですか?



171 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 21:42:34.31 ID:enbCu13E0.net]
>>161
ちゅまん

172 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 22:44:40.50 ID:ycaRvEPMx.net]
>>171
かわいい

173 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 23:33:23.01 ID:kDyrT7eN0.net]
>>170
その文言でぐぐれ

174 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 17:59:43.75 ID:OOaAV86L0.net]
ちょっと教えて下さい

自動的に新しいcsvファイルが保存されてくるフォルダがあって
新しいファイルが保存されたら処理をするってコードを作りたいんですが
どんな感じにしたらよいのかアイデアが浮かびません

イメージは処理開始としてから処理停止とするまでずっと監視と処理をし続ける感じです
正攻法ってどんな感じでしょう?

175 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 18:07:29.48 ID:FlPgbXc+r.net]
定期的にフォルダの更新日時かファイル数を比較

176 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 19:15:47.42 ID:PZllcG7iF.net]
C#に乗り換えてFileSystemWatcherかな
そういうのはサービスにして常時起動したいだろ?どのみちVBAじゃ無理がある

177 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 20:13:02.64 ID:r3z4nZn+0.net]
>>174
csvデータは一般機能のpower queryで「フォルダ指定」で取得してから、何らかの加工をする必要があればVBAでやるというのはどうでしょう?

178 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 20:52:54.37 ID:Uvgz+C1W0.net]
>>174
Application.OnTimeでググればいろいろ出てくる

Excel/VBA: 特定のフォルダ内のファイルの更新状況を監視するマクロ
pineplanter.moo.jp/non-it-salaryman/2016/12/30/excel-vba-folder-monitor/

179 名前:174 [2019/12/19(木) 21:50:34.66 ID:OOaAV86L0.net]
コメントありがとうございます。
C#は知識がなくて・・・。1か月後に必要なんですが今からいけるかな。。。

>>177
すこし理解に時間がかかっています。内容確認してみます。

>>178
参考例ありがとうございます。
更新したファイルだけ処理をしたいのですが、この例だと毎回全ファイルを読むみたいなので
例えば処理したファイル名はシートに記録しておいて
更新起動時に毎回処理したかしてないか判断するのも追加するって感じですかね。

180 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 22:24:23.56 ID:O8pz/cv40.net]
>>179
悪用すると色々できそうだな



181 名前:デフォルトの名無しさん (ワッチョイ 9f2c-1ZZR) mailto:sage [2019/12/20(金) 10:20:51 ID:A+TGdcd90.net]
ファイルのタイムスタンプで判断すれば?

182 名前:デフォルトの名無しさん (ワッチョイ 9f2c-1ZZR) mailto:sage [2019/12/20(金) 11:57:58 ID:A+TGdcd90.net]
Ruby で、ファイルの最終更新時刻を取得する

fs = File::Stat.new( "./a.txt" )
p fs.mtime #=> 2018-01-16 13:36:40 +0900 最終更新時刻

p current = Time.now #=> 2019-12-20 11:54:02 +0900
p current - fs.mtime, fs.mtime - current

#=> 60733042.351125, -60733042.351125

183 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 15:07:41.92 ID:INeYifjy0.net]
>>179
ファイルのアーカイヴ属性を変更すればいいよ。これなら新規以外にも、変更ファイルも拾えるはず。

184 名前:デフォルトの名無しさん [2019/12/20(金) 15:08:25.80 ID:CBAVBsMi0.net]
馬鹿ばっか

185 名前:デフォルトの名無しさん [2019/12/20(金) 15:24:50.75 ID:CkbICV7EM.net]
ハゲばっか

186 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 20:34:34.24 ID:UWWbjOVR0.net]
馴鹿ばっか

187 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 11:10:49.09 ID:lLQbKr+9r.net]
クリスマスだから

188 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 19:08:13.95 ID:reWWVMAr0.net]
セルに指定したフォントの情報などを変数(オブジェクト?)として
保持して、別のセルに貼り付けることはできないでしょうか

Public Sub textMacro()
ActiveSheet.Cells(1, 1).Select
ActiveCell.Value = "testTESTtest"
ActiveCell.Characters(Start:=5, Length:=4).Font.ColorIndex = 3
End Sub

こんな感じで、文字列の途中で色を変えたりフォントを変えたり
した情報を構造体配列として保持しておいて、ソートしたり
特定条件で抽出したりしたデータを、書式ごと別のセルに
貼り付けたいのです

上記のようなコードで一旦別のワークシートに書き込んでやって、
そこを参照してコピーすれば解決します
ですが作業用ワークシートを作るのが美しくないので、なにか
方法がないものかと悩んでいます

189 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 19:30:42.69 ID:EDn7hR2k0.net]
>>188
rangeにでも入れとけばいいんじゃないの

190 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 19:57:20.88 ID:reWWVMAr0.net]
>>189
言葉足らずだったかもしれません

188で書いたコードのように、一旦どこかのセルに書式を設定するのではなく、
書式設定済みのデータを内部で生成したあとでセルに貼りたいのです



191 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 20:19:43.43 ID:Z2fXXpuT0.net]
アドバンスフィルタ使うとか。

192 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 21:42:26.79 ID:u7lOGHHR0.net]
>>188
activecellは rangeオブジェクト
rangeオブジェクトは必ずどこかの実態セルに紐付けしないと設定、参照できない
なので、実態セルを使いたくなければ、仮想的に実装するしかない
全てを網羅するには、それは非現実的(ムダ)だから私ならやらない
あとの判断はお任せする
(may be. GL)

193 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 21:50:56.66 ID:vmSiEfoS0.net]
ここには北海道のグラサンのスーパーハゲザーこないのー?

194 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 22:03:15.47 ID:xOT/WAE8x.net]
>>190
セルのコピーで済む処理をわざわざスクラッチする意味があるのか?
マクロ言語で車輪の再発明をするのは無駄だし結果的に美しくないものが出来上がって終わりなことが多いぞ


まぁ文字列書式の取得をするならRange.Charactersクラスを対象にForで一文字ずつループを回して、Fontプロパティで取れる各フォント属性を調べて構造体配列に格納していけば良い
Characters(i, 1)とか指定すれば一文字ずつ調べられる

具体的にはFontクラスのうち
Bold, ColorまたはColorIndex, FontStyle, Italic, Name, Size, ThemeColor, ThemeFont, Underlineあたりを取得しとけば何とかなるんじゃないか

195 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 22:26:10.14 ID:reWWVMAr0.net]
>>192
>>194
内部データとして、特定の文字だけボールドにしたり赤字にしたりしたデータを
保持しておいて、それをそのままセルに貼れないだろうかという趣旨でした

全然実用性のない例ですが、何らかの名簿データを元データとして入力すると
して、「佐藤」という名字だけを赤で表示したい、というケースがあったとします。

このとき、表示するときに年齢別だったり性別だったりの条件で抽出したりする
際に、毎回セルにデータを書き込むときにフォントの設定をする必要があるのか、
一度設定済みのデータを貼れば済むような方法があるのか、という質問でした

現在は毎回貼るたびにフォントの設定をしているので、もっと効率的な方法が
あるのではないかと考えた次第

でも残念ながら、どうやらなさそうですね
確かにセルをコピーすれば済む話なので、断念します

196 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 23:09:32.16 ID:u7lOGHHR0.net]
>>195
鈴木 健二
の鈴木だけを赤文字に設定したセルの書式コピーして
鈴木 太郎
セルに貼り付けしても、鈴木だけを赤にはできなかった
(バージョンによって違うかもだが)
ロジックでやるしかないんじゃないかな
鈴木or宇都宮を赤にするとか

197 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 23:41:09.25 ID:reWWVMAr0.net]
>>196
色々ありがとうございます

今回やりたいのは、鈴木だけを赤くした「鈴木 健二」というセルを作るのに、
事前にデータを作ってからセルに貼り付けたいということですから、
「鈴木 太郎」の「鈴木」が赤くならなくても特に問題ありません

この例で言うなら、コピペ以外の方法で、同じく鈴木だけが赤くなった鈴木健二の
セルを効率よく作りたい、ということですね

198 名前:デフォルトの名無しさん mailto:sage [2019/12/22(日) 00:19:45.02 ID:4IcKy9Blx.net]
>>197
構造体とかでパラメータ設定すればやれないことはない
書式設定対象の文字列の開始オフセット位置と文字列長、フォント属性の設定値からなる構造体配列を作って、一括でRangeオブジェクトのプロパティに代入すれば良い

ただしパラメータを動的に指定する処理やらUIやらを構築する手間とか考えたら結局セルコピーでよくねってなる

199 名前:デフォルトの名無しさん mailto:sage [2019/12/22(日) 09:13:02.87 ID:m/MVfWr2M.net]
office2010から2016へ変えたらマクロの遅さが気になって
セルコピーを別の方法でやれないか考えてる

200 名前:デフォルトの名無しさん mailto:sage [2019/12/22(日) 10:54:11.14 ID:sgFeqmUl0.net]
マクロが遅いんじゃなくてPCのスペックが貧弱過ぎるんじゃないか



201 名前:デフォルトの名無しさん mailto:sage [2019/12/22(日) 11:54:58.14 ID:M+v9sXGU0.net]
>>198
そこまでする価値はないですね
自分が知らないだけで、なにか簡単な方法があるのではないかと思って
いたのですが、そもそも需要がない動作なんでしょうね

202 名前:デフォルトの名無しさん mailto:sage [2019/12/22(日) 12:26:41.63 ID:cYIprE7S0.net]
>>199
変えたのはExcelだけか?
実はOSを10に変えた時にExcelも入れ替えたのではなく?

203 名前:デフォルトの名無しさん mailto:sage [2019/12/22(日) 14:42:00.45 ID:qo1j1gBdx.net]
>>201
そこまでやるならmhtか何かでコード生成してからxls変換してレンダリングする方がいいよねって話になってしまうからな

204 名前:デフォルトの名無しさん mailto:sage [2019/12/27(金) 23:18:51.19 ID:89CBNjra0.net]
んあ

205 名前:デフォルトの名無しさん mailto:sage [2019/12/27(金) 23:55:11.89 ID:kLvnMS830.net]
北海道のグラサンスーパーハゲザーはここにはこないのー?

206 名前:デフォルトの名無しさん mailto:sage [2019/12/28(土) 10:04:17.04 ID:Ht/sR5FE0.net]
北海道にいるんだろ

207 名前:デフォルトの名無しさん mailto:sage [2019/12/28(土) 11:09:10.42 ID:iMlStgtR0.net]
あなたのハゲにサクセスしたい

208 名前:デフォルトの名無しさん mailto:sage [2019/12/28(土) 17:00:07.97 ID:SHykekh8a.net]
休みに入って大人しくなったな

209 名前:デフォルトの名無しさん mailto:sage [2020/01/01(水) 22:49:57.07 ID:/3koq0Lq0.net]
フォルダ名を取得し名前を変える処理をしたいのですが、フォルダ名の頭に0がついているとセルに取り込んだ際、数値扱いされきえてしまいます。何かいい方法ないでしょうか?
ほぼネットから引用したものですが。。

Sub folder()
Dim folderPath As String
folderPath = Sheets(2).[B1]
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim n As Variant
n = fso.GetFolder(folderPath).SubFolders.Count

If (0 < n) Then
Dim I As Long
I = 1
Dim f As Object
For Each f In fso.GetFolder(folderPath).SubFolders
Cells(3 + I,1).Value=Str(f.Name)
I = I + 1
Next f
End If
End Sub

210 名前:デフォルトの名無しさん mailto:sage [2020/01/01(水) 22:54:36.69 ID:Oh0xulqx0.net]
>>209
・セルの書式を予め文字列にしておく

Cells(3 + I,1).Value = "'" & Str(f.Name)
・セルに取り込まずに処理する

どれか



211 名前:デフォルトの名無しさん mailto:sage [2020/01/01(水) 23:43:11.75 ID:/3koq0Lq0.net]
>>210
頭に「'」つける案いただきます!
すっかり頭からぬけておりました。
ありがとうございます!

212 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 00:01:52.13 ID:KGMPhTA00.net]
>>209
頭に'付けるとかセルの表示形式を文字にするとか
それVBAじゃなくてExcelの範疇では

213 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 00:13:18.61 ID:4cnj/64c0.net]
VBAはそもそもビジュアルベーシックフォーアプリケーション
エクセル(他office製品)のための言語
Excelの範疇も何もないよ

214 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 00:44:32.37 ID:C9nM6Ix2x.net]
セルにフォルダ名を入れなきゃならない理由が全く分からない

215 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 00:52:53.68 ID:m04meMbs0.net]
PowerQueryにデータの参照元渡すとか

216 名前:デフォルトの名無しさん [2020/01/02(木) 11:28:52.88 ID:yN8yk3jo0.net]
マクロでCSV書き出ししたデータですが
どうも1行ごとに最後のセルの末尾に勝手に改行コードが入っているようです
これはなんとかならないでしょうか

その改行コードもCRLFで言うところのCRだけのようで、見かけ上全くわかりません

aaa,ddd,ccc

とあったら、cccの末尾に見えないCFが張り付いている感じです
urlエンコードで見ると ccc%0D みたいな感じです
どうしたら綺麗に書き出せますか?

217 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 12:02:15.68 ID:33UW29zWd.net]
>>216
改行コードをなくした場合、行の区切りはどうするの?
完全に思い通りにしたい時はテキストファイルの生成を自力でやるしかない

218 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 12:48:11.80 ID:/IgTqK/90.net]
セル内で改行しても平気か確認した方がいい

219 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 12:53:49.13 ID:KGMPhTA00.net]
>>216
ExcelではLFがセル内改行、CRLFが次の行
CRは意味を持たないので入ってても改行されない
消したければ普通にその文字を消せばいい

220 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 12:58:08.65 ID:KGMPhTA00.net]
あと勝手に入ってるのではなく元々のテキストファイルに入ってるんだろう



221 名前:デフォルトの名無しさん [2020/01/02(木) 15:17:06.96 ID:yN8yk3jo0.net]
216です

>>217
csvの中のデータとして配列に入っています。書き出したcsvは普通に数行のカンマ区切りです。
それをjavascriptで配列へ取り込みしたときに、
二次元配列データの一行の最後のデータの末尾に毎行追加されている感じです。

配列内
aaa,ddd,ccc%0D
aaa,ddd,ccc%0D
aaa,ddd,ccc%0D

csvとしての改行・配列構成は崩れていません。
ちなみに書き出しは
ActiveWorkbook.SaveAs Filename:=csvName, FileFormat:=xlCSV
です。win7時代に作ったマクロをwin10で使っていますが、それもあるんでしょうか…

>>219
EXCELの改行仕様は知りませんでした。ありがとうございます。
末尾に列を1つ増やしたら取りたいデータにはつかなくなったので
(おそらく、増やした列に%0Dが移動したのかとw)、
若干気持ち悪いですが、趣味プログラムなので運用で対応します。


みなさんありがとうございました。

222 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 16:37:15.04 ID:yYKIO5swM.net]
北海道のグラサンスーパーハゲザーはここにはこないのー?

223 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 17:52:03.38 ID:YgEQc8yF0.net]
>>216
Excelのsheetに読み込んでから、CRLF等を""に置換する
ではダメ?

224 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 21:25:07.68 ID:ShHqIFTQ0.net]
一般論として例えば、Ruby のCSV の規格にも、
行区切り文字・列区切り文字・クォート文字などがある

特に設定しないデフォルトでは、それらは、
改行コード・カンマ・ダブルクォーテーションになる

もし、それらが無ければ、CSVの要件を満たさないw
つまり、CSVの規格ではありませんw

225 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 23:23:58.57 ID:1vLrUBFwa.net]
ルビカスが何を言おうと、世の中ではExcelが出力するCSVが標準のCSVだ

226 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 10:32:03.45 ID:R/lajPDg0.net]
CSVは自前でテキストファイル読み込み+自前で区切り扱いが基本。
区切りが何であろうと、データの形式が何であろうと全て自分でコントロール出来るし速度も速い。

227 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 12:29:48.12 ID:V2sewd5k0.net]
同意。てか、Excel標準のCSV読み込み仕様もうちょっとなんとかなりませんかね・・・?

それはさておき>>216>>221(もう見てないかもだけど)
その「CSVファイルを配列に取り込むJavaScript」のコードに問題があるんじゃないかなと。
具体的には\n(%0A)でSplitしてるから\rが残ってるだけだと思うけどな。

228 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 18:33:14.85 ID:LoHkYQxe0.net]
使い続ける以上CSVとの戦いは続くのだ

229 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 18:50:10.73 ID:k7eftYc7x.net]
モダンExcelが一般化してきた今ならクエリでCSVの開き方を指定して読み込むのがいいんじゃないの
CSVをエクセルで直接開くといろいろ勝手なことをしてくれるので

230 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 19:06:41.78 ID:esau8hBed.net]
PowerQueryのコードを書くのはVBA以上にハードルが高いぞ



231 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 19:55:22.39 ID:3Uhjf7eSM.net]
PowerQueryコード書かなきゃいけないの?
GUIでできる範囲だと不十分なの?

232 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 19:58:54.81 ID:k7eftYc7x.net]
そんなにハードル高いか?
テキストファイルの読み込みの処理をスクラッチするより明らかに楽だし処理速度も速いと思うが
例えば4列のCSVをSJIS(Windows-J31)でデコードしてカンマ区切りで読み込んでSheet1のA1セルから書き出すとしたらこんな感じ

Sub ReadCSV()
  With Worksheets("Sheet1")
  With .QueryTables.Add(Connection:="TEXT;ソースファイルのパス", Destination:=.Range("A1"))
    .TextFilePlatform = 932
    .TextFileCommaDelimiter = True
    .RefreshStyle = xlOverwriteCells
    .TextFileColumnDataTypes = Array(xlTextFormat, xlTextFormat, xlTextFormat, xlTextFormat)
    .Refresh
    .Delete
  End With
  End With
End Sub

233 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 20:07:37.72 ID:k7eftYc7x.net]
PowerQueryだったらもっと簡単だろう
Csv.Documentにソースのパスとメタ情報を渡してテーブルを取得するだけだしGUIでステップ記録できる

234 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 20:56:20.20 ID:LoHkYQxe0.net]
CSV読み込みの話してんのになんで書き込みの回答してんだろうこの子

235 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 21:32:33.80 ID:k7eftYc7x.net]
>>234
>>232のコードについて言ってるなら、読み込んでシートに書き出してるわけで、クエリの使い方としてはオーソドックス処理だぞ
読み込んだ結果をシートに書き出さないならODCにデータモデルとして保存すれば良い

236 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 22:10:30.43 ID:k7eftYc7x.net]
>>235
ODCにデータモデルとして→×
データモデルとして→○

237 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 22:23:49.87 ID:X7hap7HH0.net]
>>230
全然。

基本的にはリボンの機能使った操作が1つずつのステップになっていく。
ステップの1つ1つがマクロみたいなもの。
「詳細クエリー」を見て初めて「コードはこうなってるんだ・・・」
という感じ。

もっとも、M Functionのレファレンスやパラメータあたり説明が
英語でもまだ不親切なので、
使えてない部分が多分にはあるけど。
ただ、VBAのように出来る範囲が広範囲なわけではなく、
取得したデータの成形に特化してる。

スクレイピングについては
Pythonみたいに取得対象のWeb画面で
IDやパスワード入力するとか、
ボタンを押すみたいなことも出来ない模様。

238 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 22:43:05.12 ID:3zmXV6NNx.net]
データの成形に特化と言ってもVBAでスクラッチすると恐ろしく面倒なJoinとかのSQLチックな処理は全て実行できるので、データ処理の面ではVBAより手軽で便利

あとAccessDBやSQL ServerやOBDCはもちろん、ファイルシステムとかExchangeサーバとかSharePointリストとか、およそデータベースとして扱えるデータストアの情報は全て取得できる

フォルダ内のファイルの属性情報を取得する処理のためだけにいちいちFileSystemObjectのインスタンスとかを使ってスクラッチする必要がなくなると考えればめちゃくちゃ便利

239 名前:デフォルトの名無しさん [2020/01/04(土) 15:59:54.32 ID:dDunGyfu0.net]
>>227
みています
ご指摘の通り、\nでspritかけてました!
\nってCR+LFじゃなかったんですね…

この後都合があるのですぐには試せませんが、
その辺確認してみます。
ありがとうございます!

240 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 16:12:12.74 ID:8fEwlZFG0.net]
\nはLFじゃなかったか
windowsの改行は\r\nだったような



241 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 17:52:00.86 ID:ALZ03HNg0.net]
EditBoxでは\r\nでRichEditBoxでは\nだねWindows

242 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 17:56:48.54 ID:+4weKQQc0.net]
CR+LFの定数の vbCrLf か vbNewLine でいいんじゃね

243 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 18:04:55.94 ID:8fEwlZFG0.net]
vbNewLineいいよね

244 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 18:23:56.78 ID:ZrFrOERU0.net]
>>239
やっぱり。
>>240-241の人もいうとおり、OSだけじゃなくAPI関数ごとに改行コードの取扱いが違ったりすることもあるし、
テキストエディタに内蔵されてる正規表現なんかでも「\n」でCRLFに対応させてる例もあったりするから、
その辺はトライ&エラーで覚えていくといいとおもうよ。

245 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 18:40:58.78 ID:HwWXKum00.net]
北海道のグラサンスーパーハゲザーはここにはこないのー?






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<78KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef